<?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>169773</bug_id>
          
          <creation_ts>2017-03-16 11:56:51 -0700</creation_ts>
          <short_desc>WebAssembly: add fallback to use pinned register to load/store state</short_desc>
          <delta_ts>2017-03-28 15:16:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169611</dependson>
          <blocked>168264</blocked>
    
    <blocked>170135</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288647</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 11:56:51 -0700</bug_when>
    <thetext>In Linux, we do not have any system reserved TLS slots.
Instead, we should store the Wasm state in pinned register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288678</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-16 12:47:24 -0700</bug_when>
    <thetext>Doc https://trac.webkit.org/changeset/207004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288692</commentid>
    <comment_count>2</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-16 13:09:08 -0700</bug_when>
    <thetext>For now, platforms without fast TLS can&apos;t be PIC and won&apos;t be able to do structured cloning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289037</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-17 10:10:56 -0700</bug_when>
    <thetext>Clarifying my previous comment: if we don&apos;t address this bug then we can&apos;t structured clone. Using a pinned register would enable structured cloning.

No rush since the MacOS build doesn&apos;t have structure cloning either, blocked on bug #168264 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289052</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-17 10:56:07 -0700</bug_when>
    <thetext>*** Bug 169815 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289053</commentid>
    <comment_count>5</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-17 10:56:39 -0700</bug_when>
    <thetext>As mentioned in bug #169815 we probably want to do this unconditionally for ARM64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291233</commentid>
    <comment_count>6</comment_count>
      <attachid>305388</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 11:30:35 -0700</bug_when>
    <thetext>Created attachment 305388
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291234</commentid>
    <comment_count>7</comment_count>
      <attachid>305388</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 11:34:29 -0700</bug_when>
    <thetext>Comment on attachment 305388
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1203
&gt; +    GPRReg topJSWebAssemblyInstancePointer = pinnedRegs.topJSWebAssemblyInstancePointer;
&gt; +    jit.loadPtr(CCallHelpers::Address(GPRInfo::callFrameRegister, CallFrameSlot::callee * static_cast&lt;int&gt;(sizeof(Register))), topJSWebAssemblyInstancePointer);
&gt; +    jit.andPtr(CCallHelpers::TrustedImmPtr(MarkedBlock::blockMask), topJSWebAssemblyInstancePointer);
&gt; +    jit.loadPtr(CCallHelpers::Address(topJSWebAssemblyInstancePointer, MarkedBlock::offsetOfVM()), topJSWebAssemblyInstancePointer);
&gt; +    jit.loadPtr(CCallHelpers::Address(topJSWebAssemblyInstancePointer, VM::wasmContextOffset()), topJSWebAssemblyInstancePointer);

NOTE: Should load instance from callee.
And we should remove loadWasmContext / storeWasmContext from non jit code. Instead, we should pass it to the C argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291246</commentid>
    <comment_count>8</comment_count>
      <attachid>305394</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 13:01:24 -0700</bug_when>
    <thetext>Created attachment 305394
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291249</commentid>
    <comment_count>9</comment_count>
      <attachid>305395</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 13:15:23 -0700</bug_when>
    <thetext>Created attachment 305395
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291330</commentid>
    <comment_count>10</comment_count>
      <attachid>305424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 09:07:17 -0700</bug_when>
    <thetext>Created attachment 305424
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291341</commentid>
    <comment_count>11</comment_count>
      <attachid>305426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 10:50:13 -0700</bug_when>
    <thetext>Created attachment 305426
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291342</commentid>
    <comment_count>12</comment_count>
      <attachid>305427</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 10:58:41 -0700</bug_when>
    <thetext>Created attachment 305427
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291347</commentid>
    <comment_count>13</comment_count>
      <attachid>305429</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 11:54:28 -0700</bug_when>
    <thetext>Created attachment 305429
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291348</commentid>
    <comment_count>14</comment_count>
      <attachid>305430</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 12:07:27 -0700</bug_when>
    <thetext>Created attachment 305430
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291351</commentid>
    <comment_count>15</comment_count>
      <attachid>305432</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 12:30:51 -0700</bug_when>
    <thetext>Created attachment 305432
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291360</commentid>
    <comment_count>16</comment_count>
      <attachid>305432</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-03-26 13:48:11 -0700</bug_when>
    <thetext>Comment on attachment 305432
Patch

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

LGTM so far!

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:782
&gt; +    move(Wasm::PinnedRegisterInfo::get().topJSWebAssemblyInstancePointer, dst);

I think that we should stop using the &quot;topBlahBlahPointer&quot; terminology.  &quot;Context&quot; is the usual VM term for this.  That&apos;s why OSes say &quot;context switch&quot; rather than &quot;top process switch&quot;.  And OSes also have stacks of context, because interrupts.  So, lets call this wasmContext rather than topJSWebAssemblyInstancePointer.

Also, thank you for moving this out into the .cpp file!  We should do more of that.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:793
&gt; +    move(src, Wasm::PinnedRegisterInfo::get().topJSWebAssemblyInstancePointer);

Ditto.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:583
&gt; +    // The WebAssembly -&gt; JS stub sets it caller frame&apos;s callee to a WebAssemblyToJSCallee instance.
&gt; +    return callee-&gt;inherits(vm, WebAssemblyToJSCallee::info());

Do we have enough bits in JSType to just give this a type?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:229
&gt; +    GPRReg m_topJSWebAssemblyInstancePointer;

wasmContext!

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:248
&gt; -    return block-&gt;appendNew&lt;Value&gt;(proc, Identity, Origin(), patchpoint);
&gt; +    return block-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), PinnedRegisterInfo::get().topJSWebAssemblyInstancePointer);

It&apos;s interesting that ArgumentRegValue works for this.  I guess it ought to just work if the Procedure never has anything that clobbers this register.  It&apos;s correct because in the context of a Procedure, we can assume that this register is simply immutable.  ArgumentRegValue is a valid way to read immutable pinned registers.

Is this property documented anywhere?  If not, can you document it, maybe even in the Websites/webkit.org/docs/b3 documentation?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1200
&gt; +    GPRReg topJSWebAssemblyInstancePointer = pinnedRegs.topJSWebAssemblyInstancePointer;

wasmContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291363</commentid>
    <comment_count>17</comment_count>
      <attachid>305432</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-26 14:36:23 -0700</bug_when>
    <thetext>Comment on attachment 305432
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:782
&gt;&gt; +    move(Wasm::PinnedRegisterInfo::get().topJSWebAssemblyInstancePointer, dst);
&gt; 
&gt; I think that we should stop using the &quot;topBlahBlahPointer&quot; terminology.  &quot;Context&quot; is the usual VM term for this.  That&apos;s why OSes say &quot;context switch&quot; rather than &quot;top process switch&quot;.  And OSes also have stacks of context, because interrupts.  So, lets call this wasmContext rather than topJSWebAssemblyInstancePointer.
&gt; 
&gt; Also, thank you for moving this out into the .cpp file!  We should do more of that.

Yeah, I&apos;ll rename it to WasmContext :)

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:793
&gt;&gt; +    move(src, Wasm::PinnedRegisterInfo::get().topJSWebAssemblyInstancePointer);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/JavaScriptCore/jit/Repatch.cpp:583
&gt;&gt; +    return callee-&gt;inherits(vm, WebAssemblyToJSCallee::info());
&gt; 
&gt; Do we have enough bits in JSType to just give this a type?

I think we still have enough space! I&apos;ll assign a special JSType to accelerate this check :)

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:229
&gt;&gt; +    GPRReg m_topJSWebAssemblyInstancePointer;
&gt; 
&gt; wasmContext!

Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:248
&gt;&gt; +    return block-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), PinnedRegisterInfo::get().topJSWebAssemblyInstancePointer);
&gt; 
&gt; It&apos;s interesting that ArgumentRegValue works for this.  I guess it ought to just work if the Procedure never has anything that clobbers this register.  It&apos;s correct because in the context of a Procedure, we can assume that this register is simply immutable.  ArgumentRegValue is a valid way to read immutable pinned registers.
&gt; 
&gt; Is this property documented anywhere?  If not, can you document it, maybe even in the Websites/webkit.org/docs/b3 documentation?

As usual, it is documented in the code comment :P (in B3Effects.h).
Yeah, we should document it, I&apos;ll add some descriptions about immutable pinned register &amp; ArgumentReg.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1200
&gt;&gt; +    GPRReg topJSWebAssemblyInstancePointer = pinnedRegs.topJSWebAssemblyInstancePointer;
&gt; 
&gt; wasmContext

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291423</commentid>
    <comment_count>18</comment_count>
      <attachid>305453</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 01:05:52 -0700</bug_when>
    <thetext>Created attachment 305453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291430</commentid>
    <comment_count>19</comment_count>
      <attachid>305456</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 01:40:25 -0700</bug_when>
    <thetext>Created attachment 305456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291443</commentid>
    <comment_count>20</comment_count>
      <attachid>305460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 03:36:23 -0700</bug_when>
    <thetext>Created attachment 305460
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291482</commentid>
    <comment_count>21</comment_count>
      <attachid>305460</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-27 09:12:18 -0700</bug_when>
    <thetext>Comment on attachment 305460
Patch

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

lgtm, thanks!

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:302
&gt; +    static ptrdiff_t offsetOfVM()

constexpr variable instead.

&gt; Source/JavaScriptCore/runtime/VM.h:492
&gt; +    static ptrdiff_t wasmContextOffset()

constexpr variable.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:234
&gt;  static Value* loadWasmContext(Procedure&amp; proc, BasicBlock* block)

Should we rename this and below from &quot;load&quot; and &quot;store&quot; since it can just get a pinned registers? Maybe &quot;materialize&quot; and &quot;preserve&quot; or something? Not a fan of preserve...

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:253
&gt; +    // We use pinned callee save register for this purpose. Thus, we do not need to restore the instane register on the caller side.

&quot;instane&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291534</commentid>
    <comment_count>22</comment_count>
      <attachid>305488</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 11:15:38 -0700</bug_when>
    <thetext>Created attachment 305488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291535</commentid>
    <comment_count>23</comment_count>
      <attachid>305460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 11:18:44 -0700</bug_when>
    <thetext>Comment on attachment 305460
Patch

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

Thanks! Updated.

&gt;&gt; Source/JavaScriptCore/heap/MarkedBlock.h:302
&gt;&gt; +    static ptrdiff_t offsetOfVM()
&gt; 
&gt; constexpr variable instead.

Unfortunately, we cannot use it here because OBJECT_OFFSETOF is implemented for non-POD things and it uses reinterpret_cast.

&gt;&gt; Source/JavaScriptCore/runtime/VM.h:492
&gt;&gt; +    static ptrdiff_t wasmContextOffset()
&gt; 
&gt; constexpr variable.

Ditto.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:234
&gt;&gt;  static Value* loadWasmContext(Procedure&amp; proc, BasicBlock* block)
&gt; 
&gt; Should we rename this and below from &quot;load&quot; and &quot;store&quot; since it can just get a pinned registers? Maybe &quot;materialize&quot; and &quot;preserve&quot; or something? Not a fan of preserve...

Materialize sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:253
&gt;&gt; +    // We use pinned callee save register for this purpose. Thus, we do not need to restore the instane register on the caller side.
&gt; 
&gt; &quot;instane&quot;?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291539</commentid>
    <comment_count>24</comment_count>
      <attachid>305489</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 11:39:18 -0700</bug_when>
    <thetext>Created attachment 305489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291546</commentid>
    <comment_count>25</comment_count>
      <attachid>305491</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-27 12:00:56 -0700</bug_when>
    <thetext>Created attachment 305491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291606</commentid>
    <comment_count>26</comment_count>
      <attachid>305491</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-27 13:56:51 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

r- because we&apos;re moving to a PIC architecture. We should ensure that this patch doesn&apos;t add more things that need to be changed as we move Wasm runtime above VM. See comments below.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1235
&gt; +    // FIXME: JSWebAssemblyCallee should have a pointer to JSWebAssemblyInstance instead.
&gt; +    GPRReg wasmContext = pinnedRegs.wasmContextPointer;
&gt; +    if (!useFastTLS()) {
&gt; +        jit.loadPtr(CCallHelpers::Address(GPRInfo::callFrameRegister, CallFrameSlot::callee * static_cast&lt;int&gt;(sizeof(Register))), wasmContext);
&gt; +        jit.andPtr(CCallHelpers::TrustedImmPtr(MarkedBlock::blockMask), wasmContext);
&gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, MarkedBlock::offsetOfVM()), wasmContext);
&gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, VM::wasmContextOffset()), wasmContext);
&gt; +    }

This is going to make it harder to do PIC. We need a way to get the context outside the VM. Maybe the first argument to every JS wrapper can be a VM*? Or maybe there is another solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291607</commentid>
    <comment_count>27</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-27 13:57:45 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #26)
&gt; Comment on attachment 305491 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305491&amp;action=review
&gt; 
&gt; r- because we&apos;re moving to a PIC architecture. We should ensure that this
&gt; patch doesn&apos;t add more things that need to be changed as we move Wasm
&gt; runtime above VM. See comments below.
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1235
&gt; &gt; +    // FIXME: JSWebAssemblyCallee should have a pointer to JSWebAssemblyInstance instead.
&gt; &gt; +    GPRReg wasmContext = pinnedRegs.wasmContextPointer;
&gt; &gt; +    if (!useFastTLS()) {
&gt; &gt; +        jit.loadPtr(CCallHelpers::Address(GPRInfo::callFrameRegister, CallFrameSlot::callee * static_cast&lt;int&gt;(sizeof(Register))), wasmContext);
&gt; &gt; +        jit.andPtr(CCallHelpers::TrustedImmPtr(MarkedBlock::blockMask), wasmContext);
&gt; &gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, MarkedBlock::offsetOfVM()), wasmContext);
&gt; &gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, VM::wasmContextOffset()), wasmContext);
&gt; &gt; +    }
&gt; 
&gt; This is going to make it harder to do PIC. We need a way to get the context
&gt; outside the VM. Maybe the first argument to every JS wrapper can be a VM*?
&gt; Or maybe there is another solution
(Obviously we would only do this when we&apos;re not using fast TLS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291822</commentid>
    <comment_count>28</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 00:03:14 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #26)
&gt; Comment on attachment 305491 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305491&amp;action=review
&gt; 
&gt; r- because we&apos;re moving to a PIC architecture. We should ensure that this
&gt; patch doesn&apos;t add more things that need to be changed as we move Wasm
&gt; runtime above VM. See comments below.
&gt; 
&gt; &gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1235
&gt; &gt; +    // FIXME: JSWebAssemblyCallee should have a pointer to JSWebAssemblyInstance instead.
&gt; &gt; +    GPRReg wasmContext = pinnedRegs.wasmContextPointer;
&gt; &gt; +    if (!useFastTLS()) {
&gt; &gt; +        jit.loadPtr(CCallHelpers::Address(GPRInfo::callFrameRegister, CallFrameSlot::callee * static_cast&lt;int&gt;(sizeof(Register))), wasmContext);
&gt; &gt; +        jit.andPtr(CCallHelpers::TrustedImmPtr(MarkedBlock::blockMask), wasmContext);
&gt; &gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, MarkedBlock::offsetOfVM()), wasmContext);
&gt; &gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, VM::wasmContextOffset()), wasmContext);
&gt; &gt; +    }
&gt; 
&gt; This is going to make it harder to do PIC. We need a way to get the context
&gt; outside the VM. Maybe the first argument to every JS wrapper can be a VM*?
&gt; Or maybe there is another solution

Actually, this patch is good. It&apos;s definitely moving us in the right direction. Will review in a second. I didn&apos;t comprehend exactly what was going on the first time I read though it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291824</commentid>
    <comment_count>29</comment_count>
      <attachid>305491</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 00:26:19 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

Mostly LGTM, but I have some comments and questions.

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:352
&gt; +inline bool isWebAssemblyToJSCallee(const JSCell* cell)
&gt; +{
&gt; +    return cell-&gt;type() == WebAssemblyToJSCalleeType;
&gt; +}

Is this hot enough that it needs its own type? Why not just use inherits?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:246
&gt; +            [&amp;] (CCallHelpers&amp; jit, const StackmapGenerationParams&amp; params) {

This needs to be an [=] lambda. I saw today that somebody committed a [&amp;] lambda as the patchpoint&apos;s generator. That&apos;s obviously wrong. Feel free to fix it if you want. If not, I will fix it in my patch.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:250
&gt; +        return block-&gt;appendNew&lt;Value&gt;(proc, Identity, Origin(), patchpoint);

Why not just return patchpoint? Why return Identity(Patchpoint)?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:254
&gt; +    // FIXME: Because WasmToWasm call clobbers wasmContext register and does not restore it, we need to restore it in the caller side.
&gt; +    // This prevents us from using ArgumentReg to this (logically) immutable pinned register.

Why? I thought the semantics of ArgumentReg is that it&apos;s idempotent.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:259
&gt; +    patchpoint-&gt;setGenerator([&amp;] (CCallHelpers&amp;, const StackmapGenerationParams&amp;) { });

ditto on lambda, just for style.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:269
&gt; +        patchpoint-&gt;append(ConstrainedValue(arg, ValueRep::SomeRegister));

Why?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:928
&gt; +                patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave());

Why is this being clobbered? These are callee saves, right?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:944
&gt; +                patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave());

Ditto.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:973
&gt; +                // Do not clobber pinned registers.

Style nit: I don&apos;t think this comment is helpful

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1053
&gt; +            patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave());

ditto about why

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1234
&gt; +    GPRReg wasmContext = pinnedRegs.wasmContextPointer;
&gt; +    if (!useFastTLS()) {
&gt; +        jit.loadPtr(CCallHelpers::Address(GPRInfo::callFrameRegister, CallFrameSlot::callee * static_cast&lt;int&gt;(sizeof(Register))), wasmContext);
&gt; +        jit.andPtr(CCallHelpers::TrustedImmPtr(MarkedBlock::blockMask), wasmContext);
&gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, MarkedBlock::offsetOfVM()), wasmContext);
&gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, VM::wasmContextOffset()), wasmContext);

My comment on this code still holds. If we&apos;re not using fast TLS, it seems like we should have another way of getting the VM. I want to lift Callee above the VM, so perhaps we should pass VM* as a parameter when calling vmEntryToWasm and we&apos;re not using fast TLS.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:104
&gt; +    visitor.append(thisObject-&gt;m_callee);

Why did you move this off VM?

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:144
&gt; +    // FIXME: We would like to make loadWasmContext and storeWasmContext no-op if we use pinned registers.
&gt; +    // However, we use VM.wasmContext field to pass instance to wasm function&apos;s JS glue code.
&gt; +    // Once we start using usual WebAssemblyFunction as callee, we can retrieve instance from that.

We don&apos;t want the callee to point to the instance. This won&apos;t work if we lift Callee above the VM. This also doesn&apos;t work today, since a module may have many instances.
I think ultimately, we just don&apos;t want to rely on loadWasmContext and storeWasmContext when not using fast TLS. We should basically never have to emit those instructions,
unless we&apos;re truly doing a context switch.

&gt; Websites/webkit.org/docs/b3/intermediate-representation.html:241
&gt; +        ArgumentRegValue class. It can be used to read a pinned register which is not clobbered
&gt; +        inside the procedure.&lt;/dd&gt;

I don&apos;t think this needs any explanation w.r.t pinned registers. I&apos;m pretty sure the semantics of ArgumentReg() is that it&apos;s idempotent within the execution of a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291890</commentid>
    <comment_count>30</comment_count>
      <attachid>305491</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 07:19:23 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

Thanks

&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:352
&gt;&gt; +}
&gt; 
&gt; Is this hot enough that it needs its own type? Why not just use inherits?

It is called in linkFor operation. I think it should be fast.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:246
&gt;&gt; +            [&amp;] (CCallHelpers&amp; jit, const StackmapGenerationParams&amp; params) {
&gt; 
&gt; This needs to be an [=] lambda. I saw today that somebody committed a [&amp;] lambda as the patchpoint&apos;s generator. That&apos;s obviously wrong. Feel free to fix it if you want. If not, I will fix it in my patch.

Oops, I&apos;ll fix it.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:250
&gt;&gt; +        return block-&gt;appendNew&lt;Value&gt;(proc, Identity, Origin(), patchpoint);
&gt; 
&gt; Why not just return patchpoint? Why return Identity(Patchpoint)?

It is just the original code. Dropped.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:254
&gt;&gt; +    // This prevents us from using ArgumentReg to this (logically) immutable pinned register.
&gt; 
&gt; Why? I thought the semantics of ArgumentReg is that it&apos;s idempotent.

Since WasmToWasm (different instance) call will clobber these registers and does not restore.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:259
&gt;&gt; +    patchpoint-&gt;setGenerator([&amp;] (CCallHelpers&amp;, const StackmapGenerationParams&amp;) { });
&gt; 
&gt; ditto on lambda, just for style.

Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:269
&gt;&gt; +        patchpoint-&gt;append(ConstrainedValue(arg, ValueRep::SomeRegister));
&gt; 
&gt; Why?

Since the following code generator assumes that wasm context is in a register. And store it to the fast TLS slot since wasm to wasm call clobbers it.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:928
&gt;&gt; +                patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave());
&gt; 
&gt; Why is this being clobbered? These are callee saves, right?

Right. They are callee saves. But, wasm to wasm function calls clobber them and do not restore these registers.
That&apos;s why we call restoreWebAssemblyGlobalState() currently.
Changing this calling convention requires reasonable change. So, in this patch, we just use the current calling convension. And we annotate the clobber rules precisely.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:944
&gt;&gt; +                patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave());
&gt; 
&gt; Ditto.

The same reason. Current wasm to wasm function call clobbers them. This annotation precisely models the current calling convension.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:973
&gt;&gt; +                // Do not clobber pinned registers.
&gt; 
&gt; Style nit: I don&apos;t think this comment is helpful

OK, dropped.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1053
&gt;&gt; +            patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave());
&gt; 
&gt; ditto about why

The same reason. Wasm to wasm function actually clobbers right now.

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:1234
&gt;&gt; +        jit.loadPtr(CCallHelpers::Address(wasmContext, VM::wasmContextOffset()), wasmContext);
&gt; 
&gt; My comment on this code still holds. If we&apos;re not using fast TLS, it seems like we should have another way of getting the VM. I want to lift Callee above the VM, so perhaps we should pass VM* as a parameter when calling vmEntryToWasm and we&apos;re not using fast TLS.

I think passing JSWebAssemblyInstance (wasm context) directly is simpler.

It changes the current vmEntryToWasm signature, and we need to decouple it from vmEntryToJS thing.
I think this should be done in a separate patch. This patch is now focusing on removing direct VM address use in the code.
At that time, we should reconsider the current wasm to wasm calling convention too.

&gt;&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp:104
&gt;&gt; +    visitor.append(thisObject-&gt;m_callee);
&gt; 
&gt; Why did you move this off VM?

Now, callee is per JSWebassemblyInstance. And it has a pointer to the instance.
And this is used in linkFor function to get appropriate module.
So, anyway, we need to decouple this callee one from VM.

Maybe, this callee should point module instead of instance. I&apos;ll change this part.

&gt;&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:144
&gt;&gt; +    // Once we start using usual WebAssemblyFunction as callee, we can retrieve instance from that.
&gt; 
&gt; We don&apos;t want the callee to point to the instance. This won&apos;t work if we lift Callee above the VM. This also doesn&apos;t work today, since a module may have many instances.
&gt; I think ultimately, we just don&apos;t want to rely on loadWasmContext and storeWasmContext when not using fast TLS. We should basically never have to emit those instructions,
&gt; unless we&apos;re truly doing a context switch.

Yup, right. I think we should pass this instance directly to vmEntryToWasm.
Why I use this approach is now we still using vmEntryToJS.

But I think it should be done in a separate patch as described. This patch is now focusing on removing direct reference to VM in the code.

When this change is done, we can make loadWasmContext and storeWasmContext no-op in the environment not using fast TLS.

&gt;&gt; Websites/webkit.org/docs/b3/intermediate-representation.html:241
&gt;&gt; +        inside the procedure.&lt;/dd&gt;
&gt; 
&gt; I don&apos;t think this needs any explanation w.r.t pinned registers. I&apos;m pretty sure the semantics of ArgumentReg() is that it&apos;s idempotent within the execution of a function.

OK, dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291943</commentid>
    <comment_count>31</comment_count>
      <attachid>305491</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 10:49:43 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:352
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Is this hot enough that it needs its own type? Why not just use inherits?
&gt; 
&gt; It is called in linkFor operation. I think it should be fast.

I think it&apos;d be cleaner if we did something like this: we should have a JS and Wasm call IC linking function. They can both call into a common function that does most of the shared work.
We have two versions of the wasm function, one if we&apos;re using fast TLS, and one if we&apos;re not. (Or we can just use the same one in both cases and pass in the context unconditionally, that&apos;s probably better).
The wasm link thunk will expect the context in a particular register. That way, when it calls out to C code, it can pass it to the C call.

I&apos;m also happy to make this change in a follow up if we need to when I change callee to be above VM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291946</commentid>
    <comment_count>32</comment_count>
      <attachid>305604</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 10:55:08 -0700</bug_when>
    <thetext>Created attachment 305604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291947</commentid>
    <comment_count>33</comment_count>
      <attachid>305491</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 10:55:57 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:352
&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this hot enough that it needs its own type? Why not just use inherits?
&gt;&gt; 
&gt;&gt; It is called in linkFor operation. I think it should be fast.
&gt; 
&gt; I think it&apos;d be cleaner if we did something like this: we should have a JS and Wasm call IC linking function. They can both call into a common function that does most of the shared work.
&gt; We have two versions of the wasm function, one if we&apos;re using fast TLS, and one if we&apos;re not. (Or we can just use the same one in both cases and pass in the context unconditionally, that&apos;s probably better).
&gt; The wasm link thunk will expect the context in a particular register. That way, when it calls out to C code, it can pass it to the C call.
&gt; 
&gt; I&apos;m also happy to make this change in a follow up if we need to when I change callee to be above VM.

It&apos;s probably best to do this in a follow up.

I&apos;ll do this after your patch lands:
https://bugs.webkit.org/show_bug.cgi?id=170185

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:254
&gt;&gt;&gt; +    // This prevents us from using ArgumentReg to this (logically) immutable pinned register.
&gt;&gt; 
&gt;&gt; Why? I thought the semantics of ArgumentReg is that it&apos;s idempotent.
&gt; 
&gt; Since WasmToWasm (different instance) call will clobber these registers and does not restore.

I&apos;m still confused why ArgumentReg won&apos;t work here. I thought the semantics of ArgumentReg were that it&apos;s idempotent.

&gt;&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:269
&gt;&gt;&gt; +        patchpoint-&gt;append(ConstrainedValue(arg, ValueRep::SomeRegister));
&gt;&gt; 
&gt;&gt; Why?
&gt; 
&gt; Since the following code generator assumes that wasm context is in a register. And store it to the fast TLS slot since wasm to wasm call clobbers it.

Oops, I misread this code. Ignore my comment.

&gt; Source/JavaScriptCore/wasm/WasmContext.h:-38
&gt; -namespace JSC {
&gt; -
&gt; -class JSWebAssemblyInstance;
&gt; -class VM;
&gt; -
&gt; -JSWebAssemblyInstance* loadWasmContext(VM&amp;);
&gt; -void storeWasmContext(VM&amp;, JSWebAssemblyInstance*);
&gt; -
&gt; -} // namespace JSC

Lets keep something called WasmContext. Maybe we can just typedef it to be an instance for now.
And then we could have functions on the context that get us the state we need. If we keep something
called WasmContext, we keep our options open for easily changing it to be something else in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291948</commentid>
    <comment_count>34</comment_count>
      <attachid>305491</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 10:57:46 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:352
&gt;&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Is this hot enough that it needs its own type? Why not just use inherits?
&gt;&gt;&gt; 
&gt;&gt;&gt; It is called in linkFor operation. I think it should be fast.
&gt;&gt; 
&gt;&gt; I think it&apos;d be cleaner if we did something like this: we should have a JS and Wasm call IC linking function. They can both call into a common function that does most of the shared work.
&gt;&gt; We have two versions of the wasm function, one if we&apos;re using fast TLS, and one if we&apos;re not. (Or we can just use the same one in both cases and pass in the context unconditionally, that&apos;s probably better).
&gt;&gt; The wasm link thunk will expect the context in a particular register. That way, when it calls out to C code, it can pass it to the C call.
&gt;&gt; 
&gt;&gt; I&apos;m also happy to make this change in a follow up if we need to when I change callee to be above VM.
&gt; 
&gt; It&apos;s probably best to do this in a follow up.
&gt; 
&gt; I&apos;ll do this after your patch lands:
&gt; https://bugs.webkit.org/show_bug.cgi?id=170185

I&apos;ve just updated the patch, and read this comment right now. Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291949</commentid>
    <comment_count>35</comment_count>
      <attachid>305491</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 10:59:03 -0700</bug_when>
    <thetext>Comment on attachment 305491
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmContext.h:-38
&gt;&gt; -} // namespace JSC
&gt; 
&gt; Lets keep something called WasmContext. Maybe we can just typedef it to be an instance for now.
&gt; And then we could have functions on the context that get us the state we need. If we keep something
&gt; called WasmContext, we keep our options open for easily changing it to be something else in the future.

OK, I&apos;ll revert this dropping part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291957</commentid>
    <comment_count>36</comment_count>
      <attachid>305607</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 11:09:37 -0700</bug_when>
    <thetext>Created attachment 305607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291963</commentid>
    <comment_count>37</comment_count>
      <attachid>305607</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 11:13:53 -0700</bug_when>
    <thetext>Comment on attachment 305607
Patch

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

Patch LGTM, just one suggestion

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:241
&gt; +    if (useFastTLS()) {

Can we not tie the context being pinned vs being in TLS just to &quot;useFastTLS&quot;. Can we maybe have this tied to something like:
&quot;useFastTLSForContext&quot;, that way, we can change context independent of other things in the future. For example, we might want
to pin context on arm64, but not x86 even if FAST_TLS is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291980</commentid>
    <comment_count>38</comment_count>
      <attachid>305607</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 11:29:11 -0700</bug_when>
    <thetext>Comment on attachment 305607
Patch

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

&gt;&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:241
&gt;&gt; +    if (useFastTLS()) {
&gt; 
&gt; Can we not tie the context being pinned vs being in TLS just to &quot;useFastTLS&quot;. Can we maybe have this tied to something like:
&gt; &quot;useFastTLSForContext&quot;, that way, we can change context independent of other things in the future. For example, we might want
&gt; to pin context on arm64, but not x86 even if FAST_TLS is enabled.

Sounds nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291981</commentid>
    <comment_count>39</comment_count>
      <attachid>305616</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 11:29:41 -0700</bug_when>
    <thetext>Created attachment 305616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292105</commentid>
    <comment_count>40</comment_count>
      <attachid>305616</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 14:44:43 -0700</bug_when>
    <thetext>Comment on attachment 305616
Patch

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

r=me

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:812
&gt; +#if ENABLE(WEBASSEMBLY)
&gt; +void AssemblyHelpers::loadWasmContext(GPRReg dst)
&gt; +{
&gt; +#if ENABLE(FAST_TLS_JIT)
&gt; +    if (Options::useWebAssemblyFastTLS()) {
&gt; +        loadFromTLSPtr(fastTLSOffsetForKey(WTF_WASM_CONTEXT_KEY), dst);
&gt; +        return;
&gt; +    }
&gt; +#endif
&gt; +    move(Wasm::PinnedRegisterInfo::get().wasmContextPointer, dst);
&gt; +}
&gt; +
&gt; +void AssemblyHelpers::storeWasmContext(GPRReg src)
&gt; +{
&gt; +#if ENABLE(FAST_TLS_JIT)
&gt; +    if (Options::useWebAssemblyFastTLS()) {
&gt; +        storeToTLSPtr(src, fastTLSOffsetForKey(WTF_WASM_CONTEXT_KEY));
&gt; +        return;
&gt; +    }
&gt; +#endif
&gt; +    move(src, Wasm::PinnedRegisterInfo::get().wasmContextPointer);
&gt; +}
&gt; +
&gt; +bool AssemblyHelpers::loadWasmContextNeedsMacroScratchRegister()
&gt; +{
&gt; +#if ENABLE(FAST_TLS_JIT)
&gt; +    if (Options::useWebAssemblyFastTLS())
&gt; +        return loadFromTLSPtrNeedsMacroScratchRegister();
&gt; +#endif
&gt; +    return false;
&gt; +}
&gt; +
&gt; +bool AssemblyHelpers::storeWasmContextNeedsMacroScratchRegister()
&gt; +{
&gt; +#if ENABLE(FAST_TLS_JIT)
&gt; +    if (Options::useWebAssemblyFastTLS())
&gt; +        return storeToTLSPtrNeedsMacroScratchRegister();
&gt; +#endif
&gt; +    return false;
&gt; +}

These all should all interface with &quot;useFastTLSForContext&quot; instead of how they&apos;re written.

&gt; Source/JavaScriptCore/wasm/WasmMemoryInformation.h:98
&gt; +inline bool useFastTLSForContext()

Style nit: Can we call this &quot;useFastTLSForWasmContext&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292123</commentid>
    <comment_count>41</comment_count>
      <attachid>305616</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 15:13:45 -0700</bug_when>
    <thetext>Comment on attachment 305616
Patch

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

Thanks, I&apos;m going to land it.

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:812
&gt;&gt; +}
&gt; 
&gt; These all should all interface with &quot;useFastTLSForContext&quot; instead of how they&apos;re written.

Ah, right. Fixed.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemoryInformation.h:98
&gt;&gt; +inline bool useFastTLSForContext()
&gt; 
&gt; Style nit: Can we call this &quot;useFastTLSForWasmContext&quot;?

Thanks, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292125</commentid>
    <comment_count>42</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 15:16:10 -0700</bug_when>
    <thetext>Committed r214498: &lt;http://trac.webkit.org/changeset/214498&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305388</attachid>
            <date>2017-03-25 11:30:35 -0700</date>
            <delta_ts>2017-03-25 13:01:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170326033033.patch</filename>
            <type>text/plain</type>
            <size>14959</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDRhMDdmMzJiNDI2MTEwYjBmYWVmMWU4MWMwZjg0Yjc4NjdmZjYwLi5hZjZmOGZkMjgwOWU2Mjll
YTM4YTcyNTYyYjgwNDJmMjNiN2VlMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxNy0wMy0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6d2Fz
bUNvbnRleHRPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL1dh
c21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCk6
CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJ
bmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorCiAyMDE3LTAz
LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBp
bnN0cnVtZW50YXRpb24gaW4gSGVhcDo6cmVzdW1lVGhlUGVyaXBoZXJ5KCkgdG8gaGVscCBkZWJ1
ZyBhbiBpc3N1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4
IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNlMzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVl
NGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwxMSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAg
ICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKwor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpCisgICAgeworICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAt
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5k
ZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRlMjFiNjE4OGY5Yjc1ZC4uZGEwZDEwZTcxMjUw
MjgzNWUyZTQwYjkwYTZjODNiYmFmZDU0ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJbmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRh
YmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4
dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZh
c3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIGRzdCk7Cit9CisKK3ZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExT
KCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RG
X1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAg
IG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZVBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExT
X0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAg
IHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRp
ZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2Fz
bUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAg
ICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5k
aWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAppbmRleCA2YjNhNjMyMmEwZWI0MjE5ZDc0Njk4ODM2MWI0ZmE0OGY0ZWJk
YmI2Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2MzYsNDUgKzE2MzYs
MTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0
Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQotICAg
IHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNP
ZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0
ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21Db250ZXh0LCBkc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKQotICAgIHsK
LSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRMU09m
ZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSkpOwotI2VuZGlmCi0gICAgICAgIC8vIEZJ
WE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBzdG9yZVB0cihzcmMs
ICZtX3ZtLT53YXNtQ29udGV4dCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgbG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAgewotI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkK
LSAgICAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIoKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAgewot
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyTmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICB2b2lkIGxv
YWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KTsKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BS
UmVnIHNyYyk7CisgICAgc3RhdGljIGJvb2wgbG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0
Y2hSZWdpc3RlcigpOworICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01hY3Jv
U2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA5ZDg2YWExOWE5MzNjZWEzOGFiNWYwMjMxODQ0NTljYjYwMTBmM2I3Li4wZmEwY2EwMzNm
NDFiNjM3ODIyYzZlOTZhZjhlMGM2ODk2NGMyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTQ5MCw2ICs0OTAsMTEgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAg
IH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2FzbUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgd2FzbUNvbnRleHQpOworICAgIH0KKwog
ICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7
IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAKICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlv
bigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4
Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjhhMTlkMThmYjY0MTJkNTYwMTJkMWI1ODY4M2QyYWYw
NjY1OGYzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKQEAgLTIyNyw2ICsyMjcsNyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAg
ICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBh
ZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVnIG1fbWVtb3J5QmFz
ZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOworICAgIEdQUlJlZyBtX3RvcEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAgICAgVmFsdWUqIG1femVyb1ZhbHVlc1tudW1UeXBl
c107CiAgICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CkBAIC0y
ODMsNyArMjg0LDkgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKICAgICAvLyBGSVhNRSB3ZSBk
b24ndCByZWFsbHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhlcmUgaWYgdGhlcmUncyBubyBtZW1v
cnkuIEl0IG1ha2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2ltcGxlciBmb3Igbm93LiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjIzCiAgICAgY29uc3QgUGlubmVk
UmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAg
ICBtX21lbW9yeUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOworICAgIG1f
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlCYXNl
R1BSKTsKKyAgICBtX3Byb2MucGluUmVnaXN0ZXIobV90b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQ
b2ludGVyKTsKICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zm
c2V0KTsKICAgICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0u
c2l6ZVJlZ2lzdGVyOwogICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVn
SW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKQEAgLTEwODMsNiArMTA4Niw3IEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBp
bGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgUmVnaXN0ZXJTZXQgdG9TYXZlOwogICAgIGNvbnN0
IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0
KCk7CiAgICAgdG9TYXZlLnNldChwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyKTsKKyAgICB0
b1NhdmUuc2V0KHBpbm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CiAg
ICAgZm9yIChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXJzKQogICAgICAgICB0b1NhdmUuc2V0KHJlZ0luZm8uc2l6ZVJlZ2lzdGVy
KTsKIApAQCAtMTE5MSwxMCArMTE5NSwxNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdy
YXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAg
ICAgICB9CiAgICAgfQogCisgICAgLy8gTG9hZCBWTS4KKyAgICBHUFJSZWcgdG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
UG9pbnRlcjsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsK
KyAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6
YmxvY2tNYXNrKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50
ZXIsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQ
b2ludGVyKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlUG9pbnRlciwgVk06Ondhc21Db250ZXh0T2Zmc2V0KCkpLCB0b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKKwogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAg
ICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsK
LSAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNlTWVtb3J5KTsKLSAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworCisgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVy
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsK
ICAgICAgICAgY29uc3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7
CiAgICAgICAgIEFTU0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAgICAgICAgIEFTU0VSVCgh
c2l6ZVJlZ3NbMF0uc2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdl
IHN0YXJ0IGF0IDAsIGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVs
YXRpdmUgdG8gMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
b250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApp
bmRleCA2NDg0Y2Q0ZjUyNjZhMzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1Li5hN2I4YTJjYjNl
Y2VjYmIzMGNkZmNkNjJjMGY0NDQzMmRlZWEyZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvbnRleHQuY3BwCkBAIC00MCw3ICs0MCw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJiB2bSkKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0VExTKCkpCiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJs
eUluc3RhbmNlKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRf
S0VZKSk7CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0
byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3
NzMKICAgICByZXR1cm4gdm0ud2FzbUNvbnRleHQ7CiB9CiAKQEAgLTUwLDcgKzQ5LDYgQEAgdm9p
ZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5j
ZSkKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCiAgICAgICAgIF9w
dGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9j
YXN0PHZvaWQqPihpbnN0YW5jZSkpOwogI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBz
dGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY5NzczCiAgICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5jcHAKaW5kZXggOGFjMDg2NjI3OGI1MTM5M2I2NjllYTA5YTdiNTQ4ZDZkOWE3NmIxNC4uZGM0
MDMyNTEzM2JhZTc1MGU2NjNjYThhMjE2Njg0OTVlYWFiMWFjMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBAIC00MCwz
NyArNDAsNDYgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5m
b0ZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uoc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZywg
W10gKCkgewogICAgICAgICBWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lz
dGVyczsKLSAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBHUFJSZWcg
YmFzZU1lbW9yeVBvaW50ZXIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBHUFJSZWcgdG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0
ZXIsIGFuZCB3ZSBzaG91bGQgYWxsb3cgZGlmZmVyZW50CiAgICAgICAgIC8vICAgICAgICBXZWJB
c3NlbWJseS5JbnN0YW5jZSB0byBoYXZlIGRpZmZlcmVudCBwaW5zLiBSaWdodCBub3cgd2UgdGFr
ZSBhIHZlY3RvciB3aXRoIG9ubHkgb25lIGVudHJ5LgogICAgICAgICAvLyAgICAgICAgSWYgd2Ug
aGF2ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIsIHdlIGNhbiBoYXZlIG9uZSBmb3IgZWFj
aCBsb2FkIHNpemUgY2xhc3MuCiAgICAgICAgIC8vICAgICAgICBzZWU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAgICAgVmVjdG9yPHVuc2lnbmVk
PiBwaW5uZWRTaXplcyA9IHsgMCB9OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRS
ZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOworICAgICAgICB1bnNpZ25lZCByZW1h
aW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAyOwogICAgICAgICBq
c2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAo
UmVnIHJlZykgewogICAgICAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwogICAgICAgICAg
ICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVn
aXN0ZXJzKCkuZ2V0KHJlZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBpZiAocmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID09IDIpIHsKKyAgICAgICAgICAgICAgICB0
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gZ3ByOworICAgICAgICAgICAgICAgIHJl
bWFpbmluZ1Bpbm5lZFJlZ2lzdGVycy0tOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkg
ewogICAgICAgICAgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOwogICAgICAgICAgICAg
ICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycy0tOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVt
YWluaW5nUGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBp
bm5lZFNpemVzWy0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIC0gMl0gfSk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIEFTU0VSVCghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKLSAgICAgICAg
c3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMp
LCBiYXNlTWVtb3J5UG9pbnRlcik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5j
b25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBvaW50ZXIsIHRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHN0YXRp
Y1Bpbm5lZFJlZ2lzdGVySW5mby5nZXQoKTsKIH0KIAotUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5u
ZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lz
dGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyKQorUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5u
ZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lz
dGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyLCBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUlu
c3RhbmNlUG9pbnRlcikKICAgICA6IHNpemVSZWdpc3RlcnMoV1RGTW92ZShzaXplUmVnaXN0ZXJz
KSkKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VNZW1vcnlQb2ludGVyKQorICAgICwgdG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcih0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lu
dGVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnlJbmZvcm1hdGlvbi5oCmluZGV4IDZkZTA3MGExMDQ1MmZmNmJiM2M1YzI1MDQxMWYxMGU5MTM4
OWU0YTIuLjI4YTgxNTZjMWQyMmVhNGJiMmRiMGMwNDc5OWJiMTk1MzVlMDRiOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCkBA
IC00Myw4ICs0Myw5IEBAIHN0cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvIHsKIHN0cnVjdCBQ
aW5uZWRSZWdpc3RlckluZm8gewogICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBz
aXplUmVnaXN0ZXJzOwogICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBHUFJSZWcg
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBzdGF0aWMgY29uc3QgUGlubmVk
UmVnaXN0ZXJJbmZvJiBnZXQoKTsKLSAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5l
ZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZyk7CisgICAgUGlubmVkUmVnaXN0ZXJJbmZvKFZl
Y3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmLCBHUFJSZWcsIEdQUlJlZyk7CiB9OwogCiBj
bGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305394</attachid>
            <date>2017-03-25 13:01:24 -0700</date>
            <delta_ts>2017-03-25 13:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170326050123.patch</filename>
            <type>text/plain</type>
            <size>26316</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Mzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDRhMDdmMzJiNDI2MTEwYjBmYWVmMWU4MWMwZjg0Yjc4NjdmZjYwLi4xZjgyMDQxMTMzNzFhZWVj
N2JlMzAxNDFlMmY5ZmJlOTYyZTNmMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNy0wMy0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6CisgICAg
ICAgICogcnVudGltZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6
ZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZN
Ojp3YXNtQ29udGV4dE9mZnNldCk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6
Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGlu
Zy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dh
c21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCk6
CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJ
bmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorCiAyMDE3LTAz
LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBp
bnN0cnVtZW50YXRpb24gaW4gSGVhcDo6cmVzdW1lVGhlUGVyaXBoZXJ5KCkgdG8gaGVscCBkZWJ1
ZyBhbiBpc3N1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4
IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNlMzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVl
NGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwxMSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAg
ICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKwor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpCisgICAgeworICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAt
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5k
ZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRlMjFiNjE4OGY5Yjc1ZC4uZGEwZDEwZTcxMjUw
MjgzNWUyZTQwYjkwYTZjODNiYmFmZDU0ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJbmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRh
YmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4
dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZh
c3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIGRzdCk7Cit9CisKK3ZvaWQg
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExT
KCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RG
X1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAg
IG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZVBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExT
X0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAg
IHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRp
ZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2Fz
bUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAg
ICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5k
aWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAppbmRleCA2YjNhNjMyMmEwZWI0MjE5ZDc0Njk4ODM2MWI0ZmE0OGY0ZWJk
YmI2Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2MzYsNDUgKzE2MzYs
MTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0
Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQotICAg
IHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNP
ZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0
ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21Db250ZXh0LCBkc3Qp
OwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKQotICAgIHsK
LSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRMU09m
ZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSkpOwotI2VuZGlmCi0gICAgICAgIC8vIEZJ
WE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBzdG9yZVB0cihzcmMs
ICZtX3ZtLT53YXNtQ29udGV4dCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgbG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAgewotI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkK
LSAgICAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIoKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAgewot
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyTmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICB2b2lkIGxv
YWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KTsKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BS
UmVnIHNyYyk7CisgICAgc3RhdGljIGJvb2wgbG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0
Y2hSZWdpc3RlcigpOworICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01hY3Jv
U2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAppbmRleCA3ZGRjNmJhZTAwNmRjZmMxYTNkNzcxYTA2MzEzNzNkZDI1Nzk5YjVhLi5iOGIz
Nzg5NTU0ZjkwMmJjYzQxYmFkNTc3OGEzZThjZTljZWRiYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBzdGF0aWMgYm9vbCBpc1dlYkFz
c2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2FsbGVlKQogewogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKICAgICAvLyBUaGUgV2ViQXNzZW1ibHkgLT4gSlMgc3R1YiBzZXRzIGl0IGNh
bGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIHNpbmdsZXRvbiB3aGljaCBsaXZlcyBvbiB0aGUgVk0u
Ci0gICAgcmV0dXJuIGNhbGxlZSA9PSB2bS53ZWJBc3NlbWJseVRvSlNDYWxsZWUuZ2V0KCk7Cisg
ICAgcmV0dXJuIGNhbGxlZS0+aW5oZXJpdHModm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6aW5m
bygpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBVTlVTRURfUEFSQU0oY2Fs
bGVlKTsKQEAgLTU4OSwxMyArNTg5LDEzIEBAIHN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQogfQogCi1zdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKFZNJiB2bSkKK3N0YXRp
YyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBpbnN0YW5jZSkKIHsKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJBc3NlbWJseS5JbnN0YW5jZSBzaGFyZXMg
dGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHkuTW9kdWxlLCB3aGljaCBhcmUgdGhlcmVm
b3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICByZXR1cm4gbG9hZFdhc21Db250ZXh0KHZt
KS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihp
bnN0YW5jZSktPm1vZHVsZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odm0pOworICAgIFVO
VVNFRF9QQVJBTShpbnN0YW5jZSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC02
MTIsNyArNjEyLDcgQEAgdm9pZCBsaW5rRm9yKAogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJs
b2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkgLT4g
SlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93bmVy
ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3
ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVy
ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3
ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7
CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2Vk
KCkpOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBi
b29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJh
bWUtPmNhbGxlZSgpKTsKIAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhh
dmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkg
PyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93
bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxl
ZSgpKSA6IGNhbGxlckNvZGVCbG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQ2FsbFZh
cmlhbnRMaXN0IGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKaW5kZXggMDg1N2UzNGJmMWQyYjA0NmQ3YWJjYTQ4OTEyMWMxZjM4YzkwMjJmYy4u
MjE1MjRlNWZhNTc0OTY5YjM1YzhlZTYwNmIzMGRlOTRkM2UyNjY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMTE0OCwxNiArMTE0OCwx
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKICAgICB9CiAKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFdhc21Db250ZXh0
KEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBq
aXQuY2FsbCgpOwogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKLSAgICB2b2lk
ICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNtOjpFeGNlcHRpb25UeXBlKSA9
IFtdIChFeGVjU3RhdGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSkgeworICAgIHZv
aWQgKCp0aHJvd1dhc21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhj
ZXB0aW9uVHlwZSB0eXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0KSB7CiAg
ICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgp
OworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHdhc21Db250ZXh0
LT5nbG9iYWxPYmplY3QoKTsKIAogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZtLCBn
bG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVy
cm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUodHlwZSkpOwogICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAKaW5kZXggYWNkZDRlODhjMGFmMTRhMDlmNzZiZTJhM2FhNWExOTBlYTZi
ODBlMy4uOGY4Y2U4ZWE5YzBlYjY5NTk4ZDMzYWVlODQ3ODdjM2VlZjlmNTQ4OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0yOSw4ICsyOSw4IEBACiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vi
QXNzZW1ibHlDYWxsZWUuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNp
bmNsdWRlICJOdW1iZXJPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJBc3NlbWJseVRvSlNDYWxsZWUu
aCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTI5
OCw3ICsyOTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6Z2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKikKIGJvb2wgSlNDZWxsOjppc0FueVdhc21DYWxsZWUoVk0mIHZtKSBjb25zdAogewog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICByZXR1cm4gaW5oZXJpdHModm0sIEpTV2ViQXNz
ZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaW5oZXJpdHModm0sIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZTo6aW5mbygpKTsKKyAgICByZXR1cm4gaW5oZXJpdHModm0sIEpTV2ViQXNzZW1ibHlDYWxsZWU6
OmluZm8oKSkgfHwgaW5oZXJpdHModm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6aW5mbygpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4
ZGMyN2E0ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRh
NWUxMDQ1NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
RnJhbWUuY3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9u
TmFtZShWTSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2Nh
bGxlZSkgeworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUt
PnZtKCkpKQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAg
ICAgIGlmIChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxj
dWxhdGVkRGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSku
aW1wbCgpOwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2Nh
bGxlZS0+dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsK
ICAgICB9CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1
ZjAyMzE4NDQ1OWNiNjAxMGYzYjcuLjBmYTBjYTAzM2Y0MWI2Mzc4MjJjNmU5NmFmOGUwYzY4OTY0
YzJhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDkwLDYgKzQ5MCwxMSBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3Vi
bHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZN
LCB0YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZf
dCB3YXNtQ29udGV4dE9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKFZNLCB3YXNtQ29udGV4dCk7CisgICAgfQorCiAgICAgdm9pZCByZXN0b3JlUHJldmlvdXNF
eGNlcHRpb24oRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgc2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7
IH0KIAogICAgIHZvaWQgY2xlYXJMYXN0RXhjZXB0aW9uKCkgeyBtX2xhc3RFeGNlcHRpb24gPSBu
dWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKaW5kZXggZmFjNTdhZGRhZjA3NGU5YThjZmU2MDYzMzM1ZjMwZGEyZTk2ZDNhMi4u
NDg5ZDgyZTc2MjMxMzc5OWY2MjkxYWJkZWU4NWViMWI4YWE4MTBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjI3LDYgKzIy
Nyw3IEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsgLy8gTGlzdCBlYWNoIGNhbGwgc2l0
ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJlc3MgaXQgc2hvdWxkIGJlIHBhdGNo
ZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9y
eVNpemVHUFI7CisgICAgR1BSUmVnIG1fdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcjsK
ICAgICBWYWx1ZSogbV96ZXJvVmFsdWVzW251bVR5cGVzXTsKICAgICBWYWx1ZSogbV9pbnN0YW5j
ZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0aGlzIGxhenkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTc5MgogfTsKQEAgLTI4Myw3ICsyODQsOSBAQCBCM0lSR2VuZXJh
dG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IFByb2NlZHVyZSYgcAogICAgIC8vIEZJWE1FIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHBpbiBy
ZWdpc3RlcnMgaGVyZSBpZiB0aGVyZSdzIG5vIG1lbW9yeS4gSXQgbWFrZXMgd2FzbSAtPiB3YXNt
IHRodW5rcyBzaW1wbGVyIGZvciBub3cuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjY2MjMKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3Mg
PSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgIG1fbWVtb3J5QmFzZUdQUiA9IHBpbm5l
ZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgbV90b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQ
b2ludGVyID0gcGlubmVkUmVncy50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyOwogICAg
IG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJhc2VHUFIpOworICAgIG1fcHJvYy5waW5SZWdp
c3RlcihtX3RvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIEFTU0VSVCghcGlu
bmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVPZmZzZXQpOwogICAgIG1fbWVtb3J5U2l6ZUdQ
UiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplUmVnaXN0ZXI7CiAgICAgZm9yIChj
b25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5zaXplUmVn
aXN0ZXJzKQpAQCAtMzA3LDEyICszMTAsMTIgQEAgc3RydWN0IE1lbW9yeUJhc2VBbmRTaXplIHsK
ICAgICBWYWx1ZSogc2l6ZTsKIH07CiAKLXN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1v
cnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBC
YXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNl
QW5kU2l6ZShWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxv
Y2spCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBpbnN0YW5jZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKTsKIAotICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1vcnko
KS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNp
emUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQo
dm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNv
ZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRl
Y2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIpLT5tZW1v
cnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxp
ZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc3Rh
dGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5tZW1v
cnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0OwogICAgIHJlc3VsdC5iYXNl
ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5cGUo
KSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZN
ZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJs
eU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtNDE5LDEyICs0MjIsMTEgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRVbnJlYWNoYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgaW50MzJfdCAoKmdyb3dNZW1v
cnkpIChFeGVjU3RhdGUqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qg
ZGVsdGEpIC0+IGludDMyX3QgeworICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRl
KiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRlKiBleGVj
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0LCBpbnQzMl90IGRlbHRhKSAtPiBp
bnQzMl90IHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogaW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwotICAgICAgICBKU1dlYkFzc2Vt
Ymx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1lbW9yeSgpOworICAgICAgICBKU1dl
YkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gd2FzbUNvbnRleHQtPm1lbW9yeSgpOwogCiAg
ICAgICAgIGlmIChkZWx0YSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00NDAsNyAr
NDQyLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBl
IGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDMyLCBPcmlnaW4oKSwKICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIE9y
aWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dNZW1vcnkpKSwKLSAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwg
T3JpZ2luKCkpLCBkZWx0YSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgbV9pbnN0YW5jZVZh
bHVlLCBkZWx0YSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8u
bWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCkBAIC00
NDksNyArNDUxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Np
b25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJl
c3VsdAogewotICAgIGF1dG8gbWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShtX3Zt
LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIGF1dG8gbWVt
b3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywg
bV9jdXJyZW50QmxvY2spOwogCiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFsdWUgPSAx
NjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMSA8PCBzaGlmdFZh
bHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJlY3QuIik7
CkBAIC0xMDgzLDYgKzEwODUsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIo
Q29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAgIFJlZ2lz
dGVyU2V0IHRvU2F2ZTsKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3Mg
PSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgIHRvU2F2ZS5zZXQocGlubmVkUmVncy5i
YXNlTWVtb3J5UG9pbnRlcik7CisgICAgdG9TYXZlLnNldChwaW5uZWRSZWdzLnRvcEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVy
SW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKICAgICAgICAgdG9TYXZl
LnNldChyZWdJbmZvLnNpemVSZWdpc3Rlcik7CiAKQEAgLTExOTEsMTAgKzExOTQsMTcgQEAgc3Rh
dGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGls
YXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIExvYWQgVk0u
CisgICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIgPSBwaW5uZWRSZWdz
LnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgdG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaW50ZXIpOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSgpKSwg
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIFZNOjp3YXNt
Q29udGV4dE9mZnNldCgpKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisKICAg
ICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5l
ZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFz
ZU1lbW9yeSk7Ci0gICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNl
TWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVt
b3J5KTsKKworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0g
cGlubmVkUmVncy5zaXplUmVnaXN0ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgp
ID49IDEpOwogICAgICAgICBBU1NFUlQoIXNpemVSZWdzWzBdLnNpemVPZmZzZXQpOyAvLyBUaGUg
Zm9sbG93aW5nIGNvZGUgYXNzdW1lcyB3ZSBzdGFydCBhdCAwLCBhbmQgY2FsY3VsYXRlcyBzdWJz
ZXF1ZW50IHNpemUgcmVnaXN0ZXJzIHJlbGF0aXZlIHRvIDAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggZmI2NzY1N2VhNDBjZWNkMGI4Njg4MGViYjI0
YzdlYTc5MTNmOWMzMy4uNGI0NzdhZGNhOTcxMDlkYmEwZDU2MjBiZTc4Y2U5MmNlNjE0NDQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApAQCAtNjYsOCAr
NjYsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFn
PENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKICAgICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0ZWRJbW0zMigwKSwgSklUOjpBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7IC8vIEZJWE1FIFN0b3AgdXNp
bmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1MzIxCi0gICAgaml0LnN0b3JlUHRyKEpJVDo6VHJ1c3RlZEltbVB0cih2bS0+d2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSk7Ci0KKyAgICBqaXQuc3RvcmVQdHIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIHsKICAgICAgICAgYm9vbCBoYXNCYWRJNjRV
c2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5MiwxNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAg
ICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsKICAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2
ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAgICAgICAgICAgICBqaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAg
ICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKCk7CiAgICAgICAgICAgICBqaXQuanVtcFRv
RXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4
ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYykgLT4gdm9pZCB7CisgICAgICAgICAgICB2
b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopID0g
W10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCkg
LT4gdm9pZCB7CiAgICAgICAgICAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgICAg
ICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHdhc21Db250
ZXh0LT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogZXJyb3IgPSBF
cnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNv
bnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgiaTY0IG5vdCBhbGxv
d2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVkIGZ1bmN0aW9uIikp
OwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBl
cnJvcik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNvbnRleHQuY3BwCmluZGV4IDY0ODRjZDRmNTI2NmEzOGU4MjE1NGE3MWQ3MDUyYmFhZWU0ODk0
MjUuLmE3YjhhMmNiM2VjZWNiYjMwY2RmY2Q2MmMwZjQ0NDMyZGVlYTJkMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKQEAgLTQwLDcgKzQwLDYgQEAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQogICAgIGlmIChPcHRp
b25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RG
X1dBU01fQ09OVEVYVF9LRVkpKTsKICNlbmRpZgotICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3Rh
dGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2OTc3MwogICAgIHJldHVybiB2bS53YXNtQ29udGV4dDsKIH0KIApAQCAtNTAs
NyArNDksNiBAQCB2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGluc3RhbmNlKQogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMo
KSkKICAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRf
S0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNlKSk7CiAjZW5kaWYKLSAgICAvLyBGSVhN
RTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKICAgICB2bS53YXNtQ29udGV4dCA9IGlu
c3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA4YWMwODY2Mjc4YjUxMzkzYjY2OWVhMDlhN2I1NDhk
NmQ5YTc2YjE0Li5kYzQwMzI1MTMzYmFlNzUwZTY2M2NhOGEyMTY2ODQ5NWVhYWIxYWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5jcHAKQEAgLTQwLDM3ICs0MCw0NiBAQCBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljUGlu
bmVkUmVnaXN0ZXJJbmZvRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShzdGF0aWNQaW5uZWRSZWdp
c3RlckluZm9GbGFnLCBbXSAoKSB7CiAgICAgICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJ
bmZvPiBzaXplUmVnaXN0ZXJzOwotICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7Cisg
ICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CisgICAgICAg
IEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gSW52YWxpZEdQUlJlZzsK
IAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1v
cnkgc2l6ZSByZWdpc3RlciwgYW5kIHdlIHNob3VsZCBhbGxvdyBkaWZmZXJlbnQKICAgICAgICAg
Ly8gICAgICAgIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHRvIGhhdmUgZGlmZmVyZW50IHBpbnMuIFJp
Z2h0IG5vdyB3ZSB0YWtlIGEgdmVjdG9yIHdpdGggb25seSBvbmUgZW50cnkuCiAgICAgICAgIC8v
ICAgICAgICBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlciwgd2UgY2FuIGhh
dmUgb25lIGZvciBlYWNoIGxvYWQgc2l6ZSBjbGFzcy4KICAgICAgICAgLy8gICAgICAgIHNlZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgICAgICBW
ZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07Ci0gICAgICAgIHVuc2lnbmVkIHJl
bWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDE7CisgICAgICAg
IHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSAr
IDI7CiAgICAgICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJz
LmZvckVhY2goWyZdIChSZWcgcmVnKSB7CiAgICAgICAgICAgICBpZiAoIXJlZy5pc0dQUigpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3By
KCk7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMikgeworICAg
ICAgICAgICAgICAgIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIgPSBncHI7CisgICAg
ICAgICAgICAgICAgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1Bpbm5lZFJl
Z2lzdGVycyA9PSAxKSB7CiAgICAgICAgICAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7
CiAgICAgICAgICAgICAgICAgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlu
bmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgLSAxXSB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzaXplUmVnaXN0ZXJzLmFw
cGVuZCh7IGdwciwgcGlubmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgLSAyXSB9
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgQVNTRVJUKCFyZW1haW5pbmdQaW5uZWRSZWdpc3Rl
cnMpOwotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0KFdURk1vdmUo
c2l6ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVyKTsKKyAgICAgICAgc3RhdGljUGlubmVk
UmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5
UG9pbnRlciwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CiAgICAgfSk7CiAKICAg
ICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5m
bz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5m
bz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB0b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKQogICAgIDogc2l6ZVJlZ2lzdGVycyhXVEZNb3Zl
KHNpemVSZWdpc3RlcnMpKQogICAgICwgYmFzZU1lbW9yeVBvaW50ZXIoYmFzZU1lbW9yeVBvaW50
ZXIpCisgICAgLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZVBvaW50ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKaW5kZXggNmRlMDcwYTEwNDUyZmY2YmIzYzVj
MjUwNDExZjEwZTkxMzg5ZTRhMi4uMjhhODE1NmMxZDIyZWE0YmIyZGIwYzA0Nzk5YmIxOTUzNWUw
NGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmgKQEAgLTQzLDggKzQzLDkgQEAgc3RydWN0IFBpbm5lZFNpemVSZWdpc3Rlcklu
Zm8gewogc3RydWN0IFBpbm5lZFJlZ2lzdGVySW5mbyB7CiAgICAgVmVjdG9yPFBpbm5lZFNpemVS
ZWdpc3RlckluZm8+IHNpemVSZWdpc3RlcnM7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVy
OworICAgIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyOwogICAgIHN0YXRp
YyBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVySW5m
byhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5uZWRS
ZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywgR1BS
UmVnKTsKIH07CiAKIGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305395</attachid>
            <date>2017-03-25 13:15:23 -0700</date>
            <delta_ts>2017-03-26 09:07:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170326051522.patch</filename>
            <type>text/plain</type>
            <size>26284</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li43ODk1ZDdjN2ExYjU3MzM0
MTFkMGUwYjQwMWY1NDUyYTI2NzNhZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNy0wMy0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6CisgICAg
ICAgICogcnVudGltZS9TdGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6
ZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZN
Ojp3YXNtQ29udGV4dE9mZnNldCk6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6
Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGlu
Zy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dh
c21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAg
KEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCk6
CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJ
bmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorCiAyMDE3LTAz
LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHdhc20g
YnkgcmV0dXJuaW5nIGFmdGVyIHdlIGRvIFRMUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNlMzRjNWJjZGMy
MjcuLjU2ZDVjYmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwxMSBAQCBjbGFz
cyBNYXJrZWRCbG9jayB7CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2b2lkKiBw
KTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFy
a2luZ1ZlcnNpb247IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpCisgICAg
eworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3ZtKTsKKyAg
ICB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVu
dE1hc2sgPSBhdG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAKaW5kZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRlMjFiNjE4OGY5
Yjc1ZC4uZGEwZDEwZTcxMjUwMjgzNWUyZTQwYjkwYTZjODNiYmFmZDU0ZGM2OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIsNiArMzIs
MTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgog
CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJbmZvcm1hdGlv
bi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNzZW1i
bHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBA
IC03NjYsNiArNzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVl
VG9Cb29sZWFuKEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAgZG9uZS5saW5r
KHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3NlbWJseUhlbHBl
cnM6OmxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShGQVNUX1RMU19K
SVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAg
IGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkp
LCBkc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShXYXNtOjpQ
aW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIs
IGRzdCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KEdQUlJl
ZyBzcmMpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RU
TFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorICAgIG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86Omdl
dCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5
SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7Cisj
aWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlG
YXN0VExTKCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJs
eUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sK
KyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUZhc3RUTFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRj
aFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIzOWNlYjliMjA5
NzI1NDQ2ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5Mjdk
MmE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVs
cGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
QEAgLTE2MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJl
c3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4
dChHUFJSZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRG
cm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3Qp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklY
TUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0t
Pndhc21Db250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChH
UFJSZWcgc3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3Rv
cmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkp
KTsKLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0
byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3
NzMKLSAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQ
dHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1
cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCk7CisgICAg
dm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBib29sIGxvYWRX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBz
dG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZkY2ZjMWEzZDc3
MWEwNjMxMzczZGQyNTc5OWI1YS4uYjhiMzc4OTU1NGY5MDJiY2M0MWJhZDU3NzhhM2U4Y2U5Y2Vk
YmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01ODEsNyArNTgx
LDcgQEAgc3RhdGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwq
IGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gVGhlIFdlYkFzc2Vt
Ymx5IC0+IEpTIHN0dWIgc2V0cyBpdCBjYWxsZXIgZnJhbWUncyBjYWxsZWUgdG8gYSBzaW5nbGV0
b24gd2hpY2ggbGl2ZXMgb24gdGhlIFZNLgotICAgIHJldHVybiBjYWxsZWUgPT0gdm0ud2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmdldCgpOworICAgIHJldHVybiBjYWxsZWUtPmluaGVyaXRzKHZtLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OmluZm8oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxlZSk7CkBAIC01ODksMTMgKzU4OSwxMyBAQCBzdGF0
aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2FsbGVlKQog
I2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIH0KIAotc3RhdGljIEpTQ2VsbCogd2ViQXNz
ZW1ibHlPd25lcihWTSYgdm0pCitzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2Vs
bCogaW5zdGFuY2UpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIEVhY2ggV2Vi
QXNzZW1ibHkuSW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5
Lk1vZHVsZSwgd2hpY2ggYXJlIHRoZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCi0gICAg
cmV0dXJuIGxvYWRXYXNtQ29udGV4dCh2bSktPm1vZHVsZSgpOworICAgIHJldHVybiBqc0Nhc3Q8
SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oaW5zdGFuY2UpLT5tb2R1bGUoKTsKICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2UpOwogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgbGlua0ZvcigKICAg
ICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsK
IAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2Rl
QmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBj
YWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2Rl
QmxvY2s7CisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBj
YWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2Fs
bGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBBU1NF
UlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0gaXNXZWJBc3NlbWJs
eVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3Nl
bWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2Vs
bCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJD
b2RlQmxvY2s7CisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJs
eU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNT
RVJUKG93bmVyKTsKIAogICAgIENhbGxWYXJpYW50TGlzdCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDA4NTdlMzRiZjFkMmIwNDZk
N2FiY2E0ODkxMjFjMWYzOGM5MDIyZmMuLjIxNTI0ZTVmYTU3NDk2OWIzNWM4ZWU2MDZiMzBkZTk0
ZDNlMjY2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKQEAgLTExNDgsMTYgKzExNDgsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93
RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgfQogCiAgICAgaml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIEND
YWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKICAgICBqaXQuanVtcFRvRXhjZXB0
aW9uSGFuZGxlcigpOwogCi0gICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRl
KiwgV2FzbTo6RXhjZXB0aW9uVHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNl
cHRpb25UeXBlIHR5cGUpIHsKKyAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3Rh
dGUqLCBXYXNtOjpFeGNlcHRpb25UeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChF
eGVjU3RhdGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiB3YXNtQ29udGV4dCkgewogICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAg
ICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAg
ewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0p
OwotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29u
dGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAg
IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVF
cnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUp
KTsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IGFjZGQ0ZTg4YzBh
ZjE0YTA5Zjc2YmUyYTNhYTVhMTkwZWE2YjgwZTMuLjhmOGNlOGVhOWMwZWI2OTU5OGQzM2FlZTg0
Nzg3YzNlZWY5ZjU0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cApAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q2FsbGVlLmgiCisjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiTnVtYmVyT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yOTgsNyArMjk4LDcgQEAgSlNWYWx1ZSBKU0NlbGw6Omdl
dFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCiBib29sIEpTQ2VsbDo6aXNBbnlXYXNt
Q2FsbGVlKFZNJiB2bSkgY29uc3QKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgcmV0
dXJuIGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZvKCkpIHx8IGluaGVyaXRz
KHZtLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmluZm8oKSk7CisgICAgcmV0dXJuIGluaGVyaXRz
KHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZvKCkpIHx8IGluaGVyaXRzKHZtLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OmluZm8oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0Zy
YW1lLmNwcAppbmRleCA2ZDQ3ODY0Yzk3OGRjMjdhNGUzNzUwN2QyMjZkZDU3YTlhMGNjY2UyLi4x
NjRjNGY1N2JjZDRiMmM0YmY3ZmMwNzY0YTVlMTA0NTRkYTdhMmUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAtNzIsMTAgKzcyLDEwIEBAIFN0
cmluZyBTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUoVk0mIHZtKSBjb25zdAogICAgIH0KICAgICBT
dHJpbmcgbmFtZTsKICAgICBpZiAobV9jYWxsZWUpIHsKKyAgICAgICAgaWYgKG1fY2FsbGVlLT5p
c0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgpKSkKKyAgICAgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIjx3YXNtPiIpOwogICAgICAgICBpZiAobV9jYWxsZWUtPmlzT2JqZWN0KCkpCiAg
ICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtLCBqc0Nhc3Q8SlNP
YmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKLSAgICAgICAgZWxzZSBpZiAobV9jYWxs
ZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkpKQotICAgICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgfQogICAgIHJldHVybiBuYW1lLmlzTnVsbCgp
ID8gZW1wdHlTdHJpbmcoKSA6IG5hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA5ZDg2YWExOWE5MzNjZWEzOGFiNWYwMjMxODQ0NTljYjYwMTBmM2I3Li4wZmEwY2EwMzNm
NDFiNjM3ODIyYzZlOTZhZjhlMGM2ODk2NGMyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTQ5MCw2ICs0OTAsMTEgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAg
IH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2FzbUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgd2FzbUNvbnRleHQpOworICAgIH0KKwog
ICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7
IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAKICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlv
bigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4
Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjQ4OWQ4MmU3NjIzMTM3OTlmNjI5MWFiZGVlODVlYjFi
OGFhODEwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKQEAgLTIyNyw2ICsyMjcsNyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAg
ICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBh
ZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVnIG1fbWVtb3J5QmFz
ZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOworICAgIEdQUlJlZyBtX3RvcEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAgICAgVmFsdWUqIG1femVyb1ZhbHVlc1tudW1UeXBl
c107CiAgICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CkBAIC0y
ODMsNyArMjg0LDkgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKICAgICAvLyBGSVhNRSB3ZSBk
b24ndCByZWFsbHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhlcmUgaWYgdGhlcmUncyBubyBtZW1v
cnkuIEl0IG1ha2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2ltcGxlciBmb3Igbm93LiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjIzCiAgICAgY29uc3QgUGlubmVk
UmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAg
ICBtX21lbW9yeUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOworICAgIG1f
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlCYXNl
R1BSKTsKKyAgICBtX3Byb2MucGluUmVnaXN0ZXIobV90b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQ
b2ludGVyKTsKICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zm
c2V0KTsKICAgICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0u
c2l6ZVJlZ2lzdGVyOwogICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVn
SW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKQEAgLTMwNywxMiArMzEwLDEyIEBAIHN0
cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1zdGF0aWMg
TWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5z
dGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgTWVtb3J5
QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1
cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlPYmplY3Qg
PSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBPcmlnaW4oKSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1v
cnkoKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRl
eHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAi
Y29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
ZGVjbHR5cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkp
ID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6
ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+
KG51bGxwdHIpLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90
KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXpl
IHJlc3VsdDsKICAgICByZXN1bHQuYmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2Vi
QXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxv
Y2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBt
ZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTQx
OSwxMiArNDIyLDExIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQ
YXJ0aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNz
aW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAog
ewotICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAo
RXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90
ICgqZ3Jvd01lbW9yeSkgKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMy
X3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29u
dGV4dCwgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0
KHZtKTsKLSAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNl
LT5tZW1vcnkoKTsKKyAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdh
c21Db250ZXh0LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAg
ICAgcmV0dXJuIC0xOwpAQCAtNDQwLDcgKzQ0Miw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
R3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkK
IAogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9w
cm9jLCBJbnQzMiwgT3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93
TWVtb3J5KSksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOworICAgICAgICBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVy
LCBPcmlnaW4oKSksIG1faW5zdGFuY2VWYWx1ZSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFz
c2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2Ms
IG1fY3VycmVudEJsb2NrKTsKIApAQCAtNDQ5LDcgKzQ1MSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJl
c3VsdCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0g
Z2V0TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3Vy
cmVudEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUo
bV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhw
ciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6
OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29k
ZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtMTA4Myw2ICsxMDg1LDcgQEAgc3RhdGljIHZv
aWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25D
b250ZXh0LCBXYXNtSW4KICAgICBSZWdpc3RlclNldCB0b1NhdmU7CiAgICAgY29uc3QgUGlubmVk
UmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAg
ICB0b1NhdmUuc2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXIpOworICAgIHRvU2F2ZS5z
ZXQocGlubmVkUmVncy50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKICAgICBmb3Ig
KGNvbnN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVS
ZWdpc3RlcnMpCiAgICAgICAgIHRvU2F2ZS5zZXQocmVnSW5mby5zaXplUmVnaXN0ZXIpOwogCkBA
IC0xMTkxLDEwICsxMTk0LDE3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihD
b21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICAvLyBMb2FkIFZNLgorICAgIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyID0gcGlubmVkUmVncy50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVy
OworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgIGpp
dC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01h
c2spLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKKyAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3ModG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciwgTWFy
a2VkQmxvY2s6Om9mZnNldE9mVk0oKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIp
OworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2VQb2ludGVyLCBWTTo6d2FzbUNvbnRleHRPZmZzZXQoKSksIHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZVBvaW50ZXIpOworCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAgICAgICAg
R1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAg
ICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwotICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisKKyAgICAgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwogICAgICAg
ICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyczsKICAgICAg
ICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKICAgICAgICAgQVNTRVJUKCFzaXplUmVn
c1swXS5zaXplT2Zmc2V0KTsgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgd2Ugc3RhcnQg
YXQgMCwgYW5kIGNhbGN1bGF0ZXMgc3Vic2VxdWVudCBzaXplIHJlZ2lzdGVycyByZWxhdGl2ZSB0
byAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IGZi
Njc2NTdlYTQwY2VjZDBiODY4ODBlYmIyNGM3ZWE3OTEzZjljMzMuLjRiNDc3YWRjYTk3MTA5ZGJh
MGQ1NjIwYmU3OGNlOTJjZTYxNDQ0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQmluZGluZy5jcHAKQEAgLTY2LDggKzY2LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAog
CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgaml0LnN0b3JlNjQoSklUOjpU
cnVzdGVkSW1tMzIoMCksIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSkpOyAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQotICAgIGppdC5zdG9yZVB0cihKSVQ6
OlRydXN0ZWRJbW1QdHIodm0tPndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKSksIEpJVDo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwotCisgICAgaml0LnN0b3JlUHRy
KFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRl
ciwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKICAgICB7
CiAgICAgICAgIGJvb2wgaGFzQmFkSTY0VXNlID0gZmFsc2U7CkBAIC05MywxNiArOTIsMTcgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlu
a0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgICAgICBpZiAoaGFzQmFkSTY0VXNlKSB7CiAgICAg
ICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cigpOwogICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KEdQ
UkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbCgp
OwogICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgICAgICAg
ICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3RhdGUqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMp
IC0+IHZvaWQgeworICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3RhdGUqLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIC0+IHZvaWQgewogICAgICAgICAgICAgICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQo
KnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwg
Z2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBB
U0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0
byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcAppbmRleCA2NDg0Y2Q0ZjUyNjZh
MzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1Li5hN2I4YTJjYjNlY2VjYmIzMGNkZmNkNjJjMGY0
NDQzMmRlZWEyZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQu
Y3BwCkBAIC00MCw3ICs0MCw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250
ZXh0KFZNJiB2bSkKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCiAg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJl
YWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CiAjZW5kaWYKLSAg
ICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKICAgICByZXR1cm4gdm0u
d2FzbUNvbnRleHQ7CiB9CiAKQEAgLTUwLDcgKzQ5LDYgQEAgdm9pZCBzdG9yZVdhc21Db250ZXh0
KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCiAgICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmlj
X2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihpbnN0YW5j
ZSkpOwogI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8g
YWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzcz
CiAgICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKaW5kZXggOGFjMDg2
NjI3OGI1MTM5M2I2NjllYTA5YTdiNTQ4ZDZkOWE3NmIxNC4uZGM0MDMyNTEzM2JhZTc1MGU2NjNj
YThhMjE2Njg0OTVlYWFiMWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBAIC00MCwzNyArNDAsNDYgQEAgY29uc3Qg
UGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpCiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWc7CiAgICAgc3RkOjpj
YWxsX29uY2Uoc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZywgW10gKCkgewogICAgICAgICBW
ZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKLSAgICAgICAgR1BS
UmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIg
PSBJbnZhbGlkR1BSUmVnOworICAgICAgICBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIsIGFuZCB3ZSBzaG91bGQg
YWxsb3cgZGlmZmVyZW50CiAgICAgICAgIC8vICAgICAgICBXZWJBc3NlbWJseS5JbnN0YW5jZSB0
byBoYXZlIGRpZmZlcmVudCBwaW5zLiBSaWdodCBub3cgd2UgdGFrZSBhIHZlY3RvciB3aXRoIG9u
bHkgb25lIGVudHJ5LgogICAgICAgICAvLyAgICAgICAgSWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25l
IHNpemUgcmVnaXN0ZXIsIHdlIGNhbiBoYXZlIG9uZSBmb3IgZWFjaCBsb2FkIHNpemUgY2xhc3Mu
CiAgICAgICAgIC8vICAgICAgICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjI5NTIKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBwaW5uZWRTaXplcyA9IHsg
MCB9OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRT
aXplcy5zaXplKCkgKyAxOworICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3Rl
cnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAyOwogICAgICAgICBqc2NDYWxsaW5nQ29udmVudGlv
bigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgewogICAgICAg
ICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwogICAgICAgICAgICAgaWYgKCFyZW1haW5pbmdQ
aW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAocmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzID09IDIpIHsKKyAgICAgICAgICAgICAgICB0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyID0gZ3ByOworICAgICAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lz
dGVycy0tOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgewogICAgICAgICAgICAgICAg
IGJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOwogICAgICAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5l
ZFJlZ2lzdGVycy0tOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2l6ZVJl
Z2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWluaW5nUGlubmVkUmVnaXN0
ZXJzIC0gMV0gfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWlu
aW5nUGlubmVkUmVnaXN0ZXJzIC0gMl0gfSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIEFTU0VS
VCghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0
ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRl
cik7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShz
aXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBvaW50ZXIsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaW50ZXIpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5m
by5nZXQoKTsKIH0KIAotUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVj
dG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VN
ZW1vcnlQb2ludGVyKQorUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVj
dG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VN
ZW1vcnlQb2ludGVyLCBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcikKICAg
ICA6IHNpemVSZWdpc3RlcnMoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSkKICAgICAsIGJhc2VNZW1v
cnlQb2ludGVyKGJhc2VNZW1vcnlQb2ludGVyKQorICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlUG9pbnRlcih0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCmlu
ZGV4IDZkZTA3MGExMDQ1MmZmNmJiM2M1YzI1MDQxMWYxMGU5MTM4OWU0YTIuLjI4YTgxNTZjMWQy
MmVhNGJiMmRiMGMwNDc5OWJiMTk1MzVlMDRiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCkBAIC00Myw4ICs0Myw5IEBAIHN0
cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvIHsKIHN0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8g
ewogICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwogICAg
IEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUlu
c3RhbmNlUG9pbnRlcjsKICAgICBzdGF0aWMgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBnZXQo
KTsKLSAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+
JiYsIEdQUlJlZyk7CisgICAgUGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiYmLCBHUFJSZWcsIEdQUlJlZyk7CiB9OwogCiBjbGFzcyBNZW1vcnlJbmZvcm1h
dGlvbiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305424</attachid>
            <date>2017-03-26 09:07:17 -0700</date>
            <delta_ts>2017-03-26 10:50:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327010716.patch</filename>
            <type>text/plain</type>
            <size>33927</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li5kOGJiZjQ5MGUyY2IxYzRl
MmNjOTFjNGFiMGRiNGRjOGY0MzM0N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxNy0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9T
dGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpn
ZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNt
V3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6
Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDoKKyAgICAg
ICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4
dCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206
OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpX
ZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRv
SlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlLmg6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6aW5zdGFu
Y2UpOgorCiAyMDE3LTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IHdhc20gYnkgcmV0dXJuaW5nIGFmdGVyIHdlIGRvIFRMUy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5
ZGEwZTNlMzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjk4LDYg
KzI5OCwxMSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZFJh
dyhjb25zdCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZWTSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJs
b2NrLCBtX3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdm
OGNjNTRlMjFiNjE4OGY5Yjc1ZC4uZGEwZDEwZTcxMjUwMjgzNWUyZTQwYjkwYTZjODNiYmFmZDU0
ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2luY2x1ZGUgIldhc21N
ZW1vcnlJbmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBFeGVjdXRh
YmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0
CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQordm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQoreworI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRM
UygpKSB7CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dB
U01fQ09OVEVYVF9LRVkpLCBkc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisg
ICAgbW92ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZVBvaW50ZXIsIGRzdCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdh
c21Db250ZXh0KEdQUlJlZyBzcmMpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBp
ZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAgc3RvcmVUb1RM
U1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRS
ZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworfQor
Citib29sIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRj
aFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJO
ZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBk
Njg4MjIzOWNlYjliMjA5NzI1NDQ2ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQz
NTIyYmI2MjIwNzQ5MjdkMmE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKQEAgLTE2MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxw
ZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQ
UlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lk
IGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAg
ICAgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09O
VEVYVF9LRVkpLCBkc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYK
LSAgICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElD
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAg
IGxvYWRQdHIoJm1fdm0tPndhc21Db250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3Rv
cmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAg
ICAgICByZXR1cm4gc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dB
U01fQ09OVEVYVF9LRVkpKTsKLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0
YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk3NzMKLSAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRl
eHQpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1
cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BS
UmVnIGRzdCk7CisgICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0
YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAg
ICBzdGF0aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
OwogI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAg
IFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZi
YWUwMDZkY2ZjMWEzZDc3MWEwNjMxMzczZGQyNTc5OWI1YS4uYjkzNWZjZWI2MzVhOTljYjg2ZjM2
ZGYxNTFiOGEzMTE3OTZhMDZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC01ODAsOCArNTgwLDggQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQot
ICAgIC8vIFRoZSBXZWJBc3NlbWJseSAtPiBKUyBzdHViIHNldHMgaXQgY2FsbGVyIGZyYW1lJ3Mg
Y2FsbGVlIHRvIGEgc2luZ2xldG9uIHdoaWNoIGxpdmVzIG9uIHRoZSBWTS4KLSAgICByZXR1cm4g
Y2FsbGVlID09IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKTsKKyAgICAvLyBUaGUgV2Vi
QXNzZW1ibHkgLT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZSBpbnN0YW5jZS4KKyAgICByZXR1cm4gY2FsbGVlLT5pbmhlcml0
cyh2bSwgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjppbmZvKCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwpAQCAtNTg5LDEzICs1ODksMTMg
QEAgc3RhdGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNh
bGxlZSkKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiB9CiAKLXN0YXRpYyBKU0NlbGwq
IHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25l
cihKU0NlbGwqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFj
aCBXZWJBc3NlbWJseS5JbnN0YW5jZSBzaGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNz
ZW1ibHkuTW9kdWxlLCB3aGljaCBhcmUgdGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4K
LSAgICByZXR1cm4gbG9hZFdhc21Db250ZXh0KHZtKS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpz
Q2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjYWxsZWUpLT5pbnN0YW5jZSgpLT5tb2R1bGUo
KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oaW5zdGFu
Y2UpOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtNjEyLDcgKzYxMiw3IEBAIHZv
aWQgbGlua0ZvcigKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1l
LT5jb2RlQmxvY2soKTsKIAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhh
dmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2
bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcihj
YWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25l
cik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKQEAgLTczNSw3ICs3
MzUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgYm9vbCBpc1dlYkFzc2VtYmx5
ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSk7CiAK
ICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJs
b2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25l
cih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1i
bHkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJDb2Rl
QmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIENhbGxWYXJpYW50TGlzdCBsaXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDA4
NTdlMzRiZjFkMmIwNDZkN2FiY2E0ODkxMjFjMWYzOGM5MDIyZmMuLjIxNTI0ZTVmYTU3NDk2OWIz
NWM4ZWU2MDZiMzBkZTk0ZDNlMjY2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTExNDgsMTYgKzExNDgsMTcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAg
ICAgfQogCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVu
dEdQUjIpOwogICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKICAgICBq
aXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgdm9pZCAoKnRocm93V2FzbUV4Y2Vw
dGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBl
eGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUpIHsKKyAgICB2b2lkICgqdGhyb3dXYXNtRXhj
ZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNtOjpFeGNlcHRpb25UeXBlLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCkgewogICAgICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOwotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGxvYWRXYXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7
CiAKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJB
c3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJB
c3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNl
cHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93
U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0YWNrRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFt
ZS5jcHAKaW5kZXggNmQ0Nzg2NGM5NzhkYzI3YTRlMzc1MDdkMjI2ZGQ1N2E5YTBjY2NlMi4uMTY0
YzRmNTdiY2Q0YjJjNGJmN2ZjMDc2NGE1ZTEwNDU0ZGE3YTJlMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKQEAgLTcyLDEwICs3MiwxMCBAQCBTdHJp
bmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgY29uc3QKICAgICB9CiAgICAgU3Ry
aW5nIG5hbWU7CiAgICAgaWYgKG1fY2FsbGVlKSB7CisgICAgICAgIGlmIChtX2NhbGxlZS0+aXNB
bnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+dm0oKSkpCisgICAgICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCI8d2FzbT4iKTsKICAgICAgICAgaWYgKG1fY2FsbGVlLT5pc09iamVjdCgpKQogICAg
ICAgICAgICAgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZSh2bSwganNDYXN0PEpTT2Jq
ZWN0Kj4obV9jYWxsZWUuZ2V0KCkpKS5pbXBsKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1fY2FsbGVl
LT5pc0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgpKSkKLSAgICAgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIjx3YXNtPiIpOwogICAgIH0KICAgICByZXR1cm4gbmFtZS5pc051bGwoKSA/
IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IDg1MTE1NDJiNzdkZmM4ZTZmMmJlYWJmMWY4OTNjNzczOWFiNzRiMzguLmQxMDgxNTNm
Njg0ZTE5ZWM4OTQ0YmQ0NGYxMTI1YzE5ZmUxNzI2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTI0MCw3ICsyNDAsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgd2ViQXNzZW1ibHlDYWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgd2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlLnNldCgqdGhpcywgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVh
dGUoKnRoaXMsIHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZS5nZXQoKSkpOwogI2VuZGlm
CiAgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggOWQ4
NmFhMTlhOTMzY2VhMzhhYjVmMDIzMTg0NDU5Y2I2MDEwZjNiNy4uMTU4ZTY5OGJhNDg3MTI5MTU1
NTU1OGRkMjZkNWZhYTA5Y2EzZDEzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC0zMzYsNyArMzM2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB3
ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2Vi
QXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPEpTQ2VsbD4gd2ViQXNzZW1i
bHlUb0pTQ2FsbGVlOwogI2VuZGlmCiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0
dXJlOwpAQCAtNDkwLDYgKzQ4OSwxMSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB0YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiAgICAg
fQogCisgICAgc3RhdGljIHB0cmRpZmZfdCB3YXNtQ29udGV4dE9mZnNldCgpCisgICAgeworICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB3YXNtQ29udGV4dCk7CisgICAgfQorCiAg
ICAgdm9pZCByZXN0b3JlUHJldmlvdXNFeGNlcHRpb24oRXhjZXB0aW9uKiBleGNlcHRpb24pIHsg
c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7IH0KIAogICAgIHZvaWQgY2xlYXJMYXN0RXhjZXB0aW9u
KCkgeyBtX2xhc3RFeGNlcHRpb24gPSBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggZmFjNTdhZGRhZjA3NGU5YThj
ZmU2MDYzMzM1ZjMwZGEyZTk2ZDNhMi4uNDg5ZDgyZTc2MjMxMzc5OWY2MjkxYWJkZWU4NWViMWI4
YWE4MTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcApAQCAtMjI3LDYgKzIyNyw3IEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogICAg
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxs
czsgLy8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFk
ZHJlc3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNl
R1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CisgICAgR1BSUmVnIG1fdG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBWYWx1ZSogbV96ZXJvVmFsdWVzW251bVR5cGVz
XTsKICAgICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0aGlzIGxhenkg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5MgogfTsKQEAgLTI4
Myw3ICsyODQsOSBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3Qg
TW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcAogICAgIC8vIEZJWE1FIHdlIGRv
bid0IHJlYWxseSBuZWVkIHRvIHBpbiByZWdpc3RlcnMgaGVyZSBpZiB0aGVyZSdzIG5vIG1lbW9y
eS4gSXQgbWFrZXMgd2FzbSAtPiB3YXNtIHRodW5rcyBzaW1wbGVyIGZvciBub3cuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY2MjMKICAgICBjb25zdCBQaW5uZWRS
ZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAg
IG1fbWVtb3J5QmFzZUdQUiA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgbV90
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gcGlubmVkUmVncy50b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQb2ludGVyOwogICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJhc2VH
UFIpOworICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3RvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aW50ZXIpOwogICAgIEFTU0VSVCghcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVPZmZz
ZXQpOwogICAgIG1fbWVtb3J5U2l6ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5z
aXplUmVnaXN0ZXI7CiAgICAgZm9yIChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJ
bmZvIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzKQpAQCAtMzA3LDEyICszMTAsMTIgQEAgc3Ry
dWN0IE1lbW9yeUJhc2VBbmRTaXplIHsKICAgICBWYWx1ZSogc2l6ZTsKIH07CiAKLXN0YXRpYyBN
ZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyBNZW1vcnlC
YXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVy
ZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9
IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9y
eSgpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4
dCh2bSktPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJj
b2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihk
ZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSo+KG51bGxwdHIpLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXpl
b2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4o
bnVsbHB0ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3Qp
LCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUg
cmVzdWx0OwogICAgIHJlc3VsdC5iYXNlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJB
c3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1l
bW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtNDE5
LDEyICs0MjIsMTEgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRVbnJlYWNoYWJsZSgpIC0+IFBh
cnRpYWxSZXN1bHQKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Np
b25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7
Ci0gICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpIChFeGVjU3RhdGUqLCBpbnQzMl90KSA9IFtdIChF
eGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZGVsdGEpIC0+IGludDMyX3QgeworICAgIGludDMyX3Qg
KCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiwgaW50MzJf
dCkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250
ZXh0LCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQo
dm0pOwotICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2Ut
Pm1lbW9yeSgpOworICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gd2Fz
bUNvbnRleHQtPm1lbW9yeSgpOwogCiAgICAgICAgIGlmIChkZWx0YSA8IDApCiAgICAgICAgICAg
ICByZXR1cm4gLTE7CkBAIC00NDAsNyArNDQyLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRH
cm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQog
CiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3By
b2MsIEludDMyLCBPcmlnaW4oKSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxD
b25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dN
ZW1vcnkpKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBkZWx0YSk7CisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIs
IE9yaWdpbigpKSwgbV9pbnN0YW5jZVZhbHVlLCBkZWx0YSk7CiAKICAgICByZXN0b3JlV2ViQXNz
ZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywg
bV9jdXJyZW50QmxvY2spOwogCkBAIC00NDksNyArNDUxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KQogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGF1dG8gbWVtb3J5VmFsdWUgPSBn
ZXRNZW1vcnlCYXNlQW5kU2l6ZShtX3ZtLCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJy
ZW50QmxvY2spOworICAgIGF1dG8gbWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZSht
X2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgY29uc3RleHBy
IHVpbnQzMl90IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6
cGFnZVNpemUgPT0gMSA8PCBzaGlmdFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2Rl
IGJlbG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC0xMDgzLDYgKzEwODUsNyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNv
bnRleHQsIFdhc21JbgogICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZTsKICAgICBjb25zdCBQaW5uZWRS
ZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAg
IHRvU2F2ZS5zZXQocGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcik7CisgICAgdG9TYXZlLnNl
dChwaW5uZWRSZWdzLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIGZvciAo
Y29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVycykKICAgICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVSZWdpc3Rlcik7CiAKQEAg
LTExOTEsMTAgKzExOTQsMTcgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENv
bXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8vIExvYWQgVk0uCisgICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaW50ZXIgPSBwaW5uZWRSZWdzLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7
CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgaml0
LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFz
ayksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBNYXJr
ZWRCbG9jazo6b2Zmc2V0T2ZWTSgpKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7
CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZVBvaW50ZXIsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgdG9wSlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pbnRlcik7CisKICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAgICAgICBH
UFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAg
IGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7Ci0gICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKworICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3ModG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciwgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CiAgICAgICAg
IGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzOwogICAgICAg
ICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwogICAgICAgICBBU1NFUlQoIXNpemVSZWdz
WzBdLnNpemVPZmZzZXQpOyAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB3ZSBzdGFydCBh
dCAwLCBhbmQgY2FsY3VsYXRlcyBzdWJzZXF1ZW50IHNpemUgcmVnaXN0ZXJzIHJlbGF0aXZlIHRv
IDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggZmI2
NzY1N2VhNDBjZWNkMGI4Njg4MGViYjI0YzdlYTc5MTNmOWMzMy4uMGUwZjM3ZGM2NjFjYjNjYmNj
ZTE2ZDBjN2MzMTQwNDA4ZTFhMmM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CaW5kaW5nLmNwcApAQCAtNjYsOCArNjYsMTAgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAog
CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgaml0LnN0b3JlNjQoSklUOjpU
cnVzdGVkSW1tMzIoMCksIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0
ZXIpKSkpOyAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQotICAgIGppdC5zdG9yZVB0cihKSVQ6
OlRydXN0ZWRJbW1QdHIodm0tPndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKSksIEpJVDo6QWRk
cmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCisgICAgaml0LmxvYWRXYXNt
Q29udGV4dChHUFJJbmZvOjpyZWdUMCk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2Fs
bGVlKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1Qw
LCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIHsK
ICAgICAgICAgYm9vbCBoYXNCYWRJNjRVc2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5NSwxNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5r
SW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsKICAgICAg
ICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KCk7CiAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKCk7
CiAgICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgICAgICAg
ICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYykg
LT4gdm9pZCB7CisgICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSosIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiB3YXNtQ29udGV4dCkgLT4gdm9pZCB7CiAgICAgICAgICAgICAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgq
dm0pLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBn
bG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFT
Q0lJTGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRv
IGFuIGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCmluZGV4IDY0ODRjZDRmNTI2NmEz
OGU4MjE1NGE3MWQ3MDUyYmFhZWU0ODk0MjUuLmE3YjhhMmNiM2VjZWNiYjMwY2RmY2Q2MmMwZjQ0
NDMyZGVlYTJkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5j
cHAKQEAgLTQwLDcgKzQwLDYgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRl
eHQoVk0mIHZtKQogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKICAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVh
ZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICNlbmRpZgotICAg
IC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwogICAgIHJldHVybiB2bS53
YXNtQ29udGV4dDsKIH0KIApAQCAtNTAsNyArNDksNiBAQCB2b2lkIHN0b3JlV2FzbUNvbnRleHQo
Vk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKICAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNf
ZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNl
KSk7CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBh
bGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMK
ICAgICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA4YWMwODY2
Mjc4YjUxMzkzYjY2OWVhMDlhN2I1NDhkNmQ5YTc2YjE0Li5kYzQwMzI1MTMzYmFlNzUwZTY2M2Nh
OGEyMTY2ODQ5NWVhYWIxYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKQEAgLTQwLDM3ICs0MCw0NiBAQCBjb25zdCBQ
aW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZzsKICAgICBzdGQ6OmNh
bGxfb25jZShzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnLCBbXSAoKSB7CiAgICAgICAgIFZl
Y3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwotICAgICAgICBHUFJS
ZWcgYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQ
b2ludGVyID0gSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1
cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlciwgYW5kIHdlIHNob3VsZCBh
bGxvdyBkaWZmZXJlbnQKICAgICAgICAgLy8gICAgICAgIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHRv
IGhhdmUgZGlmZmVyZW50IHBpbnMuIFJpZ2h0IG5vdyB3ZSB0YWtlIGEgdmVjdG9yIHdpdGggb25s
eSBvbmUgZW50cnkuCiAgICAgICAgIC8vICAgICAgICBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUg
c2l6ZSByZWdpc3Rlciwgd2UgY2FuIGhhdmUgb25lIGZvciBlYWNoIGxvYWQgc2l6ZSBjbGFzcy4K
ICAgICAgICAgLy8gICAgICAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2Mjk1MgogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAw
IH07Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNp
emVzLnNpemUoKSArIDE7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVy
cyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDI7CiAgICAgICAgIGpzY0NhbGxpbmdDb252ZW50aW9u
KCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7CiAgICAgICAg
ICAgICBpZiAoIXJlZy5pc0dQUigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CiAgICAgICAgICAgICBpZiAoIXJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5u
ZWRSZWdpc3RlcnMgPT0gMikgeworICAgICAgICAgICAgICAgIHRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaW50ZXIgPSBncHI7CisgICAgICAgICAgICAgICAgcmVtYWluaW5nUGlubmVkUmVnaXN0
ZXJzLS07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7CiAgICAgICAgICAgICAgICAg
YmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7CiAgICAgICAgICAgICAgICAgcmVtYWluaW5nUGlubmVk
UmVnaXN0ZXJzLS07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzaXplUmVn
aXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3Rl
cnMgLSAxXSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZXNbLS1yZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMgLSAyXSB9KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgQVNTRVJU
KCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3Rl
ckluZm8uY29uc3RydWN0KFdURk1vdmUoc2l6ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVy
KTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNp
emVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlciwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
UG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
LmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0
b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1l
bW9yeVBvaW50ZXIpCitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0
b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1l
bW9yeVBvaW50ZXIsIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKQogICAg
IDogc2l6ZVJlZ2lzdGVycyhXVEZNb3ZlKHNpemVSZWdpc3RlcnMpKQogICAgICwgYmFzZU1lbW9y
eVBvaW50ZXIoYmFzZU1lbW9yeVBvaW50ZXIpCisgICAgLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFu
Y2VQb2ludGVyKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKaW5k
ZXggNmRlMDcwYTEwNDUyZmY2YmIzYzVjMjUwNDExZjEwZTkxMzg5ZTRhMi4uMjhhODE1NmMxZDIy
ZWE0YmIyZGIwYzA0Nzk5YmIxOTUzNWUwNGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKQEAgLTQzLDggKzQzLDkgQEAgc3Ry
dWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewogc3RydWN0IFBpbm5lZFJlZ2lzdGVySW5mbyB7
CiAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+IHNpemVSZWdpc3RlcnM7CiAgICAg
R1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyOwogICAgIHN0YXRpYyBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIGdldCgp
OwotICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4m
JiwgR1BSUmVnKTsKKyAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdp
c3RlckluZm8+JiYsIEdQUlJlZywgR1BSUmVnKTsKIH07CiAKIGNsYXNzIE1lbW9yeUluZm9ybWF0
aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDFjMTFiMGNhNjVjOTE3NDJmOGU0ODEzYzI0ZDk3NWY2
NWVlYmFhMTguLjNiN2Y3Yjg3NDZmZjhkNDIxNDAxNzhjYTdiNWVlYWVkMDM0NjkyYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEs
NiArODIsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsCiAKICAgICBtX2NvZGVCbG9jay5zZXQo
dm0sIHRoaXMsIG1vZHVsZS0+Y29kZUJsb2NrKCkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LnNldCh2bSwgdGhpcywgbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKKyAgICBtX2NhbGxlZS5z
ZXQodm0sIHRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKHZtLCB2bS53ZWJBc3Nl
bWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCksIHRoaXMpKTsKICAgICBwdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhwb3J0cyIpLCBtb2R1bGVOYW1lc3BhY2VP
YmplY3QsIE5vbmUpOwogfQogCkBAIC05OSw2ICsxMDEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21lbW9yeSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9jYWxsZWUpOwogICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRo
aXNPYmplY3QtPm1vZHVsZSgpLT5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6ZSgpKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9udW1JbXBvcnRGdW5j
dGlvbnM7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmltcG9ydEZ1
bmN0aW9uKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXggZTIyODQ5Njk2NzIwNWEzMTM2Yzg4M2JiZGUzMjZh
ZGJjNzExMTMwZC4uNDJhYTFiMzVkMWIyYTZmOTM5YjlkMzI5NjZiNWYzN2U0ZWU2NDFkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKK2NsYXNzIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZTsKIAogY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTk3LDYgKzk4LDcgQEAgY2xh
c3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
IAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX21lbW9yeSk7IH0KICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJB
c3NlbWJseUluc3RhbmNlLCBtX3RhYmxlKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNl
LCBtX2NhbGxlZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFscygpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fZ2xvYmFscyk7
IH0KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgeyByZXR1cm4g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8SlNDZWxsPik+KHNp
emVvZihKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZJbXBvcnRGdW5jdGlvbihzaXplX3QgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNl
dE9mSW1wb3J0RnVuY3Rpb25zKCkgKyBpbXBvcnRGdW5jdGlvbk51bSAqIHNpemVvZihzaXplb2Yo
V3JpdGVCYXJyaWVyPEpTQ2VsbD4pKTsgfQpAQCAtMTE3LDYgKzExOSw3IEBAIGNsYXNzIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dDsKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7CiAgICAg
V3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlUYWJsZT4gbV90YWJsZTsKKyAgICBXcml0ZUJhcnJp
ZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKICAgICBNYWxsb2NQdHI8dWludDY0
X3Q+IG1fZ2xvYmFsczsKICAgICB1bnNpZ25lZCBtX251bUltcG9ydEZ1bmN0aW9uczsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlND
YWxsZWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlLmNwcAppbmRleCA0ZTg5MWEwOWEyMGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFm
Li4zYzE3NWY1M2RkNjk1NGYyNmZhNTVhMDk0N2U3ZjExNzFiNTNlZGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5j
cHAKQEAgLTI5LDE1ICsyOSwxNiBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRvSlNDYWxsZWU6
OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5VG9KU0NhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRvSlND
YWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCitXZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdGFuY2UpCiB7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBX
ZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIHN0cnVjdHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hD
cmVhdGlvbih2bSk7CisgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFuY2UpOwog
ICAgIHJldHVybiBjYWxsZWU7CiB9CiAKQEAgLTUxLDE1ICs1MiwxOSBAQCBXZWJBc3NlbWJseVRv
SlNDYWxsZWU6OldlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgbV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKIH0K
IAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQordm9p
ZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUqIHRoaXNPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsKLSAgICB0aGlz
T2JqZWN0LT5XZWJBc3NlbWJseVRvSlNDYWxsZWU6On5XZWJBc3NlbWJseVRvSlNDYWxsZWUoKTsK
KyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnN0YW5jZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eVRvSlNDYWxsZWUuaAppbmRleCA0OTZjODg1NzZjMzlmNzIzMjcyMzk4YTU2NjVjOTA0Y2M1YzFi
MTIzLi4yNjRjOTQ0Njk1YjI3MjlmMWM2MzdkYzE1ZTBhYzg1YzJhYTZjNDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUu
aApAQCAtMzEsMjEgKzMxLDI3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U7CisKIGNsYXNzIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSA6IHB1YmxpYyBK
U0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSog
Y3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKKworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UoKSB7IHJldHVybiBtX2lu
c3RhbmNlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYp
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsK
ICAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIFdyaXRl
QmFycmllcjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305426</attachid>
            <date>2017-03-26 10:50:13 -0700</date>
            <delta_ts>2017-03-26 10:58:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327025011.patch</filename>
            <type>text/plain</type>
            <size>36465</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li5mNjgxMDQ2YmZkMmY3Mjk5
NDU2MTA0OTAzMjQwMTY0ZjBiZDJlY2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NSBAQAorMjAxNy0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9T
dGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpn
ZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNt
V3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6
Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDoKKyAgICAg
ICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4
dCk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpnZXRQaW5uZWRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5u
ZWRSZWdpc3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVy
SW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKiB3
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWxsZWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseVRvSlNDYWxsZWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0Nh
bGxlZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6
OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmg6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6aW5zdGFuY2UpOgor
CiAyMDE3LTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IHdhc20gYnkgcmV0dXJuaW5nIGFmdGVyIHdlIGRvIFRMUy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNl
MzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwx
MSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25z
dCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZW
TSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBt
X3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRv
bUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRl
MjFiNjE4OGY5Yjc1ZC4uZGEwZDEwZTcxMjUwMjgzNWUyZTQwYjkwYTZjODNiYmFmZDU0ZGM2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAt
MzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJ
bmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFz
ZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29u
dmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAg
ZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShG
QVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7
CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09O
VEVYVF9LRVkpLCBkc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92
ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaW50ZXIsIGRzdCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250
ZXh0KEdQUlJlZyBzcmMpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0cihz
cmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdpc3Rl
ckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworfQorCitib29s
IEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rl
cigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFj
cm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIz
OWNlYjliMjA5NzI1NDQ2ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2
MjIwNzQ5MjdkMmE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKQEAgLTE2MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDog
cHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBp
bnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRX
YXNtQ29udGV4dChHUFJSZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQot
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAg
ICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9L
RVkpLCBkc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAg
ICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQ
dHIoJm1fdm0tPndhc21Db250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNt
Q29udGV4dChHUFJSZWcgc3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09O
VEVYVF9LRVkpKTsKLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVs
c2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjk3NzMKLSAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwot
ICAgIH0KLQotICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9h
ZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAg
ICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRz
dCk7CisgICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBi
b29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0
aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2Vu
ZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBt
X3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZk
Y2ZjMWEzZDc3MWEwNjMxMzczZGQyNTc5OWI1YS4uMzAxMGY4NjAwY2M4Mjg1NDUzNzFhYzkxMTNj
NmQ3MzA2MDFjODNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01
ODAsOCArNTgwLDggQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0lu
Zm8mIGNhbGxMaW5rSW5mbykKIHN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZN
JiB2bSwgSlNDZWxsKiBjYWxsZWUpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIC8v
IFRoZSBXZWJBc3NlbWJseSAtPiBKUyBzdHViIHNldHMgaXQgY2FsbGVyIGZyYW1lJ3MgY2FsbGVl
IHRvIGEgc2luZ2xldG9uIHdoaWNoIGxpdmVzIG9uIHRoZSBWTS4KLSAgICByZXR1cm4gY2FsbGVl
ID09IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKTsKKyAgICAvLyBUaGUgV2ViQXNzZW1i
bHkgLT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZSBpbnN0YW5jZS4KKyAgICByZXR1cm4gY2FsbGVlLT5pbmhlcml0cyh2bSwg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjppbmZvKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
dm0pOwogICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwpAQCAtNTg5LDEzICs1ODksMTMgQEAgc3Rh
dGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiB9CiAKLXN0YXRpYyBKU0NlbGwqIHdlYkFz
c2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0Nl
bGwqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJB
c3NlbWJseS5JbnN0YW5jZSBzaGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHku
TW9kdWxlLCB3aGljaCBhcmUgdGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICBy
ZXR1cm4gbG9hZFdhc21Db250ZXh0KHZtKS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxX
ZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjYWxsZWUpLT5pbnN0YW5jZSgpLT5tb2R1bGUoKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGVlKTsKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIGxpbmtG
b3IoCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJs
b2NrKCk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFs
aWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2Fs
bGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJh
bWUtPmNhbGxlZSgpKSA6IGNhbGxlckNvZGVCbG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAg
ICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5rZWQoKSk7CkBAIC03MzUsNyArNzM1LDcgQEAg
dm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAgICAgLy8g
V2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAg
ICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDog
Y2FsbGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2Vi
QXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwog
ICAgIEFTU0VSVChvd25lcik7CiAKICAgICBDYWxsVmFyaWFudExpc3QgbGlzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAwODU3ZTM0YmYx
ZDJiMDQ2ZDdhYmNhNDg5MTIxYzFmMzhjOTAyMmZjLi4yMTUyNGU1ZmE1NzQ5NjliMzVjOGVlNjA2
YjMwZGU5NGQzZTI2NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwCkBAIC0xMTQ4LDE2ICsxMTQ4LDE3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIH0KIAog
ICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
ICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CiAgICAgaml0Lmp1bXBU
b0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgIHZvaWQgKCp0aHJvd1dhc21FeGNlcHRpb24pKEV4
ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgV2Fz
bTo6RXhjZXB0aW9uVHlwZSB0eXBlKSB7CisgICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbiko
RXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKikg
PSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIHsKICAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2Fk
V2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogCiAgICAg
ICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2ViQXNzZW1ibHlS
dW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlS
dW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9uVHlw
ZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBl
cnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0Zy
YW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmlu
ZGV4IDZkNDc4NjRjOTc4ZGMyN2E0ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNk
NGIyYzRiZjdmYzA3NjRhNWUxMDQ1NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNr
RnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1l
OwogICAgIGlmIChtX2NhbGxlZSkgeworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNh
bGxlZSgqbV9jYWxsZWUtPnZtKCkpKQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
PHdhc20+Iik7CiAgICAgICAgIGlmIChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAg
IG5hbWUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1f
Y2FsbGVlLmdldCgpKSkuaW1wbCgpOwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlX
YXNtQ2FsbGVlKCptX2NhbGxlZS0+dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCI8d2FzbT4iKTsKICAgICB9CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0
cmluZygpIDogbmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4
NTExNTQyYjc3ZGZjOGU2ZjJiZWFiZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVj
ODk0NGJkNDRmMTEyNWMxOWZlMTcyNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC0yNDAsNyArMjQwLDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhl
YXBUeXBlKQogICAgIHdlYkFzc2VtYmx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJB
c3NlbWJseUNhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFz
c2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9j
azo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5
VG9KU0NhbGxlZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlz
LCB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdF
eHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkz
M2NlYTM4YWI1ZjAyMzE4NDQ1OWNiNjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2
ZDVmYWEwOWNhM2QxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcg
KzMzNiw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVi
bGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2Vi
QXNzZW1ibHlDYWxsZWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1i
bHlUb0pTQ2FsbGVlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5
Q29kZUJsb2NrU3RydWN0dXJlOwotICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0Nh
bGxlZTsKICNlbmRpZgogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAg
LTQ5MCw2ICs0ODksMTEgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihWTSwgdGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgd2FzbUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQg
cmVzdG9yZVByZXZpb3VzRXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2Vw
dGlvbihleGNlcHRpb24pOyB9CiAKICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9s
YXN0RXhjZXB0aW9uID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMz
NWYzMGRhMmU5NmQzYTIuLjZkMTdhYzQwYjI4NTk5ZWRmYWNiNTcyODc4YjEzYWExNjY5MGYwYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKQEAgLTIyNyw2ICsyMjcsNyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExp
c3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0
IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAg
ICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOworICAgIEdQUlJlZyBtX3RvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZVBvaW50ZXI7CiAgICAgVmFsdWUqIG1femVyb1ZhbHVlc1tudW1UeXBlc107CiAgICAg
VmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CkBAIC0yODMsNyArMjg0
LDkgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKICAgICAvLyBGSVhNRSB3ZSBkb24ndCByZWFs
bHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhlcmUgaWYgdGhlcmUncyBubyBtZW1vcnkuIEl0IG1h
a2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2ltcGxlciBmb3Igbm93LiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjIzCiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJ
bmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICBtX21lbW9y
eUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOworICAgIG1fdG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlUG9pbnRlcjsKICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlCYXNlR1BSKTsKKyAg
ICBtX3Byb2MucGluUmVnaXN0ZXIobV90b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsK
ICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAg
ICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lz
dGVyOwogICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKQEAgLTMwNywxMiArMzEwLDEyIEBAIHN0cnVjdCBNZW1v
cnlCYXNlQW5kU2l6ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1zdGF0aWMgTWVtb3J5QmFz
ZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFBy
b2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgTWVtb3J5QmFzZUFuZFNp
emUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2Ms
IEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBibG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAK
LSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5t
ZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiBy
ZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
bG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVv
Zih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
PihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQq
KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIp
LT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVn
ZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsK
ICAgICByZXN1bHQuYmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlN
ZW1vcnk6Om9mZnNldE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmpl
Y3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTQxOSwxMiArNDIy
LDExIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVz
dWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBk
ZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGlu
dDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRl
KiBleGVjLCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01l
bW9yeSkgKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMyX3QpID0gW10g
KEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCwgaW50
MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAg
ICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5tZW1vcnko
KTsKKyAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdhc21Db250ZXh0
LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAgcmV0dXJu
IC0xOwpAQCAtNDQwLDcgKzQ0Miw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9y
eShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogICAgIHJl
c3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQz
MiwgT3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSks
Ci0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOworICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4o
KSksIG1faW5zdGFuY2VWYWx1ZSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xv
YmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKIApAQCAtNDQ5LDcgKzQ1MSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAog
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5
QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2Nr
KTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5j
ZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJf
dCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXpl
ID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0
byBiZSBjb3JyZWN0LiIpOwpAQCAtMTA4Myw2ICsxMDg1LDggQEAgc3RhdGljIHZvaWQgY3JlYXRl
SlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBX
YXNtSW4KICAgICBSZWdpc3RlclNldCB0b1NhdmU7CiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJ
bmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICB0b1NhdmUu
c2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXIpOworICAgIGlmICghdXNlRmFzdFRMUygp
KQorICAgICAgICB0b1NhdmUuc2V0KHBpbm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUluc3RhbmNl
UG9pbnRlcik7CiAgICAgZm9yIChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZv
IDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzKQogICAgICAgICB0b1NhdmUuc2V0KHJlZ0luZm8u
c2l6ZVJlZ2lzdGVyKTsKIApAQCAtMTE5MSwxMCArMTE5NSwyNCBAQCBzdGF0aWMgdm9pZCBjcmVh
dGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQs
IFdhc21JbgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRklYTUU6IEpTV2ViQXNzZW1ibHlD
YWxsZWUgc2hvdWxkIGhhdmUgYSBwb2ludGVyIHRvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBpbnN0
ZWFkLgorICAgIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gcGlubmVk
UmVncy50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyOworICAgIGlmICghdXNlRmFzdFRM
UygpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIp
OworICAgICAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRC
bG9jazo6YmxvY2tNYXNrKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSgpKSwgdG9wSlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pbnRlcik7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBWTTo6d2FzbUNvbnRleHRPZmZz
ZXQoKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgIH0KKwogICAgIGlm
ICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVn
cy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNlTWVt
b3J5KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1v
cnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkp
OworCisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9y
eSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7
CisgICAgICAgIH0KICAgICAgICAgY29uc3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNp
emVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAgICAg
ICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0uc2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29k
ZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAsIGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSBy
ZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
aW5kaW5nLmNwcAppbmRleCBmYjY3NjU3ZWE0MGNlY2QwYjg2ODgwZWJiMjRjN2VhNzkxM2Y5YzMz
Li4wZTBmMzdkYzY2MWNiM2NiY2NlMTZkMGM3YzMxNDA0MDhlMWEyYzkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC02Niw4ICs2NiwxMCBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5m
bz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAg
ICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0ZWRJbW0zMigwKSwgSklUOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7IC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2Rl
QmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0g
ICAgaml0LnN0b3JlUHRyKEpJVDo6VHJ1c3RlZEltbVB0cih2bS0+d2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmdldCgpKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7
CiAKKyAgICBqaXQubG9hZFdhc21Db250ZXh0KEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6cmVnVDAsIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVn
aXN0ZXIpKSkpOwogCiAgICAgewogICAgICAgICBib29sIGhhc0JhZEk2NFVzZSA9IGZhbHNlOwpA
QCAtOTMsMTYgKzk1LDE3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMo
Vk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgaWYgKGhh
c0JhZEk2NFVzZSkgewogICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZy
YW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgaml0
LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgYXV0
byBjYWxsID0gaml0LmNhbGwoKTsKICAgICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5k
bGVyKCk7CiAKLSAgICAgICAgICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKikgPSBb
XSAoRXhlY1N0YXRlKiBleGVjKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHZvaWQgKCp0aHJvd0Jh
ZEk2NCkoRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRl
KiBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0KSAtPiB2b2lkIHsKICAg
ICAgICAgICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgICAgICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSgqdm0pOwotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9i
amVjdCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3IoKS0+
ZXJyb3JTdHJ1Y3R1cmUoKSwgQVNDSUlMaXRlcmFsKCJpNjQgbm90IGFsbG93ZWQgYXMgcmV0dXJu
IHR5cGUgb3IgYXJndW1lbnQgdG8gYW4gaW1wb3J0ZWQgZnVuY3Rpb24iKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAK
aW5kZXggNjQ4NGNkNGY1MjY2YTM4ZTgyMTU0YTcxZDcwNTJiYWFlZTQ4OTQyNS4uYTdiOGEyY2Iz
ZWNlY2JiMzBjZGZjZDYyYzBmNDQ0MzJkZWVhMmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Db250ZXh0LmNwcApAQCAtNDAsNyArNDAsNiBAQCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5RmFzdFRMUygpKQogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhU
X0tFWSkpOwogI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUg
dG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NzczCiAgICAgcmV0dXJuIHZtLndhc21Db250ZXh0OwogfQogCkBAIC01MCw3ICs0OSw2IEBAIHZv
aWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UpCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQogICAgICAgICBf
cHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oaW5zdGFuY2UpKTsKICNlbmRpZgotICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMg
c3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTc3MwogICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uY3BwCmluZGV4IDhhYzA4NjYyNzhiNTEzOTNiNjY5ZWEwOWE3YjU0OGQ2ZDlhNzZiMTQuLjZj
ODU5YTM4Yjc0ZTY4YTA0Zjg2NjZhMDBmNjcwODk0YWE3ZWZiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcApAQCAtMzQs
NDMgKzM0LDU3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRp
YyBWZWN0b3I8R1BSUmVnPiBnZXRQaW5uZWRSZWdpc3RlcnModW5zaWduZWQgcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzKQoreworICAgIFZlY3RvcjxHUFJSZWc+IHJlZ2lzdGVyczsKKyAgICBqc2ND
YWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVn
IHJlZykgeworICAgICAgICBpZiAoIXJlZy5pc0dQUigpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOworICAgICAgICBpZiAoIXJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnM7
CisgICAgICAgIHJlZ2lzdGVycy5hcHBlbmQoZ3ByKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVn
aXN0ZXJzOworfQorCiBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lzdGVySW5m
bzo6Z2V0KCkKIHsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFBpbm5lZFJlZ2lzdGVy
SW5mbz4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRp
Y1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWcsIFtdICgpIHsKICAgICAgICAgVmVjdG9yPFBpbm5lZFNp
emVSZWdpc3RlckluZm8+IHNpemVSZWdpc3RlcnM7Ci0gICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5
UG9pbnRlcjsKKyAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyID0gSW52YWxpZEdQUlJl
ZzsKKyAgICAgICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIgPSBJbnZh
bGlkR1BSUmVnOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRo
YW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyLCBhbmQgd2Ugc2hvdWxkIGFsbG93IGRpZmZlcmVu
dAogICAgICAgICAvLyAgICAgICAgV2ViQXNzZW1ibHkuSW5zdGFuY2UgdG8gaGF2ZSBkaWZmZXJl
bnQgcGlucy4gUmlnaHQgbm93IHdlIHRha2UgYSB2ZWN0b3Igd2l0aCBvbmx5IG9uZSBlbnRyeS4K
ICAgICAgICAgLy8gICAgICAgIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVy
LCB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVhY2ggbG9hZCBzaXplIGNsYXNzLgogICAgICAgICAvLyAg
ICAgICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUy
CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKLSAgICAgICAg
dW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsg
MTsKLSAgICAgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMu
Zm9yRWFjaChbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIo
KTsKLSAgICAgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgewotICAgICAg
ICAgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOwotICAgICAgICAgICAgICAgIHJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycy0tOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzIC0gMV0gfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIEFTU0VSVCghcmVt
YWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
LmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlcik7Cisg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6
ZSgpICsgMTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICArK251bWJl
ck9mUGlubmVkUmVnaXN0ZXJzOworICAgICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdzID0g
Z2V0UGlubmVkUmVnaXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0ZXJzKTsKKworICAgICAgICBi
YXNlTWVtb3J5UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKKyAgICAgICAgaWYgKCF1
c2VGYXN0VExTKCkpCisgICAgICAgICAgICB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVy
ID0gcGlubmVkUmVncy50YWtlTGFzdCgpOworCisgICAgICAgIEFTU0VSVChwaW5uZWRTaXplcy5z
aXplKCkgPT0gcGlubmVkUmVncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcGlubmVkU2l6ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBzaXplUmVnaXN0ZXJz
LmFwcGVuZCh7IHBpbm5lZFJlZ3NbaV0sIHBpbm5lZFNpemVzW2ldIH0pOworICAgICAgICBzdGF0
aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0KFdURk1vdmUoc2l6ZVJlZ2lzdGVycyksIGJh
c2VNZW1vcnlQb2ludGVyLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKICAgICB9
KTsKIAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uZ2V0KCk7CiB9CiAKLVBp
bm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcikKK1Bp
bm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BS
UmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpCiAgICAgOiBzaXplUmVnaXN0ZXJz
KFdURk1vdmUoc2l6ZVJlZ2lzdGVycykpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVt
b3J5UG9pbnRlcikKKyAgICAsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIodG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA2ZGUwNzBhMTA0NTJm
ZjZiYjNjNWMyNTA0MTFmMTBlOTEzODllNGEyLi4xMWYzYjQzYTAwNmQ4NWE4ODA4NjQ1MTI1MTY3
ZTEwOGI3ZDYzMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uaApAQCAtNDMsOCArNDMsOSBAQCBzdHJ1Y3QgUGlubmVkU2l6ZVJl
Z2lzdGVySW5mbyB7CiBzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZvIHsKICAgICBWZWN0b3I8UGlu
bmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKICAgICBHUFJSZWcgYmFzZU1lbW9y
eVBvaW50ZXI7CisgICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAg
ICAgc3RhdGljIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgZ2V0KCk7Ci0gICAgUGlubmVkUmVn
aXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmLCBHUFJSZWcpOworICAg
IFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BS
UmVnLCBHUFJSZWcpOwogfTsKIAogY2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewpAQCAtNzMsNiAr
NzQsMTUgQEAgY2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewogICAgIGJvb2wgbV9pc0ltcG9ydCB7
IGZhbHNlIH07CiB9OwogCitpbmxpbmUgYm9vbCB1c2VGYXN0VExTKCkKK3sKKyNpZiBFTkFCTEUo
RkFTVF9UTFNfSklUKQorICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMo
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0FTTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4
IDFjMTFiMGNhNjVjOTE3NDJmOGU0ODEzYzI0ZDk3NWY2NWVlYmFhMTguLjNiN2Y3Yjg3NDZmZjhk
NDIxNDAxNzhjYTdiNWVlYWVkMDM0NjkyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNp
bmNsdWRlICJXZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEsNiArODIsNyBAQCB2b2lkIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxl
KiBtb2R1bGUsCiAKICAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG1vZHVsZS0+Y29kZUJs
b2NrKCkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldCh2bSwgdGhpcywgbW9kdWxl
TmFtZXNwYWNlT2JqZWN0KTsKKyAgICBtX2NhbGxlZS5zZXQodm0sIHRoaXMsIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZTo6Y3JlYXRlKHZtLCB2bS53ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUu
Z2V0KCksIHRoaXMpKTsKICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCAiZXhwb3J0cyIpLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIE5vbmUpOwogfQogCkBAIC05
OSw2ICsxMDEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX21lbW9yeSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90
YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAgIHZp
c2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1vZHVsZSgpLT5tb2R1
bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdGhpc09iamVjdC0+bV9udW1JbXBvcnRGdW5jdGlvbnM7ICsraSkKICAgICAgICAgdmlz
aXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmltcG9ydEZ1bmN0aW9uKGkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5k
ZXggZTIyODQ5Njk2NzIwNWEzMTM2Yzg4M2JiZGUzMjZhZGJjNzExMTMwZC4uNDJhYTFiMzVkMWIy
YTZmOTM5YjlkMzI5NjZiNWYzN2U0ZWU2NDFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTM3LDYgKzM3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xh
c3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKK2NsYXNzIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKIAog
Y2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKIHB1YmxpYzoKQEAgLTk3LDYgKzk4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNl
IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUlu
c3RhbmNlLCBtX21lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVGFibGUo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX3RhYmxl
KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2NhbGxlZSk7IH0KICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZihXcml0ZUJhcnJpZXI8SlNDZWxsPik+KHNpemVvZihKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UpKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihzaXplX3Qg
aW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgKyBp
bXBvcnRGdW5jdGlvbk51bSAqIHNpemVvZihzaXplb2YoV3JpdGVCYXJyaWVyPEpTQ2VsbD4pKTsg
fQpAQCAtMTE3LDYgKzExOSw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBXcml0ZUJhcnJpZXI8SlNX
ZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlUYWJsZT4gbV90YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVl
PiBtX2NhbGxlZTsKICAgICBNYWxsb2NQdHI8dWludDY0X3Q+IG1fZ2xvYmFsczsKICAgICB1bnNp
Z25lZCBtX251bUltcG9ydEZ1bmN0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGQxYTgwMWMzZWM5
MTFhMTlmMDZhYjc5Zjk4YTMzOTAxZjVjNTdjNTEuLjg4YjYxZDVlMjJiYjU2NzM1ZjI5MDk2ODFm
MzI2MTc4OWJhM2E4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0xNTMsNiArMTUzLDcgQEAgV2ViQXNzZW1i
bHlGdW5jdGlvbiogV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE8KICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+
d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24q
IGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlGdW5jdGlv
bj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCB3YXNtRW50cnlwb2ludCwgc2lnbmF0dXJlSW5kZXgpOwogICAgIGZ1bmN0aW9uLT5maW5p
c2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lLCBpbnN0YW5jZSwganNFbnRy
eXBvaW50LCB3YXNtRW50cnlwb2ludCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZnVuY3Rp
b24tPmlzTGFyZ2VBbGxvY2F0aW9uKCksICJXZWJBc3NlbWJseUZ1bmN0aW9uIHNob3VsZCBiZSBh
bGxvY2F0ZWQgbm90IGluIGxhcmdlIGFsbG9jYXRpb24gc2luY2UgaXQgaXMgSlNDYWxsZWUuIik7
CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcAppbmRleCA0ZTg5MWEwOWEy
MGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFmLi4zYzE3NWY1M2RkNjk1NGYyNmZhNTVhMDk0
N2U3ZjExNzFiNTNlZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKQEAgLTI5LDE1ICsyOSwxNiBAQAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENs
YXNzSW5mbyBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5VG9K
U0NhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitXZWJBc3NlbWJseVRvSlND
YWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJB
c3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIHN0
cnVjdHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgY2FsbGVlLT5m
aW5pc2hDcmVhdGlvbih2bSwgaW5zdGFuY2UpOwogICAgIHJldHVybiBjYWxsZWU7CiB9CiAKQEAg
LTUxLDE1ICs1MiwxOSBAQCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OldlYkFzc2VtYmx5VG9KU0Nh
bGxlZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBXZWJBc3NlbWJseVRv
SlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9pbnN0YW5j
ZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBX
ZWJBc3NlbWJseVRvSlNDYWxsZWUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJs
eVRvSlNDYWxsZWUqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5XZWJBc3NlbWJseVRvSlNDYWxs
ZWU6On5XZWJBc3NlbWJseVRvSlNDYWxsZWUoKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9p
bnN0YW5jZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCA0OTZjODg1
NzZjMzlmNzIzMjcyMzk4YTU2NjVjOTA0Y2M1YzFiMTIzLi4yNjRjOTQ0Njk1YjI3MjlmMWM2Mzdk
YzE1ZTBhYzg1YzJhYTZjNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaApAQCAtMzEsMjEgKzMxLDI3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisKIGNsYXNzIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3Rh
dGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7Ci0g
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305427</attachid>
            <date>2017-03-26 10:58:41 -0700</date>
            <delta_ts>2017-03-26 11:54:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327025839.patch</filename>
            <type>text/plain</type>
            <size>38095</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li44N2U5ZmNmZDY1NWI4NjMy
NGRlZGViNDE5ODMxM2U1ZWIyNzY2NDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxNy0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9T
dGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6
ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAg
ICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToK
KyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFdhc21D
b250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgICogd2Fz
bS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRQaW5u
ZWRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86Omdl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0
ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorICAgICAg
ICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmRlc3Ryb3kpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmg6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6aW5zdGFuY2UpOgorCiAyMDE3LTAzLTI1ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHdhc20gYnkgcmV0dXJu
aW5nIGFmdGVyIHdlIGRvIFRMUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNlMzRjNWJjZGMyMjcuLjU2ZDVj
YmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwxMSBAQCBjbGFzcyBNYXJrZWRC
bG9jayB7CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2b2lkKiBwKTsKICAgICBI
ZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNp
b247IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpCisgICAgeworICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3ZtKTsKKyAgICB9CiAgICAg
CiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBh
dG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAKaW5kZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRlMjFiNjE4OGY5Yjc1ZC4uZGEw
ZDEwZTcxMjUwMjgzNWUyZTQwYjkwYTZjODNiYmFmZDU0ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJbmZvcm1hdGlvbi5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJz
OjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBAIC03NjYsNiAr
NzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFu
KEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAgZG9uZS5saW5rKHRoaXMpOwog
fQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRX
YXNtQ29udGV4dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAg
aWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIGxvYWRGcm9t
VExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShXYXNtOjpQaW5uZWRSZWdp
c3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIGRzdCk7Cit9
CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCit7
CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0VExTKCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRG
b3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorICAgIG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVyczo6
bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkp
CisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6
OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMo
KSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIzOWNlYjliMjA5NzI1NDQ2ZDNj
Y2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2MzYs
NDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1i
bGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BS
UmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJSZWcg
ZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExTUHRy
KGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNhdmUg
dGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21Db250
ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcgc3Jj
KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0
cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKLSNlbmRp
ZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQ
SUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICAg
ICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwotICAgIH0KLQotICAgIHN0YXRp
YyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAgIHsK
LSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RvcmVU
b1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCk7CisgICAgdm9pZCBzdG9y
ZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4
dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZkY2ZjMWEzZDc3MWEwNjMxMzcz
ZGQyNTc5OWI1YS4uMzAxMGY4NjAwY2M4Mjg1NDUzNzFhYzkxMTNjNmQ3MzA2MDFjODNiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01ODAsOCArNTgwLDggQEAgc3Rh
dGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykK
IHN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxs
ZWUpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIC8vIFRoZSBXZWJBc3NlbWJseSAt
PiBKUyBzdHViIHNldHMgaXQgY2FsbGVyIGZyYW1lJ3MgY2FsbGVlIHRvIGEgc2luZ2xldG9uIHdo
aWNoIGxpdmVzIG9uIHRoZSBWTS4KLSAgICByZXR1cm4gY2FsbGVlID09IHZtLndlYkFzc2VtYmx5
VG9KU0NhbGxlZS5nZXQoKTsKKyAgICAvLyBUaGUgV2ViQXNzZW1ibHkgLT4gSlMgc3R1YiBzZXRz
IGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSBpbnN0
YW5jZS4KKyAgICByZXR1cm4gY2FsbGVlLT5pbmhlcml0cyh2bSwgV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlOjppbmZvKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIFVOVVNFRF9Q
QVJBTShjYWxsZWUpOwpAQCAtNTg5LDEzICs1ODksMTMgQEAgc3RhdGljIGJvb2wgaXNXZWJBc3Nl
bWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCiB9CiAKLXN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZt
KQorc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKIHsKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJBc3NlbWJseS5JbnN0YW5jZSBz
aGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHkuTW9kdWxlLCB3aGljaCBhcmUg
dGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICByZXR1cm4gbG9hZFdhc21Db250
ZXh0KHZtKS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxs
ZWUqPihjYWxsZWUpLT5pbnN0YW5jZSgpLT5tb2R1bGUoKTsKICNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGVlKTsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFTUJMWSkKQEAgLTYxMiw3ICs2MTIsNyBAQCB2b2lkIGxpbmtGb3IoCiAgICAgQ29kZUJsb2Nr
KiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAKICAgICAvLyBX
ZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAg
IEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUt
PmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJsb2NrOworICAg
IEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUt
PmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6IGNh
bGxlckNvZGVCbG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlu
a0luZm8uaXNMaW5rZWQoKSk7CkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBo
aWNDYWxsKAogICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
KHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMg
c3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93bmVyID0g
aXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJsb2NrOwor
ICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25lcihjYWxs
ZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7
CiAKICAgICBDYWxsVmFyaWFudExpc3QgbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAwODU3ZTM0YmYxZDJiMDQ2ZDdhYmNhNDg5MTIx
YzFmMzhjOTAyMmZjLi4yMTUyNGU1ZmE1NzQ5NjliMzVjOGVlNjA2YjMwZGU5NGQzZTI2NjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0x
MTQ4LDE2ICsxMTQ4LDE3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZy
b21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIH0KIAogICAgIGppdC5tb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5s
b2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIo
KTsKIAotICAgIHZvaWQgKCp0aHJvd1dhc21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4
Y2VwdGlvblR5cGUpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0
eXBlKSB7CisgICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6
RXhjZXB0aW9uVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRlKiBl
eGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2Fz
bUNvbnRleHQpIHsKICAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogCiAgICAgICAgICAgICBKU1dlYkFzc2Vt
Ymx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0
ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1
cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAgICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4ZGMy
N2E0ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRhNWUx
MDQ1NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJh
bWUuY3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFt
ZShWTSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxl
ZSkgeworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZt
KCkpKQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgICAg
IGlmIChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxh
dGVkRGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1w
bCgpOwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxl
ZS0+dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAg
ICB9CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NTExNTQyYjc3ZGZjOGU2ZjJi
ZWFiZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVjODk0NGJkNDRmMTEyNWMxOWZl
MTcyNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDAsNyArMjQw
LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHdlYkFz
c2VtYmx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNhbGxlZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5VG9KU0Nh
bGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZS5zZXQoKnRo
aXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3NlbWJseVRvSlND
YWxsZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1ZjAyMzE4NDQ1
OWNiNjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNhM2QxM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcgKzMzNiw2IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDYWxsZWVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJl
OwotICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKICNlbmRpZgogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0ODksMTEgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwg
dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
d2FzbUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihWTSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhj
ZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9
CiAKICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVs
bHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjA5
ZWZkN2Y0YjA5MDZhMTljYTdjOTczMmQxOGJiZWEwYmJiOTg1MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTIyNyw2ICsyMjcs
NyBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNt
Q2FsbD4mIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUg
YW5kIHRoZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVk
IHdpdGguCiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlT
aXplR1BSOworICAgIEdQUlJlZyBtX3RvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAg
ICAgVmFsdWUqIG1femVyb1ZhbHVlc1tudW1UeXBlc107CiAgICAgVmFsdWUqIG1faW5zdGFuY2VW
YWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CkBAIC0yMzQsMTUgKzIzNSwyMCBAQCBjbGFzcyBCM0lS
R2VuZXJhdG9yIHsKIHN0YXRpYyBWYWx1ZSogbG9hZFdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJv
YywgQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpKTsKLSAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBqaXQubG9hZFdh
c21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOworICAgIGlmICh1c2VGYXN0
VExTKCkpIHsKKyAgICAgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3RlcigpKQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVs
cGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAg
ICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAg
ICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJh
aW50ID0gVmFsdWVSZXA6OnJlZyhQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
WyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0p
OworICAgIH0KIAotICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVu
dGl0eSwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKIH0KIAog
c3RhdGljIHZvaWQgc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrLCBWYWx1ZSogYXJnKQpAQCAtMjgzLDcgKzI4OSw5IEBAIEIzSVJHZW5lcmF0b3I6OkIz
SVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2Vk
dXJlJiBwCiAgICAgLy8gRklYTUUgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGluIHJlZ2lzdGVy
cyBoZXJlIGlmIHRoZXJlJ3Mgbm8gbWVtb3J5LiBJdCBtYWtlcyB3YXNtIC0+IHdhc20gdGh1bmtz
IHNpbXBsZXIgZm9yIG5vdy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NjYyMwogICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5i
YXNlTWVtb3J5UG9pbnRlcjsKKyAgICBtX3RvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIg
PSBwaW5uZWRSZWdzLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAgICAgbV9wcm9j
LnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7CisgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1f
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CiAgICAgQVNTRVJUKCFwaW5uZWRSZWdz
LnNpemVSZWdpc3RlcnNbMF0uc2l6ZU9mZnNldCk7CiAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlu
bmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3RlcjsKICAgICBmb3IgKGNvbnN0IFBp
bm5lZFNpemVSZWdpc3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnMp
CkBAIC0zMDcsMTIgKzMxNSwxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZh
bHVlKiBzaXplOwogfTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VB
bmRTaXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxv
Y2sqIGJsb2NrKQorc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXpl
KFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsK
ICAgICBWYWx1ZSogbWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoZGVjbHR5cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9y
eSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwot
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1l
bW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiBy
ZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
c3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5t
ZW1vcnkoKS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0
aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2Fz
dDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNp
emUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUi
KTsKICAgICBNZW1vcnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0LmJhc2UgPSBibG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmln
aW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSgp
KTsKICAgICByZXN1bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIEludDY0LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5
OjpvZmZzZXRPZlNpemUoKSk7CkBAIC00MTksMTIgKzQyNywxMSBAQCBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZFVucmVhY2hhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogCiBhdXRvIEIzSVJHZW5lcmF0
b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSkgKEV4
ZWNTdGF0ZSosIGludDMyX3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkZWx0YSkg
LT4gaW50MzJfdCB7CisgICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpIChFeGVjU3RhdGUqLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQsIGludDMyX3QgZGVsdGEpIC0+IGludDMyX3Qg
ewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7Ci0gICAgICAgIEpTV2ViQXNzZW1ibHlNZW1v
cnkqIHdhc21NZW1vcnkgPSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAgIEpTV2ViQXNzZW1i
bHlNZW1vcnkqIHdhc21NZW1vcnkgPSB3YXNtQ29udGV4dC0+bWVtb3J5KCk7CiAKICAgICAgICAg
aWYgKGRlbHRhIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ0MCw3ICs0NDcsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEs
IEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIE9yaWdpbigpLAogICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCks
IGJpdHdpc2VfY2FzdDx2b2lkKj4oZ3Jvd01lbW9yeSkpLAotICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4o
KSksIGRlbHRhKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBtX2luc3RhbmNlVmFsdWUsIGRl
bHRhKTsKIAogICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1faW5mby5tZW1vcnks
IG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CiAKQEAgLTQ0OSw3ICs0
NTYsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUg
ZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
Q3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7
Ci0gICAgYXV0byBtZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1fdm0sIG1faW5z
dGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgYXV0byBtZW1vcnlWYWx1
ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJl
bnRCbG9jayk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2OwogICAg
IHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxIDw8IHNoaWZ0VmFsdWUsICJU
aGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4iKTsKQEAgLTEw
ODMsNiArMTA5MCw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxh
dGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgUmVnaXN0ZXJTZXQg
dG9TYXZlOwogICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5l
ZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgdG9TYXZlLnNldChwaW5uZWRSZWdzLmJhc2VNZW1v
cnlQb2ludGVyKTsKKyAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgdG9TYXZlLnNldChw
aW5uZWRSZWdzLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIGZvciAoY29u
c3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lz
dGVycykKICAgICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVSZWdpc3Rlcik7CiAKQEAgLTEx
OTEsMTAgKzEyMDAsMjQgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBp
bGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgfQogICAg
IH0KIAorICAgIC8vIEZJWE1FOiBKU1dlYkFzc2VtYmx5Q2FsbGVlIHNob3VsZCBoYXZlIGEgcG9p
bnRlciB0byBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgaW5zdGVhZC4KKyAgICBHUFJSZWcgdG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUlu
c3RhbmNlUG9pbnRlcjsKKyAgICBpZiAoIXVzZUZhc3RUTFMoKSkgeworICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
LCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKKyAgICAgICAgaml0LmFuZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3ModG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciwgTWFya2VkQmxv
Y2s6Om9mZnNldE9mVk0oKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModG9wSlNXZWJBc3NlbWJseUlu
c3RhbmNlUG9pbnRlciwgVk06Ondhc21Db250ZXh0T2Zmc2V0KCkpLCB0b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2VQb2ludGVyKTsKKyAgICB9CisKICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAg
ICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0g
ICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7Ci0gICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKworICAgICAgICBpZiAoIXVzZUZh
c3RUTFMoKSkKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9m
ZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICB9CiAgICAgICAgIGNv
bnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzOwogICAgICAgICBB
U1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwogICAgICAgICBBU1NFUlQoIXNpemVSZWdzWzBd
LnNpemVPZmZzZXQpOyAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB3ZSBzdGFydCBhdCAw
LCBhbmQgY2FsY3VsYXRlcyBzdWJzZXF1ZW50IHNpemUgcmVnaXN0ZXJzIHJlbGF0aXZlIHRvIDAu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggZmI2NzY1
N2VhNDBjZWNkMGI4Njg4MGViYjI0YzdlYTc5MTNmOWMzMy4uMGUwZjM3ZGM2NjFjYjNjYmNjZTE2
ZDBjN2MzMTQwNDA4ZTFhMmM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
aW5kaW5nLmNwcApAQCAtNjYsOCArNjYsMTAgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogCiAg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgaml0LnN0b3JlNjQoSklUOjpUcnVz
dGVkSW1tMzIoMCksIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOyAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMgY29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMyMQotICAgIGppdC5zdG9yZVB0cihKSVQ6OlRy
dXN0ZWRJbW1QdHIodm0tPndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKSksIEpJVDo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCisgICAgaml0LmxvYWRXYXNtQ29u
dGV4dChHUFJJbmZvOjpyZWdUMCk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVl
KCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBK
SVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAogICAgIHsKICAg
ICAgICAgYm9vbCBoYXNCYWRJNjRVc2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5NSwxNyBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5m
bz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsKICAgICAgICAg
ICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7
CiAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5m
bzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKCk7CiAg
ICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgICAgICAgICB2
b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYykgLT4g
dm9pZCB7CisgICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSosIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiB3YXNtQ29udGV4dCkgLT4gdm9pZCB7CiAgICAgICAgICAgICAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9i
YWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJ
TGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFu
IGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCmluZGV4IDY0ODRjZDRmNTI2NmEzOGU4
MjE1NGE3MWQ3MDUyYmFhZWU0ODk0MjUuLmE3YjhhMmNiM2VjZWNiYjMwY2RmY2Q2MmMwZjQ0NDMy
ZGVlYTJkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAK
QEAgLTQwLDcgKzQwLDYgQEAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQo
Vk0mIHZtKQogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKICAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9n
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICNlbmRpZgotICAgIC8v
IEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwogICAgIHJldHVybiB2bS53YXNt
Q29udGV4dDsKIH0KIApAQCAtNTAsNyArNDksNiBAQCB2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0m
IHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogICAgIGlmIChPcHRpb25zOjp1
c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKICAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGly
ZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNlKSk7
CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKICAg
ICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA4YWMwODY2Mjc4
YjUxMzkzYjY2OWVhMDlhN2I1NDhkNmQ5YTc2YjE0Li42Yzg1OWEzOGI3NGU2OGEwNGY4NjY2YTAw
ZjY3MDg5NGFhN2VmYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKQEAgLTM0LDQzICszNCw1NyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCitzdGF0aWMgVmVjdG9yPEdQUlJlZz4gZ2V0UGlu
bmVkUmVnaXN0ZXJzKHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycykKK3sKKyAgICBW
ZWN0b3I8R1BSUmVnPiByZWdpc3RlcnM7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2Nh
bGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAgaWYgKCFy
ZWcuaXNHUFIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJl
Zy5ncHIoKTsKKyAgICAgICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0
ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIC0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzOworICAgICAgICByZWdpc3RlcnMuYXBw
ZW5kKGdwcik7CisgICAgfSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyczsKK30KKwogY29uc3QgUGlu
bmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpCiB7CiAgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxQaW5uZWRSZWdpc3RlckluZm8+IHN0YXRpY1Bpbm5lZFJlZ2lz
dGVySW5mbzsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljUGlubmVkUmVnaXN0ZXJJ
bmZvRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFn
LCBbXSAoKSB7CiAgICAgICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVn
aXN0ZXJzOwotICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgIEdQUlJl
ZyBiYXNlTWVtb3J5UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIEdQUlJlZyB0b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdp
c3RlciwgYW5kIHdlIHNob3VsZCBhbGxvdyBkaWZmZXJlbnQKICAgICAgICAgLy8gICAgICAgIFdl
YkFzc2VtYmx5Lkluc3RhbmNlIHRvIGhhdmUgZGlmZmVyZW50IHBpbnMuIFJpZ2h0IG5vdyB3ZSB0
YWtlIGEgdmVjdG9yIHdpdGggb25seSBvbmUgZW50cnkuCiAgICAgICAgIC8vICAgICAgICBJZiB3
ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlciwgd2UgY2FuIGhhdmUgb25lIGZvciBl
YWNoIGxvYWQgc2l6ZSBjbGFzcy4KICAgICAgICAgLy8gICAgICAgIHNlZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IHBpbm5lZFNpemVzID0geyAwIH07Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5l
ZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDE7Ci0gICAgICAgIGpzY0NhbGxpbmdD
b252ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7
Ci0gICAgICAgICAgICBpZiAoIXJlZy5pc0dQUigpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7Ci0gICAgICAgICAgICBpZiAoIXJl
bWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5n
ZXQocmVnKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAocmVtYWlu
aW5nUGlubmVkUmVnaXN0ZXJzID09IDEpIHsKLSAgICAgICAgICAgICAgICBiYXNlTWVtb3J5UG9p
bnRlciA9IGdwcjsKLSAgICAgICAgICAgICAgICByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMtLTsK
LSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNpemVSZWdpc3RlcnMuYXBwZW5k
KHsgZ3ByLCBwaW5uZWRTaXplc1stLXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyAtIDFdIH0pOwot
ICAgICAgICB9KTsKLQotICAgICAgICBBU1NFUlQoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyk7
Ci0gICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXpl
UmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBvaW50ZXIpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlBpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDE7CisgICAgICAgIGlmICgh
dXNlRmFzdFRMUygpKQorICAgICAgICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKKyAg
ICAgICAgVmVjdG9yPEdQUlJlZz4gcGlubmVkUmVncyA9IGdldFBpbm5lZFJlZ2lzdGVycyhudW1i
ZXJPZlBpbm5lZFJlZ2lzdGVycyk7CisKKyAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBwaW5u
ZWRSZWdzLnRha2VMYXN0KCk7CisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICAg
ICAgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3Qo
KTsKKworICAgICAgICBBU1NFUlQocGlubmVkU2l6ZXMuc2l6ZSgpID09IHBpbm5lZFJlZ3Muc2l6
ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpbm5lZFNpemVzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBwaW5uZWRSZWdzW2ld
LCBwaW5uZWRTaXplc1tpXSB9KTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNv
bnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlciwgdG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGlj
UGlubmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5l
ZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0
ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5l
ZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0
ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyKQogICAgIDogc2l6ZVJlZ2lzdGVycyhXVEZNb3ZlKHNpemVSZWdpc3RlcnMp
KQogICAgICwgYmFzZU1lbW9yeVBvaW50ZXIoYmFzZU1lbW9yeVBvaW50ZXIpCisgICAgLCB0b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50
ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmgKaW5kZXggNmRlMDcwYTEwNDUyZmY2YmIzYzVjMjUwNDExZjEwZTkxMzg5
ZTRhMi4uMTFmM2I0M2EwMDZkODVhODgwODY0NTEyNTE2N2UxMDhiN2Q2MzIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKQEAg
LTQzLDggKzQzLDkgQEAgc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewogc3RydWN0IFBp
bm5lZFJlZ2lzdGVySW5mbyB7CiAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+IHNp
emVSZWdpc3RlcnM7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgIEdQUlJlZyB0
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyOwogICAgIHN0YXRpYyBjb25zdCBQaW5uZWRS
ZWdpc3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVk
U2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVj
dG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywgR1BSUmVnKTsKIH07CiAKIGNs
YXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKQEAgLTczLDYgKzc0LDE1IEBAIGNsYXNzIE1lbW9yeUlu
Zm9ybWF0aW9uIHsKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9OwogfTsKIAoraW5saW5l
IGJvb2wgdXNlRmFzdFRMUygpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICByZXR1
cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdBU00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCAxYzExYjBjYTY1YzkxNzQyZjhlNDgx
M2MyNGQ5NzVmNjVlZWJhYTE4Li4zYjdmN2I4NzQ2ZmY4ZDQyMTQwMTc4Y2E3YjVlZWFlZDAzNDY5
MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLAogCiAgICAgbV9jb2Rl
QmxvY2suc2V0KHZtLCB0aGlzLCBtb2R1bGUtPmNvZGVCbG9jaygpKTsKICAgICBtX21vZHVsZU5h
bWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCk7CisgICAg
bV9jYWxsZWUuc2V0KHZtLCB0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSh2bSwg
dm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpLCB0aGlzKSk7CiAgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cG9ydHMiKSwgbW9kdWxl
TmFtZXNwYWNlT2JqZWN0LCBOb25lKTsKIH0KIApAQCAtOTksNiArMTAxLDcgQEAgdm9pZCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVz
cGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5
VmlzaXRlZCh0aGlzT2JqZWN0LT5tb2R1bGUoKS0+bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxz
LnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbnVt
SW1wb3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0
LT5pbXBvcnRGdW5jdGlvbihpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGUyMjg0OTY5NjcyMDVhMzEzNmM4
ODNiYmRlMzI2YWRiYzcxMTEzMGQuLjQyYWExYjM1ZDFiMmE2ZjkzOWI5ZDMyOTY2YjVmMzdlNGVl
NjQxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7
CitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CkBAIC05Nyw2ICs5
OCw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV90YWJsZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mQ2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkds
b2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBt
X2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygp
IHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpT
Q2VsbD4pPihzaXplb2YoSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7IH0KICAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJl
dHVybiBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpICsgaW1wb3J0RnVuY3Rpb25OdW0gKiBzaXpl
b2Yoc2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KSk7IH0KQEAgLTExNyw2ICsxMTksNyBAQCBj
bGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1l
c3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1vcnk+IG1fbWVt
b3J5OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+IG1fdGFibGU7CisgICAg
V3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiAgICAgTWFsbG9j
UHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlv
bnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAppbmRleCBkMWE4MDFjM2VjOTExYTE5ZjA2YWI3OWY5OGEzMzkwMWY1
YzU3YzUxLi44OGI2MWQ1ZTIyYmI1NjczNWYyOTA5NjgxZjMyNjE3ODliYTNhODcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcApAQCAtMTUzLDYgKzE1Myw3IEBAIFdlYkFzc2VtYmx5RnVuY3Rpb24qIFdlYkFzc2VtYmx5
RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RnVuY3Rpb25TdHJ1
Y3R1cmUoKTsKICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5RnVuY3Rpb24+KHZtLmhlYXApKSBXZWJBc3NlbWJs
eUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgd2FzbUVudHJ5cG9pbnQsIHNp
Z25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFi
bGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFuY2UsIGpzRW50cnlwb2ludCwgd2FzbUVudHJ5cG9pbnQp
OworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWZ1bmN0aW9uLT5pc0xhcmdlQWxsb2NhdGlvbigp
LCAiV2ViQXNzZW1ibHlGdW5jdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIG5vdCBpbiBsYXJnZSBh
bGxvY2F0aW9uIHNpbmNlIGl0IGlzIEpTQ2FsbGVlLiIpOwogICAgIHJldHVybiBmdW5jdGlvbjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VG9KU0NhbGxlZS5jcHAKaW5kZXggNGU4OTFhMDlhMjBlZmEyZjk4OTg1ZDk3OWNhOWY1ZDRl
ODEzMDJhZi4uM2MxNzVmNTNkZDY5NTRmMjZmYTU1YTA5NDdlN2YxMTcxYjUzZWRlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlND
YWxsZWUuY3BwCkBAIC0yOSwxNSArMjksMTYgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUiLCBudWxscHRyLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkgfTsKIAotV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY2FsbGVl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPih2bS5o
ZWFwKSkgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGNhbGxlZS0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0sIGluc3Rh
bmNlKTsKICAgICByZXR1cm4gY2FsbGVlOwogfQogCkBAIC01MSwxNSArNTIsMTkgQEAgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1faW5zdGFuY2Uuc2V0KHZtLCB0aGlzLCBpbnN0YW5j
ZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2VsbCk7Ci0g
ICAgdGhpc09iamVjdC0+V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp+V2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxs
ZWUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW5zdGFuY2UpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VG9KU0NhbGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlLmgKaW5kZXggNDk2Yzg4NTc2YzM5ZjcyMzI3MjM5OGE1NjY1Yzkw
NGNjNWMxYjEyMy4uMjY0Yzk0NDY5NWIyNzI5ZjFjNjM3ZGMxNWUwYWM4NWMyYWE2YzQzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlLmgKQEAgLTMxLDIxICszMSwyNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
SlNXZWJBc3NlbWJseUluc3RhbmNlOworCiBjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgOiBw
dWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBXZWJBc3NlbWJseVRvSlNDYWxs
ZWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBXZWJBc3NlbWJseVRvSlND
YWxsZWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CisKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKCkgeyByZXR1
cm4gbV9pbnN0YW5jZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKik7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0dXJlKik7CisKKyAg
ICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPiBtX2luc3RhbmNlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305429</attachid>
            <date>2017-03-26 11:54:28 -0700</date>
            <delta_ts>2017-03-26 12:07:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327035426.patch</filename>
            <type>text/plain</type>
            <size>38674</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li45ZDM5OTIxYzAwN2Y2YzAw
NjI1M2UzMDEyYmNkZTg0MjA5MmFjMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxNy0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9T
dGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6
ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAg
ICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToK
KyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFdhc21D
b250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgICogd2Fz
bS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRQaW5u
ZWRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86Omdl
dCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0
ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorICAgICAg
ICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2ZSk6CisgICAgICAgIChKU0M6
Oldhc206OnVzZUZhc3RUTFMpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAg
KEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSk6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0Nh
bGxlZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveSk6IERlbGV0ZWQuCisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOjppbnN0YW5jZSk6CisKIDIwMTctMDMtMjUgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggd2FzbSBieSByZXR1cm5pbmcgYWZ0
ZXIgd2UgZG8gVExTLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5k
ZXggMjJhN2JhNzBmNDdjNTAxNjMzODMyOTlkYTBlM2UzNGM1YmNkYzIyNy4uNTZkNWNiZWEyNDNk
ZWU0YTBiMWVlMmU1NzNlYzg2YThiNjU0NjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCkBAIC0yOTgsNiArMjk4LDExIEBAIGNsYXNzIE1hcmtlZEJsb2NrIHsK
ICAgICAKICAgICBib29sIGlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApOwogICAgIEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZNKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoTWFya2VkQmxvY2ssIG1fdm0pOworICAgIH0KICAgICAKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXpl
IC0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApp
bmRleCA3ODMyMDQ3OTIxOTI0NDViNWJlN2Y4Y2M1NGUyMWI2MTg4ZjliNzVkLi5kYTBkMTBlNzEy
NTAyODM1ZTJlNDBiOTBhNmM4M2JiYWZkNTRkYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisjaW5jbHVkZSAiV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIEpTQyB7CiAKIEV4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1
dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKQEAgLTc2Niw2ICs3NzAsNDkg
QEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyByZXN1bHQKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCit2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250
ZXh0KEdQUlJlZyBkc3QpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAgbG9hZEZyb21UTFNQdHIo
ZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBtb3ZlKFdhc206OlBpbm5lZFJlZ2lzdGVySW5m
bzo6Z2V0KCkudG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciwgZHN0KTsKK30KKwordm9p
ZCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKK3sKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKSkgeworICAgICAgICBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRMU09mZnNldEZvcktleShX
VEZfV0FTTV9DT05URVhUX0tFWSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisg
ICAgbW92ZShzcmMsIFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlUG9pbnRlcik7Cit9CisKK2Jvb2wgQXNzZW1ibHlIZWxwZXJzOjpsb2FkV2Fz
bUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAg
ICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFzc2VtYmx5SGVscGVyczo6c3RvcmVX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQoreworI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAg
ICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNl
bmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCmluZGV4IDUwMGQ2ODgyMjM5Y2ViOWIyMDk3MjU0NDZkM2NjZDg4OWJk
YTE4MjguLmE3OGNjNjlmOWE3OTUxNjUyNDM1MjJiYjYyMjA3NDkyN2QyYTQ2NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTYzNiw0NSArMTYz
NiwxMiBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewog
ICAgIHZvaWQgd2FuZ3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2Ny
YXRjaCk7CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCi0g
ICAgewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseUZhc3RUTFMoKSkgewotICAgICAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRM
U09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0
YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjk3NzMKLSAgICAgICAgbG9hZFB0cigmbV92bS0+d2FzbUNvbnRleHQsIGRz
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCi0gICAg
ewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJB
c3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyKHNyYywg
ZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSkpOwotI2VuZGlmCi0gICAg
ICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBzdG9y
ZVB0cihzcmMsICZtX3ZtLT53YXNtQ29udGV4dCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wg
bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAgewotI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3Jh
dGNoUmVnaXN0ZXIoKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
Ci0gICAgewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1
c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRy
TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAg
ICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KTsKKyAgICB2b2lkIHN0b3JlV2FzbUNv
bnRleHQoR1BSUmVnIHNyYyk7CisgICAgc3RhdGljIGJvb2wgbG9hZFdhc21Db250ZXh0TmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3RlcigpOworICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHRO
ZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCA3ZGRjNmJhZTAwNmRjZmMxYTNkNzcxYTA2MzEzNzNkZDI1Nzk5
YjVhLi4zMDEwZjg2MDBjYzgyODU0NTM3MWFjOTExM2M2ZDczMDYwMWM4M2JmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTU4MCw4ICs1ODAsOCBAQCBzdGF0aWMgdm9p
ZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogc3RhdGlj
IGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkKIHsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLy8gVGhlIFdlYkFzc2VtYmx5IC0+IEpTIHN0
dWIgc2V0cyBpdCBjYWxsZXIgZnJhbWUncyBjYWxsZWUgdG8gYSBzaW5nbGV0b24gd2hpY2ggbGl2
ZXMgb24gdGhlIFZNLgotICAgIHJldHVybiBjYWxsZWUgPT0gdm0ud2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmdldCgpOworICAgIC8vIFRoZSBXZWJBc3NlbWJseSAtPiBKUyBzdHViIHNldHMgaXQgY2Fs
bGVyIGZyYW1lJ3MgY2FsbGVlIHRvIGEgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIGluc3RhbmNlLgor
ICAgIHJldHVybiBjYWxsZWUtPmluaGVyaXRzKHZtLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6Omlu
Zm8oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxlZSk7CkBAIC01ODksMTMgKzU4OSwxMyBAQCBzdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9K
U0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2FsbGVlKQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkKIH0KIAotc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0pCitzdGF0
aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQogewogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNoYXJlcyB0
aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0aGVyZWZv
cmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiBsb2FkV2FzbUNvbnRleHQodm0p
LT5tb2R1bGUoKTsKKyAgICByZXR1cm4ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNh
bGxlZSktPmluc3RhbmNlKCktPm1vZHVsZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odm0p
OworICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQpAQCAtNjEyLDcgKzYxMiw3IEBAIHZvaWQgbGlua0ZvcigKICAgICBDb2RlQmxvY2sqIGNhbGxl
ckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKIAogICAgIC8vIFdlYkFzc2Vt
Ymx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxs
KiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVl
KCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxs
KiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVl
KCkpID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29k
ZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5p
c0xpbmtlZCgpKTsKQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAgICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNh
bGxlckZyYW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBk
b24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFz
c2VtYmx5ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlND
ZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1l
LT5jYWxsZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAg
IENhbGxWYXJpYW50TGlzdCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCmluZGV4IDA4NTdlMzRiZjFkMmIwNDZkN2FiY2E0ODkxMjFjMWYzOGM5
MDIyZmMuLjIxNTI0ZTVmYTU3NDk2OWIzNWM4ZWU2MDZiMzBkZTk0ZDNlMjY2NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTExNDgsMTYg
KzExNDgsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9uRnJvbVdhc21U
aHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgfQogCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LmxvYWRXYXNt
Q29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIENDYWxsSGVscGVyczo6Q2FsbCBj
YWxsID0gaml0LmNhbGwoKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0g
ICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9u
VHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUpIHsK
KyAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNtOjpFeGNlcHRp
b25UeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIFdh
c206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4
dCkgewogICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgewogICAgICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0pLT5nbG9iYWxP
YmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3YXNt
Q29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3JlYXRlKGV4ZWMs
ICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBX
YXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKaW5kZXggNmQ0Nzg2NGM5NzhkYzI3YTRlMzc1
MDdkMjI2ZGQ1N2E5YTBjY2NlMi4uMTY0YzRmNTdiY2Q0YjJjNGJmN2ZjMDc2NGE1ZTEwNDU0ZGE3
YTJlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFt
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAK
QEAgLTcyLDEwICs3MiwxMCBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2
bSkgY29uc3QKICAgICB9CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgaWYgKG1fY2FsbGVlKSB7Cisg
ICAgICAgIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+dm0oKSkpCisg
ICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICAgICAgaWYgKG1f
Y2FsbGVlLT5pc09iamVjdCgpKQogICAgICAgICAgICAgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNw
bGF5TmFtZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4obV9jYWxsZWUuZ2V0KCkpKS5pbXBsKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKG1fY2FsbGVlLT5pc0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgp
KSkKLSAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjx3YXNtPiIpOwogICAgIH0KICAg
ICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDg1MTE1NDJiNzdkZmM4ZTZmMmJlYWJmMWY4
OTNjNzczOWFiNzRiMzguLmQxMDgxNTNmNjg0ZTE5ZWM4OTQ0YmQ0NGYxMTI1YzE5ZmUxNzI2MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0MCw3ICsyNDAsNiBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgd2ViQXNzZW1ibHlD
YWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3Ry
dWN0dXJlLnNldCgqdGhpcywgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7Ci0gICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlLnNldCgqdGhpcywgV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUoKnRoaXMsIHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0
cnVjdHVyZS5nZXQoKSkpOwogI2VuZGlmCiAgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJl
Z0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKaW5kZXggOWQ4NmFhMTlhOTMzY2VhMzhhYjVmMDIzMTg0NDU5Y2I2MDEw
ZjNiNy4uMTU4ZTY5OGJhNDg3MTI5MTU1NTU1OGRkMjZkNWZhYTA5Y2EzZDEzZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMzYsNyArMzM2LDYgQEAgY2xhc3MgVk0gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8
Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmU7Ci0gICAg
U3Ryb25nPEpTQ2VsbD4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlOwogI2VuZGlmCiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwpAQCAtNDkwLDYgKzQ4OSwxMSBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRM
aXN0Tm9kZTxWTT4gewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB0YXJnZXRN
YWNoaW5lUENGb3JUaHJvdyk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCB3YXNtQ29u
dGV4dE9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB3
YXNtQ29udGV4dCk7CisgICAgfQorCiAgICAgdm9pZCByZXN0b3JlUHJldmlvdXNFeGNlcHRpb24o
RXhjZXB0aW9uKiBleGNlcHRpb24pIHsgc2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7IH0KIAogICAg
IHZvaWQgY2xlYXJMYXN0RXhjZXB0aW9uKCkgeyBtX2xhc3RFeGNlcHRpb24gPSBudWxscHRyOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
aW5kZXggZmFjNTdhZGRhZjA3NGU5YThjZmU2MDYzMzM1ZjMwZGEyZTk2ZDNhMi4uMzNlMDUwMzRm
NGFlZjU4ZTZmZTdjYWY0NjYxY2Y4NjY4ZDYzNDE4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjI3LDYgKzIyNyw3IEBAIGNs
YXNzIEIzSVJHZW5lcmF0b3IgewogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYg
bV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsgLy8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhl
IGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJlc3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4K
ICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7
CisgICAgR1BSUmVnIG1fdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBWYWx1
ZSogbV96ZXJvVmFsdWVzW251bVR5cGVzXTsKICAgICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAv
LyBGSVhNRTogbWFrZSB0aGlzIGxhenkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTc5MgogfTsKQEAgLTIzNCwxMyArMjM1LDE5IEBAIGNsYXNzIEIzSVJHZW5lcmF0
b3Igewogc3RhdGljIFZhbHVlKiBsb2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNp
Y0Jsb2NrKiBibG9jaykKIHsKICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9j
ay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3Jh
dGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
LSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVl
ZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRl
eHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7CisgICAgaWYgKHVzZUZhc3RUTFMoKSkg
eworICAgICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjps
b2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAg
ICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0p
OworICAgIH0gZWxzZSB7CisgICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnQgPSBW
YWx1ZVJlcDo6cmVnKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9wSlNXZWJBc3NlbWJseUlu
c3RhbmNlUG9pbnRlcik7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbJl0gKEND
YWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsgfSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgfQogCiAgICAg
cmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElkZW50aXR5LCBPcmlnaW4oKSwg
cGF0Y2hwb2ludCk7CiB9CkBAIC0yODMsNyArMjkwLDkgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdl
bmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUm
IHAKICAgICAvLyBGSVhNRSB3ZSBkb24ndCByZWFsbHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhl
cmUgaWYgdGhlcmUncyBubyBtZW1vcnkuIEl0IG1ha2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2lt
cGxlciBmb3Igbm93LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
NjIzCiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQoKTsKICAgICBtX21lbW9yeUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VN
ZW1vcnlQb2ludGVyOworICAgIG1fdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBp
bm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBtX3Byb2MucGlu
UmVnaXN0ZXIobV9tZW1vcnlCYXNlR1BSKTsKKyAgICBtX3Byb2MucGluUmVnaXN0ZXIobV90b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6
ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRS
ZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOwogICAgIGZvciAoY29uc3QgUGlubmVk
U2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKQEAg
LTMwNywxMiArMzE2LDEyIEBAIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CiAgICAgVmFsdWUq
IHNpemU7CiB9OwogCi1zdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNp
emUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayog
YmxvY2spCitzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVmFs
dWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAg
IFZhbHVlKiBtZW1vcnlPYmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9j
LCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihk
ZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkp
KSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAg
c3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5
KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGll
cyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0
aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9y
eSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMg
c2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIpLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgp
KSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwog
ICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsKICAgICByZXN1bHQuYmFzZSA9IGJsb2NrLT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
LCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mTWVtb3J5KCkpOwog
ICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9m
ZnNldE9mU2l6ZSgpKTsKQEAgLTQxOSwxMiArNDI4LDExIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0
YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGRlbHRhKSAtPiBp
bnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSkgKEV4ZWNTdGF0ZSosIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSosIGludDMyX3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCwgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CiAg
ICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3Rh
bmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSog
d2FzbU1lbW9yeSA9IGluc3RhbmNlLT5tZW1vcnkoKTsKKyAgICAgICAgSlNXZWJBc3NlbWJseU1l
bW9yeSogd2FzbU1lbW9yeSA9IHdhc21Db250ZXh0LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAo
ZGVsdGEgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDQwLDcgKzQ0OCw3IEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkKIAogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgT3JpZ2luKCksCiAgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0
d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwg
ZGVsdGEpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSksIG1faW5zdGFuY2VWYWx1ZSwgZGVsdGEp
OwogCiAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9p
bnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIApAQCAtNDQ5LDcgKzQ1Nyw3
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0
YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJy
ZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5j
ZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0g
Z2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJs
b2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3Rh
dGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMg
bXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtMTA4MCwx
MSArMTA4OCw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgICAgICpsaW5rZWRDYWxs
ZWVNb3ZlID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxlZU1vdmVMb2NhdGlvbik7CiAgICAg
fSk7CiAKLSAgICBSZWdpc3RlclNldCB0b1NhdmU7CiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJ
bmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKLSAgICB0b1NhdmUu
c2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXIpOwotICAgIGZvciAoY29uc3QgUGlubmVk
U2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKLSAg
ICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVSZWdpc3Rlcik7CisgICAgUmVnaXN0ZXJTZXQg
dG9TYXZlID0gcGlubmVkUmVncy50b1NhdmUoKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICB1bnNpZ25lZCB0b1NhdmVTaXplID0gdG9TYXZlLm51bWJlck9mU2V0R1BScygpOwpAQCAtMTE5
MSwxMCArMTE5NiwyNCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGls
YXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAgICAgICB9CiAgICAg
fQogCisgICAgLy8gRklYTUU6IEpTV2ViQXNzZW1ibHlDYWxsZWUgc2hvdWxkIGhhdmUgYSBwb2lu
dGVyIHRvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBpbnN0ZWFkLgorICAgIEdQUlJlZyB0b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gcGlubmVkUmVncy50b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyOworICAgIGlmICghdXNlRmFzdFRMUygpKSB7CisgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSks
IHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgICAgICBqaXQuYW5kUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgdG9wSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBNYXJrZWRCbG9j
azo6b2Zmc2V0T2ZWTSgpKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyLCBWTTo6d2FzbUNvbnRleHRPZmZzZXQoKSksIHRvcEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZVBvaW50ZXIpOworICAgIH0KKwogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAg
ICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAg
ICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNlTWVtb3J5KTsKLSAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworCisgICAgICAgIGlmICghdXNlRmFz
dFRMUygpKQorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRv
cEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zm
c2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIH0KICAgICAgICAgY29u
c3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFT
U0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAgICAgICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0u
c2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAs
IGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBmYjY3NjU3
ZWE0MGNlY2QwYjg2ODgwZWJiMjRjN2VhNzkxM2Y5YzMzLi4wZTBmMzdkYzY2MWNiM2NiY2NlMTZk
MGM3YzMxNDA0MDhlMWEyYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJp
bmRpbmcuY3BwCkBAIC02Niw4ICs2NiwxMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAg
ICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0
ZWRJbW0zMigwKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7IC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0gICAgaml0LnN0b3JlUHRyKEpJVDo6VHJ1
c3RlZEltbVB0cih2bS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklUOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKKyAgICBqaXQubG9hZFdhc21Db250
ZXh0KEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUo
KSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEpJ
VDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgewogICAg
ICAgICBib29sIGhhc0JhZEk2NFVzZSA9IGZhbHNlOwpAQCAtOTMsMTYgKzk1LDE3IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZv
PiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgaWYgKGhhc0JhZEk2NFVzZSkgewogICAgICAgICAg
ICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsK
ICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZv
Ojphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgYXV0byBjYWxsID0gaml0LmNhbGwoKTsKICAg
ICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKLSAgICAgICAgICAgIHZv
aWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjKSAtPiB2
b2lkIHsKKyAgICAgICAgICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKiwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIHdhc21Db250ZXh0KSAtPiB2b2lkIHsKICAgICAgICAgICAgICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSkt
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2Jh
bE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgQVNDSUlM
aXRlcmFsKCJpNjQgbm90IGFsbG93ZWQgYXMgcmV0dXJuIHR5cGUgb3IgYXJndW1lbnQgdG8gYW4g
aW1wb3J0ZWQgZnVuY3Rpb24iKSk7CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKaW5kZXggNjQ4NGNkNGY1MjY2YTM4ZTgy
MTU0YTcxZDcwNTJiYWFlZTQ4OTQyNS4uYTdiOGEyY2IzZWNlY2JiMzBjZGZjZDYyYzBmNDQ0MzJk
ZWVhMmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApA
QCAtNDAsNyArNDAsNiBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChW
TSYgdm0pCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQogICAgICAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dl
dHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOwogI2VuZGlmCi0gICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCiAgICAgcmV0dXJuIHZtLndhc21D
b250ZXh0OwogfQogCkBAIC01MCw3ICs0OSw2IEBAIHZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYg
dm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCiAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpKQogICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJl
Y3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2UpKTsK
ICNlbmRpZgotICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93
IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwogICAg
IHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCmluZGV4IDhhYzA4NjYyNzhi
NTEzOTNiNjY5ZWEwOWE3YjU0OGQ2ZDlhNzZiMTQuLjZjODU5YTM4Yjc0ZTY4YTA0Zjg2NjZhMDBm
NjcwODk0YWE3ZWZiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcApAQCAtMzQsNDMgKzM0LDU3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRpYyBWZWN0b3I8R1BSUmVnPiBnZXRQaW5u
ZWRSZWdpc3RlcnModW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKQoreworICAgIFZl
Y3RvcjxHUFJSZWc+IHJlZ2lzdGVyczsKKyAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2Fs
bGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgeworICAgICAgICBpZiAoIXJl
Zy5pc0dQUigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVn
LmdwcigpOworICAgICAgICBpZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3Rl
clNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnM7CisgICAgICAgIHJlZ2lzdGVycy5hcHBl
bmQoZ3ByKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVnaXN0ZXJzOworfQorCiBjb25zdCBQaW5u
ZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkKIHsKICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPFBpbm5lZFJlZ2lzdGVySW5mbz4gc3RhdGljUGlubmVkUmVnaXN0
ZXJJbmZvOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzdGF0aWNQaW5uZWRSZWdpc3Rlcklu
Zm9GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWcs
IFtdICgpIHsKICAgICAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+IHNpemVSZWdp
c3RlcnM7Ci0gICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAgICAgR1BSUmVn
IGJhc2VNZW1vcnlQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgR1BSUmVnIHRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIgPSBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lz
dGVyLCBhbmQgd2Ugc2hvdWxkIGFsbG93IGRpZmZlcmVudAogICAgICAgICAvLyAgICAgICAgV2Vi
QXNzZW1ibHkuSW5zdGFuY2UgdG8gaGF2ZSBkaWZmZXJlbnQgcGlucy4gUmlnaHQgbm93IHdlIHRh
a2UgYSB2ZWN0b3Igd2l0aCBvbmx5IG9uZSBlbnRyeS4KICAgICAgICAgLy8gICAgICAgIElmIHdl
IGhhdmUgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVyLCB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVh
Y2ggbG9hZCBzaXplIGNsYXNzLgogICAgICAgICAvLyAgICAgICAgc2VlOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVk
UmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKLSAgICAgICAganNjQ2FsbGluZ0Nv
bnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsK
LSAgICAgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKLSAgICAgICAgICAgIGlmICghcmVt
YWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdl
dChyZWcpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChyZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgewotICAgICAgICAgICAgICAgIGJhc2VNZW1vcnlQb2lu
dGVyID0gZ3ByOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycy0tOwot
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQo
eyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIEFTU0VSVCghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKTsK
LSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNpemVS
ZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlcik7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
UGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgaWYgKCF1
c2VGYXN0VExTKCkpCisgICAgICAgICAgICArK251bWJlck9mUGlubmVkUmVnaXN0ZXJzOworICAg
ICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdzID0gZ2V0UGlubmVkUmVnaXN0ZXJzKG51bWJl
ck9mUGlubmVkUmVnaXN0ZXJzKTsKKworICAgICAgICBiYXNlTWVtb3J5UG9pbnRlciA9IHBpbm5l
ZFJlZ3MudGFrZUxhc3QoKTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAg
ICB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgp
OworCisgICAgICAgIEFTU0VSVChwaW5uZWRTaXplcy5zaXplKCkgPT0gcGlubmVkUmVncy5zaXpl
KCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGlubmVkU2l6ZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IHBpbm5lZFJlZ3NbaV0s
IHBpbm5lZFNpemVzW2ldIH0pOworICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29u
c3RydWN0KFdURk1vdmUoc2l6ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVyLCB0b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKICAgICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNQ
aW5uZWRSZWdpc3RlckluZm8uZ2V0KCk7CiB9CiAKLVBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVk
UmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3Rl
cnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcikKK1Bpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVk
UmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3Rl
cnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaW50ZXIpCiAgICAgOiBzaXplUmVnaXN0ZXJzKFdURk1vdmUoc2l6ZVJlZ2lzdGVycykp
CiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVtb3J5UG9pbnRlcikKKyAgICAsIHRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIodG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRl
cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uaAppbmRleCA2ZGUwNzBhMTA0NTJmZjZiYjNjNWMyNTA0MTFmMTBlOTEzODll
NGEyLi5kY2NiNzNkNGQ1MmM2ZjZlMDA4NWNlZGYxNDExZTE5NDI3OWQwNzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaApAQCAt
MjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkdQUklu
Zm8uaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIK
ICNpbmNsdWRlICJXYXNtUGFnZUNvdW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDMs
OCArNDQsMjAgQEAgc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewogc3RydWN0IFBpbm5l
ZFJlZ2lzdGVySW5mbyB7CiAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+IHNpemVS
ZWdpc3RlcnM7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgIEdQUlJlZyB0b3BK
U1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyOwogICAgIHN0YXRpYyBjb25zdCBQaW5uZWRSZWdp
c3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6
ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9y
PFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywgR1BSUmVnKTsKKworICAgIFJlZ2lz
dGVyU2V0IHRvU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICBSZWdpc3RlclNldCByZXN1bHQ7
CisgICAgICAgIHJlc3VsdC5zZXQoYmFzZU1lbW9yeVBvaW50ZXIpOworICAgICAgICBpZiAodG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICAg
ICAgcmVzdWx0LnNldCh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBpbmZvIDogc2l6ZVJlZ2lzdGVycykKKyAgICAgICAgICAgIHJlc3Vs
dC5zZXQoaW5mby5zaXplUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
IH07CiAKIGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKQEAgLTczLDYgKzg2LDE1IEBAIGNsYXNz
IE1lbW9yeUluZm9ybWF0aW9uIHsKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9OwogfTsK
IAoraW5saW5lIGJvb2wgdXNlRmFzdFRMUygpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkK
KyAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCk7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdBU00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCAxYzExYjBjYTY1Yzkx
NzQyZjhlNDgxM2MyNGQ5NzVmNjVlZWJhYTE4Li4zYjdmN2I4NzQ2ZmY4ZDQyMTQwMTc4Y2E3YjVl
ZWFlZDAzNDY5MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1v
cnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLAogCiAg
ICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBtb2R1bGUtPmNvZGVCbG9jaygpKTsKICAgICBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIG1vZHVsZU5hbWVzcGFjZU9iamVj
dCk7CisgICAgbV9jYWxsZWUuc2V0KHZtLCB0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNy
ZWF0ZSh2bSwgdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpLCB0aGlzKSk7
CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cG9ydHMi
KSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBOb25lKTsKIH0KIApAQCAtOTksNiArMTAxLDcgQEAg
dm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9t
ZW1vcnkpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGUpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2aXNpdG9yLnJlcG9ydEV4
dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tb2R1bGUoKS0+bW9kdWxlSW5mb3JtYXRpb24o
KS5nbG9iYWxzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmpl
Y3QtPm1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0
aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGUyMjg0OTY5Njcy
MDVhMzEzNmM4ODNiYmRlMzI2YWRiYzcxMTEzMGQuLjQyYWExYjM1ZDFiMmE2ZjkzOWI5ZDMyOTY2
YjVmMzdlNGVlNjQxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKIGNsYXNzIEpTV2ViQXNzZW1i
bHlNb2R1bGU7CitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CkBA
IC05Nyw2ICs5OCw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rl
c3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9tZW1v
cnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV90YWJsZSk7IH0KKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUlu
c3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1
bmN0aW9ucygpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVC
YXJyaWVyPEpTQ2VsbD4pPihzaXplb2YoSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7IH0KICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1bmN0aW9u
TnVtKSB7IHJldHVybiBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpICsgaW1wb3J0RnVuY3Rpb25O
dW0gKiBzaXplb2Yoc2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KSk7IH0KQEAgLTExNyw2ICsx
MTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1v
cnk+IG1fbWVtb3J5OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+IG1fdGFi
bGU7CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiAg
ICAgTWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgdW5zaWduZWQgbV9udW1JbXBv
cnRGdW5jdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkMWE4MDFjM2VjOTExYTE5ZjA2YWI3OWY5
OGEzMzkwMWY1YzU3YzUxLi44OGI2MWQ1ZTIyYmI1NjczNWYyOTA5NjgxZjMyNjE3ODliYTNhODcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcApAQCAtMTUzLDYgKzE1Myw3IEBAIFdlYkFzc2VtYmx5RnVuY3Rpb24qIFdl
YkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5RnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5RnVuY3Rpb24+KHZtLmhlYXApKSBX
ZWJBc3NlbWJseUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgd2FzbUVudHJ5
cG9pbnQsIHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0s
IGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFuY2UsIGpzRW50cnlwb2ludCwgd2FzbUVu
dHJ5cG9pbnQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWZ1bmN0aW9uLT5pc0xhcmdlQWxs
b2NhdGlvbigpLCAiV2ViQXNzZW1ibHlGdW5jdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIG5vdCBp
biBsYXJnZSBhbGxvY2F0aW9uIHNpbmNlIGl0IGlzIEpTQ2FsbGVlLiIpOwogICAgIHJldHVybiBm
dW5jdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKaW5kZXggNGU4OTFhMDlhMjBlZmEyZjk4OTg1ZDk3
OWNhOWY1ZDRlODEzMDJhZi4uM2MxNzVmNTNkZDY5NTRmMjZmYTU1YTA5NDdlN2YxMTcxYjUzZWRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVRvSlNDYWxsZWUuY3BwCkBAIC0yOSwxNSArMjksMTYgQEAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUiLCBudWxs
cHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkgfTsKIAot
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3Nl
bWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBzdHJ1Y3R1cmUpOwotICAg
IGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24o
dm0sIGluc3RhbmNlKTsKICAgICByZXR1cm4gY2FsbGVlOwogfQogCkBAIC01MSwxNSArNTIsMTkg
QEAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1faW5zdGFuY2Uuc2V0KHZtLCB0aGlz
LCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4o
Y2VsbCk7Ci0gICAgdGhpc09iamVjdC0+V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp+V2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKCk7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJs
eVRvSlNDYWxsZWUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW5zdGFuY2UpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKaW5kZXggNDk2Yzg4NTc2YzM5ZjcyMzI3MjM5
OGE1NjY1YzkwNGNjNWMxYjEyMy4uMjY0Yzk0NDY5NWIyNzI5ZjFjNjM3ZGMxNWUwYWM4NWMyYWE2
YzQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmgKQEAgLTMxLDIxICszMSwyNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOworCiBjbGFzcyBXZWJBc3NlbWJseVRvSlND
YWxsZWUgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBXZWJBc3Nl
bWJseVRvSlNDYWxsZWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
KCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKik7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0dXJl
Kik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPiBtX2luc3RhbmNl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305430</attachid>
            <date>2017-03-26 12:07:27 -0700</date>
            <delta_ts>2017-03-26 12:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327040726.patch</filename>
            <type>text/plain</type>
            <size>39204</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li42YTA0MjU2NTE5MTNiOGY4
NzRhNTY4ODIxMDkwNGRhNzFiYWM2OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxNy0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxw
ZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNz
ZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6
IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjppc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIpOgor
ICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGljQ2Fs
bCk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogcnVudGltZS9T
dGFja0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6
CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OnN0b3JlV2FzbUNvbnRl
eHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5QmFzZUFuZFNpemUpOgorICAgICAgICAoSlND
OjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAqIHdhc20vV2FzbUJpbmRp
bmcuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAgICogd2FzbS9X
YXNtQ29udGV4dC5jcHA6CisgICAgICAgIChKU0M6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAg
IChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0UGlubmVkUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlND
OjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAg
ICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlu
bmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUpOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExT
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJB
c3NlbWJseVRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseVRvSlNDYWxsZWU6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlLmg6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxl
ZTo6aW5zdGFuY2UpOgorCiAyMDE3LTAzLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHdhc20gYnkgcmV0dXJuaW5nIGFmdGVyIHdlIGRvIFRMUy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUw
MTYzMzgzMjk5ZGEwZTNlMzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4
NmE4YjY1NDY5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApA
QCAtMjk4LDYgKzI5OCwxMSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAgICAgCiAgICAgYm9vbCBp
c01hcmtlZFJhdyhjb25zdCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKworICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZWTSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KE1hcmtlZEJsb2NrLCBtX3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggNzgzMjA0NzkyMTky
NDQ1YjViZTdmOGNjNTRlMjFiNjE4OGY5Yjc1ZC4uZGEwZDEwZTcxMjUwMjgzNWUyZTQwYjkwYTZj
ODNiYmFmZDU0ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2luY2x1
ZGUgIldhc21NZW1vcnlJbmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0Mgewog
CiBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZWcgcmVzdWx0CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQor
eworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5RmFzdFRMUygpKSB7CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisgICAgbW92ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIGRzdCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAg
c3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9L
RVkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIG1vdmUoc3JjLCBXYXNt
OjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50
ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJldHVybiBsb2FkRnJv
bVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3Jl
VG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApp
bmRleCA1MDBkNjg4MjIzOWNlYjliMjA5NzI1NDQ2ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5Zjlh
Nzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNz
ZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50
NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAK
LSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUo
RkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExT
KCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RG
X1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8g
YWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzcz
Ci0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21Db250ZXh0LCBkc3QpOwotICAgIH0KLQotICAg
IHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFT
VF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JL
ZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2
ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+
d2FzbUNvbnRleHQpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAg
ICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0j
ZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3Rv
cmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0
VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNv
bnRleHQoR1BSUmVnIGRzdCk7CisgICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMp
OworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3RlcigpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVj
dGVkOgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5k
ZXggN2RkYzZiYWUwMDZkY2ZjMWEzZDc3MWEwNjMxMzczZGQyNTc5OWI1YS4uMzAxMGY4NjAwY2M4
Mjg1NDUzNzFhYzkxMTNjNmQ3MzA2MDFjODNiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCkBAIC01ODAsOCArNTgwLDggQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0q
IHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKIHN0YXRpYyBib29sIGlzV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCiB7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQotICAgIC8vIFRoZSBXZWJBc3NlbWJseSAtPiBKUyBzdHViIHNldHMgaXQgY2FsbGVy
IGZyYW1lJ3MgY2FsbGVlIHRvIGEgc2luZ2xldG9uIHdoaWNoIGxpdmVzIG9uIHRoZSBWTS4KLSAg
ICByZXR1cm4gY2FsbGVlID09IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQoKTsKKyAgICAv
LyBUaGUgV2ViQXNzZW1ibHkgLT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxl
ZSB0byBhIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSBpbnN0YW5jZS4KKyAgICByZXR1cm4gY2FsbGVl
LT5pbmhlcml0cyh2bSwgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjppbmZvKCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0odm0pOwogICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwpAQCAtNTg5LDEz
ICs1ODksMTMgQEAgc3RhdGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBK
U0NlbGwqIGNhbGxlZSkKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiB9CiAKLXN0YXRp
YyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGljIEpTQ2VsbCogd2ViQXNz
ZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgLy8gRWFjaCBXZWJBc3NlbWJseS5JbnN0YW5jZSBzaGFyZXMgdGhlIHN0dWJzIGZyb20gdGhl
aXIgV2ViQXNzZW1ibHkuTW9kdWxlLCB3aGljaCBhcmUgdGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0
ZSBvd25lci4KLSAgICByZXR1cm4gbG9hZFdhc21Db250ZXh0KHZtKS0+bW9kdWxlKCk7CisgICAg
cmV0dXJuIGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjYWxsZWUpLT5pbnN0YW5jZSgp
LT5tb2R1bGUoKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0oY2FsbGVlKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTYxMiw3ICs2MTIs
NyBAQCB2b2lkIGxpbmtGb3IoCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxs
ZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBk
b24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFz
c2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5
T3duZXIodm0pIDogY2FsbGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFz
c2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5
T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6IGNhbGxlckNvZGVCbG9jazsKICAgICBBU1NF
UlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5rZWQoKSk7CkBAIC03
MzUsNyArNzM1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIGJvb2wgaXNXZWJB
c3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVl
KCkpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlk
IENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2Vt
Ymx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dl
YkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2Fs
bGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBDYWxsVmFyaWFudExpc3Qg
bGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApp
bmRleCAwODU3ZTM0YmYxZDJiMDQ2ZDdhYmNhNDg5MTIxYzFmMzhjOTAyMmZjLi4yMTUyNGU1ZmE1
NzQ5NjliMzVjOGVlNjA2YjMwZGU5NGQzZTI2NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0xMTQ4LDE2ICsxMTQ4LDE3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0q
IHZtKQogICAgIH0KIAogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6
YXJndW1lbnRHUFIyKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7
CiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgIHZvaWQgKCp0aHJvd1dh
c21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUpID0gW10gKEV4ZWNT
dGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlKSB7CisgICAgdm9pZCAoKnRocm93
V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBl
IHR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIHsKICAgICAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9i
amVjdCgpOwogCiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9
IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVj
dC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdl
Rm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4ZGMyN2E0ZTM3NTA3ZDIyNmRkNTdhOWEwY2Nj
ZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRhNWUxMDQ1NGRhN2EyZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC03MiwxMCArNzIsMTAg
QEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAgfQog
ICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkgeworICAgICAgICBpZiAobV9jYWxs
ZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkpKQorICAgICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgICAgIGlmIChtX2NhbGxlZS0+aXNPYmplY3Qo
KSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUodm0sIGpzQ2Fz
dDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1wbCgpOwotICAgICAgICBlbHNlIGlmICht
X2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+dm0oKSkpCi0gICAgICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICB9CiAgICAgcmV0dXJuIG5hbWUuaXNO
dWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCA4NTExNTQyYjc3ZGZjOGU2ZjJiZWFiZjFmODkzYzc3MzlhYjc0YjM4Li5k
MTA4MTUzZjY4NGUxOWVjODk0NGJkNDRmMTEyNWMxOWZlMTcyNjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDAsNyArMjQwLDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHdlYkFzc2VtYmx5Q2FsbGVlU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNXZWJBc3NlbWJseUNhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJB
c3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwot
ICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmlu
ZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1ZjAyMzE4NDQ1OWNiNjAxMGYzYjcuLjE1OGU2OThiYTQ4
NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNhM2QxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaApAQCAtMzM2LDcgKzMzNiw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDYWxsZWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlOwotICAgIFN0cm9uZzxKU0NlbGw+IHdl
YkFzc2VtYmx5VG9KU0NhbGxlZTsKICNlbmRpZgogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4
cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0ODksMTEgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cp
OwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2FzbUNvbnRleHRPZmZzZXQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgd2FzbUNvbnRleHQpOworICAg
IH0KKwogICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0
aW9uKSB7IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAKICAgICB2b2lkIGNsZWFyTGFzdEV4
Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGZhYzU3YWRkYWYw
NzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjlkOTAzN2IwNzRjNmJlNWI2N2E0ODM3MDA5
Yjc1YWRkZTUyMTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKQEAgLTIyNywyNiArMjI3LDM0IEBAIGNsYXNzIEIzSVJHZW5lcmF0
b3IgewogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21U
b1dhc21DYWxsczsgLy8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4
IHdob3NlIGFkZHJlc3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9t
ZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CisgICAgR1BSUmVnIG1f
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcjsKICAgICBWYWx1ZSogbV96ZXJvVmFsdWVz
W251bVR5cGVzXTsKICAgICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0
aGlzIGxhenkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5Mgog
fTsKIAogc3RhdGljIFZhbHVlKiBsb2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNp
Y0Jsb2NrKiBibG9jaykKIHsKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9j
ay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2lu
KCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3Jh
dGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
LSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVl
ZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRl
eHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7CisgICAgaWYgKHVzZUZhc3RUTFMoKSkg
eworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3
PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOworICAgICAg
ICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNy
b1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
KyAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNv
bnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAgIGppdC5s
b2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigp
LCBwYXRjaHBvaW50KTsKKyAgICB9CiAKLSAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICByZXR1cm4gYmxv
Y2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgUGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQoKS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKIH0KIAog
c3RhdGljIHZvaWQgc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrLCBWYWx1ZSogYXJnKQogeworICAgIC8vIFdlIHVzZSBwaW5uZWQgY2FsbGVlIHNhdmUg
cmVnaXN0ZXIgZm9yIHRoaXMgcHVycG9zZS4gVGh1cywgd2UgZG8gbm90IG5lZWQgdG8gcmVzdG9y
ZSB0aGUgaW5zdGFuZSByZWdpc3RlciBvbiB0aGUgY2FsbGVyIHNpZGUuCisgICAgaWYgKCF1c2VG
YXN0VExTKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwg
T3JpZ2luKCkpOwogICAgIGlmIChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCkpCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKQEAgLTI4Myw3ICsyOTEsOSBAQCBCM0lS
R2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
IGluZm8sIFByb2NlZHVyZSYgcAogICAgIC8vIEZJWE1FIHdlIGRvbid0IHJlYWxseSBuZWVkIHRv
IHBpbiByZWdpc3RlcnMgaGVyZSBpZiB0aGVyZSdzIG5vIG1lbW9yeS4gSXQgbWFrZXMgd2FzbSAt
PiB3YXNtIHRodW5rcyBzaW1wbGVyIGZvciBub3cuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjY2MjMKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5l
ZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgIG1fbWVtb3J5QmFzZUdQUiA9
IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgbV90b3BKU1dlYkFzc2VtYmx5SW5z
dGFuY2VQb2ludGVyID0gcGlubmVkUmVncy50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVy
OwogICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJhc2VHUFIpOworICAgIG1fcHJvYy5w
aW5SZWdpc3RlcihtX3RvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIEFTU0VS
VCghcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVPZmZzZXQpOwogICAgIG1fbWVtb3J5
U2l6ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplUmVnaXN0ZXI7CiAgICAg
Zm9yIChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5z
aXplUmVnaXN0ZXJzKQpAQCAtMzA3LDEyICszMTcsMTIgQEAgc3RydWN0IE1lbW9yeUJhc2VBbmRT
aXplIHsKICAgICBWYWx1ZSogc2l6ZTsKIH07CiAKLXN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBn
ZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBw
cm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1v
cnlCYXNlQW5kU2l6ZShWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9j
ayogYmxvY2spCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9IGJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBpbnN0YW5j
ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKTsKIAotICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5t
ZW1vcnkoKS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0
aGlzIHNpemUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNv
bnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90
KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIp
LT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdl
biByZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5
cGUoc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgp
LT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMg
b24gdGhpcyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0OwogICAgIHJlc3Vs
dC5iYXNlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zm
c2V0T2ZNZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJB
c3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtNDE5LDEyICs0MjksMTEgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRVbnJlYWNoYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgaW50MzJfdCAoKmdy
b3dNZW1vcnkpIChFeGVjU3RhdGUqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIGlu
dDMyX3QgZGVsdGEpIC0+IGludDMyX3QgeworICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhl
Y1N0YXRlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRl
KiBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0LCBpbnQzMl90IGRlbHRh
KSAtPiBpbnQzMl90IHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogaW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwotICAgICAgICBKU1dl
YkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1lbW9yeSgpOworICAgICAg
ICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gd2FzbUNvbnRleHQtPm1lbW9yeSgp
OwogCiAgICAgICAgIGlmIChkZWx0YSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00
NDAsNyArNDQ5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Np
b25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiAgICAgcmVzdWx0ID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDMyLCBPcmlnaW4o
KSwKICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3By
b2MsIE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dNZW1vcnkpKSwKLSAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9p
bnRlciwgT3JpZ2luKCkpLCBkZWx0YSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgbV9pbnN0
YW5jZVZhbHVlLCBkZWx0YSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSht
X2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwog
CkBAIC00NDksNyArNDU4LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4
cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFy
dGlhbFJlc3VsdAogewotICAgIGF1dG8gbWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6
ZShtX3ZtLCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIGF1
dG8gbWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShtX2luc3RhbmNlVmFsdWUsIG1f
cHJvYywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFs
dWUgPSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMSA8PCBz
aGlmdFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJl
Y3QuIik7CkBAIC0xMDgwLDExICsxMDg5LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21X
cmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAg
ICAgICAgKmxpbmtlZENhbGxlZU1vdmUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbGVlTW92
ZUxvY2F0aW9uKTsKICAgICB9KTsKIAotICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZTsKICAgICBjb25z
dCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86Omdl
dCgpOwotICAgIHRvU2F2ZS5zZXQocGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAg
Zm9yIChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5z
aXplUmVnaXN0ZXJzKQotICAgICAgICB0b1NhdmUuc2V0KHJlZ0luZm8uc2l6ZVJlZ2lzdGVyKTsK
KyAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBwaW5uZWRSZWdzLnRvU2F2ZSgpOwogCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgIHVuc2lnbmVkIHRvU2F2ZVNpemUgPSB0b1NhdmUubnVtYmVyT2ZT
ZXRHUFJzKCk7CkBAIC0xMTkxLDEwICsxMTk3LDI0IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9X
YXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUlu
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGSVhNRTogSlNXZWJBc3NlbWJseUNhbGxlZSBz
aG91bGQgaGF2ZSBhIHBvaW50ZXIgdG8gSlNXZWJBc3NlbWJseUluc3RhbmNlIGluc3RlYWQuCisg
ICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIgPSBwaW5uZWRSZWdzLnRv
cEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CisgICAgaWYgKCF1c2VGYXN0VExTKCkpIHsK
KyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAg
ICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpi
bG9ja01hc2spLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKKyAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aW50ZXIsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB0b3BKU1dlYkFzc2VtYmx5SW5zdGFu
Y2VQb2ludGVyKTsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRv
cEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwg
dG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgfQorCiAgICAgaWYgKCEhaW5m
by5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VN
ZW1vcnlQb2ludGVyOwotICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwot
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisKKyAg
ICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3ModG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNlTWVtb3J5KTsKKyAgICAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAg
ICAgfQogICAgICAgICBjb25zdCBhdXRvJiBzaXplUmVncyA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lz
dGVyczsKICAgICAgICAgQVNTRVJUKHNpemVSZWdzLnNpemUoKSA+PSAxKTsKICAgICAgICAgQVNT
RVJUKCFzaXplUmVnc1swXS5zaXplT2Zmc2V0KTsgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGFzc3Vt
ZXMgd2Ugc3RhcnQgYXQgMCwgYW5kIGNhbGN1bGF0ZXMgc3Vic2VxdWVudCBzaXplIHJlZ2lzdGVy
cyByZWxhdGl2ZSB0byAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcu
Y3BwCmluZGV4IGZiNjc2NTdlYTQwY2VjZDBiODY4ODBlYmIyNGM3ZWE3OTEzZjljMzMuLjBlMGYz
N2RjNjYxY2IzY2JjY2UxNmQwYzdjMzE0MDQwOGUxYTJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKQEAgLTY2LDggKzY2LDEwIEBAIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2Fs
bExpbmtJbmZvcywKIAogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGppdC5z
dG9yZTY0KEpJVDo6VHJ1c3RlZEltbTMyKDApLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkpKTsgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3Mu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKLSAgICBqaXQu
c3RvcmVQdHIoSklUOjpUcnVzdGVkSW1tUHRyKHZtLT53ZWJBc3NlbWJseVRvSlNDYWxsZWUuZ2V0
KCkpLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAorICAg
IGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6cmVnVDApOworICAgIGppdC5zdG9yZVB0cihH
UFJJbmZvOjpyZWdUMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7CiAKICAgICB7CiAgICAgICAgIGJvb2wgaGFzQmFkSTY0VXNlID0gZmFsc2U7CkBAIC05Mywx
NiArOTUsMTcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0s
IEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgICAgICBpZiAoaGFzQmFkSTY0
VXNlKSB7CiAgICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcigpOwogICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICBqaXQubG9hZFdh
c21Db250ZXh0KEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgICAgICBhdXRvIGNhbGwg
PSBqaXQuY2FsbCgpOwogICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsK
IAotICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3RhdGUqKSA9IFtdIChFeGVj
U3RhdGUqIGV4ZWMpIC0+IHZvaWQgeworICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShF
eGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIC0+IHZvaWQgewogICAgICAgICAg
ICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7
Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2Fk
V2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0
cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBv
ciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcAppbmRleCA2
NDg0Y2Q0ZjUyNjZhMzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1Li5hN2I4YTJjYjNlY2VjYmIz
MGNkZmNkNjJjMGY0NDQzMmRlZWEyZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNvbnRleHQuY3BwCkBAIC00MCw3ICs0MCw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
bG9hZFdhc21Db250ZXh0KFZNJiB2bSkKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlG
YXN0VExTKCkpCiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3Rh
bmNlKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7
CiAjZW5kaWYKLSAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKICAg
ICByZXR1cm4gdm0ud2FzbUNvbnRleHQ7CiB9CiAKQEAgLTUwLDcgKzQ5LDYgQEAgdm9pZCBzdG9y
ZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCiAgICAgICAgIF9wdGhyZWFk
X3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZv
aWQqPihpbnN0YW5jZSkpOwogI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBl
bHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NzczCiAgICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAK
aW5kZXggOGFjMDg2NjI3OGI1MTM5M2I2NjllYTA5YTdiNTQ4ZDZkOWE3NmIxNC4uNmM4NTlhMzhi
NzRlNjhhMDRmODY2NmEwMGY2NzA4OTRhYTdlZmIyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBAIC0zNCw0MyArMzQs
NTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorc3RhdGljIFZlY3Rv
cjxHUFJSZWc+IGdldFBpbm5lZFJlZ2lzdGVycyh1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdp
c3RlcnMpCit7CisgICAgVmVjdG9yPEdQUlJlZz4gcmVnaXN0ZXJzOworICAgIGpzY0NhbGxpbmdD
b252ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7
CisgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVn
aXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAtLXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVyczsKKyAgICAg
ICAgcmVnaXN0ZXJzLmFwcGVuZChncHIpOworICAgIH0pOworICAgIHJldHVybiByZWdpc3RlcnM7
Cit9CisKIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KQogewogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UGlubmVkUmVnaXN0ZXJJbmZvPiBz
dGF0aWNQaW5uZWRSZWdpc3RlckluZm87CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHN0YXRp
Y1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uoc3RhdGljUGlubmVk
UmVnaXN0ZXJJbmZvRmxhZywgW10gKCkgewogICAgICAgICBWZWN0b3I8UGlubmVkU2l6ZVJlZ2lz
dGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKLSAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVy
OworICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIgPSBJbnZhbGlkR1BSUmVnOworICAg
ICAgICBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9IEludmFsaWRHUFJS
ZWc7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUg
bWVtb3J5IHNpemUgcmVnaXN0ZXIsIGFuZCB3ZSBzaG91bGQgYWxsb3cgZGlmZmVyZW50CiAgICAg
ICAgIC8vICAgICAgICBXZWJBc3NlbWJseS5JbnN0YW5jZSB0byBoYXZlIGRpZmZlcmVudCBwaW5z
LiBSaWdodCBub3cgd2UgdGFrZSBhIHZlY3RvciB3aXRoIG9ubHkgb25lIGVudHJ5LgogICAgICAg
ICAvLyAgICAgICAgSWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIsIHdlIGNh
biBoYXZlIG9uZSBmb3IgZWFjaCBsb2FkIHNpemUgY2xhc3MuCiAgICAgICAgIC8vICAgICAgICBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBwaW5uZWRTaXplcyA9IHsgMCB9OwotICAgICAgICB1bnNpZ25l
ZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOwotICAg
ICAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNo
KFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwotICAg
ICAgICAgICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgaWYgKHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzLS07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzaXpl
UmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdp
c3RlcnMgLSAxXSB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgQVNTRVJUKCFyZW1haW5pbmdQ
aW5uZWRSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3Ry
dWN0KFdURk1vdmUoc2l6ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVyKTsKKyAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAx
OworICAgICAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgICsrbnVtYmVyT2ZQaW5u
ZWRSZWdpc3RlcnM7CisgICAgICAgIFZlY3RvcjxHUFJSZWc+IHBpbm5lZFJlZ3MgPSBnZXRQaW5u
ZWRSZWdpc3RlcnMobnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMpOworCisgICAgICAgIGJhc2VNZW1v
cnlQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgpOworICAgICAgICBpZiAoIXVzZUZhc3RU
TFMoKSkKKyAgICAgICAgICAgIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIgPSBwaW5u
ZWRSZWdzLnRha2VMYXN0KCk7CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNpemVzLnNpemUoKSA9
PSBwaW5uZWRSZWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
aW5uZWRTaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdpc3RlcnMuYXBwZW5k
KHsgcGlubmVkUmVnc1tpXSwgcGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAgIHN0YXRpY1Bpbm5l
ZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9y
eVBvaW50ZXIsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwogICAgIH0pOwogCiAg
ICAgcmV0dXJuIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5nZXQoKTsKIH0KIAotUGlubmVkUmVn
aXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3Rlcklu
Zm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyKQorUGlubmVkUmVn
aXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3Rlcklu
Zm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyLCBHUFJSZWcgdG9w
SlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcikKICAgICA6IHNpemVSZWdpc3RlcnMoV1RGTW92
ZShzaXplUmVnaXN0ZXJzKSkKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VNZW1vcnlQb2lu
dGVyKQorICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcih0b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQb2ludGVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCmluZGV4IDZkZTA3MGExMDQ1MmZmNmJiM2M1
YzI1MDQxMWYxMGU5MTM4OWU0YTIuLmRjY2I3M2Q0ZDUyYzZmNmUwMDg1Y2VkZjE0MTFlMTk0Mjc5
ZDA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJ
bmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJ
bmZvcm1hdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CiAjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVk
ZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21QYWdlQ291bnQuaCIKICNpbmNsdWRlIDx3
dGYvUmVmLmg+CkBAIC00Myw4ICs0NCwyMCBAQCBzdHJ1Y3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5m
byB7CiBzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZvIHsKICAgICBWZWN0b3I8UGlubmVkU2l6ZVJl
Z2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7
CisgICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAgICAgc3RhdGlj
IGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgZ2V0KCk7Ci0gICAgUGlubmVkUmVnaXN0ZXJJbmZv
KFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmLCBHUFJSZWcpOworICAgIFBpbm5lZFJl
Z2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnLCBHUFJS
ZWcpOworCisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJl
Z2lzdGVyU2V0IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LnNldChiYXNlTWVtb3J5UG9pbnRlcik7
CisgICAgICAgIGlmICh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyICE9IEludmFsaWRH
UFJSZWcpCisgICAgICAgICAgICByZXN1bHQuc2V0KHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aW50ZXIpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluZm8gOiBzaXplUmVnaXN0ZXJzKQor
ICAgICAgICAgICAgcmVzdWx0LnNldChpbmZvLnNpemVSZWdpc3Rlcik7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQogfTsKIAogY2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewpAQCAtNzMs
NiArODYsMTUgQEAgY2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewogICAgIGJvb2wgbV9pc0ltcG9y
dCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgYm9vbCB1c2VGYXN0VExTKCkKK3sKKyNpZiBFTkFC
TEUoRkFTVF9UTFNfSklUKQorICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0FTTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmlu
ZGV4IDFjMTFiMGNhNjVjOTE3NDJmOGU0ODEzYzI0ZDk3NWY2NWVlYmFhMTguLjNiN2Y3Yjg3NDZm
ZjhkNDIxNDAxNzhjYTdiNWVlYWVkMDM0NjkyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIK
KyNpbmNsdWRlICJXZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEsNiArODIsNyBAQCB2b2lkIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUsCiAKICAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG1vZHVsZS0+Y29k
ZUJsb2NrKCkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldCh2bSwgdGhpcywgbW9k
dWxlTmFtZXNwYWNlT2JqZWN0KTsKKyAgICBtX2NhbGxlZS5zZXQodm0sIHRoaXMsIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZTo6Y3JlYXRlKHZtLCB2bS53ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1
cmUuZ2V0KCksIHRoaXMpKTsKICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCAiZXhwb3J0cyIpLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIE5vbmUpOwogfQogCkBA
IC05OSw2ICsxMDEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX21lbW9yeSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV90YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAg
IHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1vZHVsZSgpLT5t
b2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdGhpc09iamVjdC0+bV9udW1JbXBvcnRGdW5jdGlvbnM7ICsraSkKICAgICAgICAg
dmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmltcG9ydEZ1bmN0aW9uKGkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgK
aW5kZXggZTIyODQ5Njk2NzIwNWEzMTM2Yzg4M2JiZGUzMjZhZGJjNzExMTMwZC4uNDJhYTFiMzVk
MWIyYTZmOTM5YjlkMzI5NjZiNWYzN2U0ZWU2NDFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTM3LDYgKzM3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Owog
Y2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKK2NsYXNzIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTsK
IAogY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKIHB1YmxpYzoKQEAgLTk3LDYgKzk4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3Rh
bmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJs
eUluc3RhbmNlLCBtX21lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVGFi
bGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX3Rh
YmxlKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2NhbGxlZSk7IH0KICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KICAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8SlNDZWxsPik+KHNpemVvZihKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihzaXpl
X3QgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkg
KyBpbXBvcnRGdW5jdGlvbk51bSAqIHNpemVvZihzaXplb2YoV3JpdGVCYXJyaWVyPEpTQ2VsbD4p
KTsgfQpAQCAtMTE3LDYgKzExOSw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1
YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBXcml0ZUJhcnJpZXI8
SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNz
ZW1ibHlUYWJsZT4gbV90YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlPiBtX2NhbGxlZTsKICAgICBNYWxsb2NQdHI8dWludDY0X3Q+IG1fZ2xvYmFsczsKICAgICB1
bnNpZ25lZCBtX251bUltcG9ydEZ1bmN0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGQxYTgwMWMz
ZWM5MTFhMTlmMDZhYjc5Zjk4YTMzOTAxZjVjNTdjNTEuLjg4YjYxZDVlMjJiYjU2NzM1ZjI5MDk2
ODFmMzI2MTc4OWJhM2E4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0xNTMsNiArMTUzLDcgQEAgV2ViQXNz
ZW1ibHlGdW5jdGlvbiogV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE8KICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIFdlYkFzc2VtYmx5RnVuY3Rp
b24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlGdW5j
dGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCB3YXNtRW50cnlwb2ludCwgc2lnbmF0dXJlSW5kZXgpOwogICAgIGZ1bmN0aW9uLT5m
aW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lLCBpbnN0YW5jZSwganNF
bnRyeXBvaW50LCB3YXNtRW50cnlwb2ludCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZnVu
Y3Rpb24tPmlzTGFyZ2VBbGxvY2F0aW9uKCksICJXZWJBc3NlbWJseUZ1bmN0aW9uIHNob3VsZCBi
ZSBhbGxvY2F0ZWQgbm90IGluIGxhcmdlIGFsbG9jYXRpb24gc2luY2UgaXQgaXMgSlNDYWxsZWUu
Iik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcAppbmRleCA0ZTg5MWEw
OWEyMGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFmLi4zYzE3NWY1M2RkNjk1NGYyNmZhNTVh
MDk0N2U3ZjExNzFiNTNlZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKQEAgLTI5LDE1ICsyOSwxNiBAQAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0
IENsYXNzSW5mbyBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
VG9KU0NhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitXZWJBc3NlbWJseVRv
SlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxX
ZWJBc3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0s
IHN0cnVjdHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgY2FsbGVl
LT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFuY2UpOwogICAgIHJldHVybiBjYWxsZWU7CiB9CiAK
QEAgLTUxLDE1ICs1MiwxOSBAQCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OldlYkFzc2VtYmx5VG9K
U0NhbGxlZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBXZWJBc3NlbWJs
eVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9pbnN0
YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBXZWJBc3NlbWJseVRvSlNDYWxsZWUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJBc3Nl
bWJseVRvSlNDYWxsZWUqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5XZWJBc3NlbWJseVRvSlND
YWxsZWU6On5XZWJBc3NlbWJseVRvSlNDYWxsZWUoKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9pbnN0YW5jZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCA0OTZj
ODg1NzZjMzlmNzIzMjcyMzk4YTU2NjVjOTA0Y2M1YzFiMTIzLi4yNjRjOTQ0Njk1YjI3MjlmMWM2
MzdkYzE1ZTBhYzg1YzJhYTZjNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaApAQCAtMzEsMjEgKzMxLDI3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisKIGNsYXNz
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZSA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAg
c3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAgICBXZWJBc3NlbWJseVRvSlNDYWxs
ZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5SW5z
dGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305432</attachid>
            <date>2017-03-26 12:30:51 -0700</date>
            <delta_ts>2017-03-27 01:05:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327043049.patch</filename>
            <type>text/plain</type>
            <size>50813</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li4zYTJiYmU0MTZhMjA2Yzlk
M2EwM2UwMDY4ZWI0N2MxYTgwNmJiYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNy0wMy0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvTWFya2Vk
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om9mZnNldE9mVk0pOgorICAgICAg
ICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3Rv
cmVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpsb2FkV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKToKKyAgICAgICAgKEpT
Qzo6d2ViQXNzZW1ibHlPd25lcik6CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAo
SlNDOjpsaW5rUG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpTdGFj
a0ZyYW1lOjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAg
ICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6
Vk06Ondhc21Db250ZXh0T2Zmc2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNl
QW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6Cisg
ICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21U
b0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3YXNtL1dhc21Db250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpnZXRQaW5uZWRSZWdpc3RlcnMp
OgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCk6CisgICAgICAg
IChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAg
ICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNt
OjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2ZSk6CisgICAgICAgIChKU0M6Oldhc206OnVzZUZh
c3RUTFMpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3Nl
bWJseUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5VG9KU0NhbGxlZTo6ZGVzdHJveSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuaDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVl
OjppbnN0YW5jZSk6CisKIDIwMTctMDMtMjUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggd2FzbSBieSByZXR1cm5pbmcgYWZ0ZXIgd2UgZG8gVExTLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDgyNjdkMDMxMDg2ZTU1NjA5YzhiOWVl
NzZjMjk1ZjdiMjdhZDNjM2YuLjkyMjY0YWNjMmVkMDIxYWM2ZjJiOWJlNjcyZjMwMTkwMjg1OWIw
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTkzMiw3ICs5MzIsNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCiAgICAgd2FzbS9XYXNtQmluZGluZy5jcHAKICAgICB3YXNtL1dhc21DYWxsaW5nQ29udmVu
dGlvbi5jcHAKLSAgICB3YXNtL1dhc21Db250ZXh0LmNwcAogICAgIHdhc20vV2FzbUZhdWx0U2ln
bmFsSGFuZGxlci5jcHAKICAgICB3YXNtL1dhc21Gb3JtYXQuY3BwCiAgICAgd2FzbS9XYXNtTWVt
b3J5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MDAzMTBjMzdhYjE0YTcy
ZGY1N2FiMjkxYzgyY2E3NDAzNzgzYzBkLi41ODNkMGQzZmY0ODAyYmZlNjQ2YTg3NTg5NjI1ZWYw
YjUyNGYyODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4Miw4ICsyMDgy
LDYgQEAKIAkJQUQyRkNDMzAxREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkUxREI4
MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovOyB9OwogCQlBRDJGQ0MzMTFEQjgz
RDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHkuaCAqLzsgfTsKIAkJQUQyRkNDMzMxREM0MDQ1NDAwQjNFNzM2IC8qIFdhc21Gb3JtYXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkND
MzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovOyB9OwotCQlBRDQxMkIzMzFF
N0IyRTk5MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21D
b250ZXh0LmNwcCAqLzsgfTsKLQkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQx
MkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDQyNTI1MTFFNUQwRTE0MDA5RDJBOTcg
LyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICov
OyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTIxRTVE
MEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCAqLzsgfTsKIAkJQUQ0OTM3QzMxRERC
RTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDkzN0MxMUREQkU2MEEwMDc3QzgwNyAv
KiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87IH07CkBAIC00NjUxLDggKzQ2NDksNiBAQAog
CQlBRDJGQ0MyRTFEQjgzOUY3MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkFzc2VtYmx5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMkYxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNz
ZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJBc3NlbWJseS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYg
LyogV2FzbUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
YXNtRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQUQ0MTJCMzExRTdC
MkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdhc21Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2VJZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBRDQyNTI1MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbENvZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2lu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2lu
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNTQsOCArNjI1MCw2IEBACiAJ
CQkJQUQ0QjFERjgxREYyNDRENzAwNzFBRTMyIC8qIFdhc21CaW5kaW5nLmggKi8sCiAJCQkJNTNG
RDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8sCiAJ
CQkJNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5oICov
LAotCQkJCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi8sCi0J
CQkJQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi8sCiAJCQkJNzlE
QUUyNzkxRTAzQzgyMjAwQjUyNkFBIC8qIFdhc21FeGNlcHRpb25UeXBlLmggKi8sCiAJCQkJQUQy
RkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovLAogCQkJCTdCQzU0N0Qy
MUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi8sCkBAIC04NTcwLDcgKzg1NjQsNiBA
QAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzIyRTVBNzFEQTY0NEE4MDA2RTc3MDkgLyogRlRMRE9NSklUUGF0Y2hwb2lu
dFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDRDMEQxQzNFMUMxMTAwNkNEOTg0IC8q
IEZUTEV4Y2VwdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQUQ0MTJCMzQxRTdCMkU5
RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENDE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJENjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjUxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRQcm9w
ZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNzAyLDcgKzEwNjk1LDYgQEAKIAkJCQlC
Q0RFM0I0MzBFNkM4MzJEMDAxNDUzQTcgLyogU3RydWN0dXJlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVDaGFpbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyQUY3MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJs
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBRDQxMkIzMzFFN0IyRTk5MDA4QUYxNTcgLyogV2Fz
bUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJGMEYyRDExNkJBRUVFOTAwMTg3QzE5
IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjQzOEEzMTky
NzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3
NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAppbmRleCAyMmE3YmE3MGY0N2M1MDE2MzM4MzI5OWRhMGUzZTM0YzViY2RjMjI3Li41NmQ1Y2Jl
YTI0M2RlZTRhMGIxZWUyZTU3M2VjODZhOGI2NTQ2OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTI5OCw2ICsyOTgsMTEgQEAgY2xhc3MgTWFya2VkQmxv
Y2sgewogICAgIAogICAgIGJvb2wgaXNNYXJrZWRSYXcoY29uc3Qgdm9pZCogcCk7CiAgICAgSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9u
OyB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNYXJrZWRCbG9jaywgbV92bSk7CisgICAgfQogICAgIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRv
bVNpemUgLSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCmluZGV4IDc4MzIwNDc5MjE5MjQ0NWI1YmU3ZjhjYzU0ZTIxYjYxODhmOWI3NWQuLmRhMGQx
MGU3MTI1MDI4MzVlMmU0MGI5MGE2YzgzYmJhZmQ1NGRjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAorI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKKyNpbmNsdWRlICJXYXNtTWVtb3J5SW5mb3JtYXRpb24uaCIKKyNlbmRp
ZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6
ZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQpAQCAtNzY2LDYgKzc3
MCw0OSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHJlc3VsdAogICAgIGRvbmUubGluayh0aGlzKTsKIH0K
IAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpsb2FkV2Fz
bUNvbnRleHQoR1BSUmVnIGRzdCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkgeworICAgICAgICBsb2FkRnJvbVRM
U1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIG1vdmUoV2FzbTo6UGlubmVkUmVnaXN0
ZXJJbmZvOjpnZXQoKS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBkc3QpOworfQor
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKQorewor
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKSB7CisgICAgICAgIHN0b3JlVG9UTFNQdHIoc3JjLCBmYXN0VExTT2Zmc2V0Rm9y
S2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyAgICBtb3ZlKHNyYywgV2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b3BKU1dl
YkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6Omxv
YWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQoreworI2lmIEVOQUJMRShG
QVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQor
ICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7
CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQXNzZW1ibHlIZWxwZXJzOjpz
dG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkp
CisgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
OworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNTAwZDY4ODIyMzljZWI5YjIwOTcyNTQ0NmQzY2Nk
ODg5YmRhMTgyOC4uYTc4Y2M2OWY5YTc5NTE2NTI0MzUyMmJiNjIyMDc0OTI3ZDJhNDY1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNjM2LDQ1
ICsxNjM2LDEyIEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJl
ZyBzY3JhdGNoKTsKICNlbmRpZgogCi0gICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRz
dCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7Ci0gICAgICAgICAgICBsb2FkRnJvbVRMU1B0cihm
YXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIC8vIEZJWE1FOiBTYXZlIHRo
aXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBsb2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4
dCwgZHN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykK
LSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHIo
c3JjLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYK
LSAgICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElD
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAg
IHN0b3JlUHRyKHNyYywgJm1fdm0tPndhc21Db250ZXh0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKLSAgICB7Ci0j
aWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9U
TFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorICAgIHZvaWQgbG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpOworICAgIHZvaWQgc3RvcmVX
YXNtQ29udGV4dChHUFJSZWcgc3JjKTsKKyAgICBzdGF0aWMgYm9vbCBsb2FkV2FzbUNvbnRleHRO
ZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9CiAKIHByb3RlY3RlZDoKICAgICBWTSogbV92bTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDdkZGM2YmFlMDA2ZGNmYzFhM2Q3NzFhMDYzMTM3M2Rk
MjU3OTliNWEuLjAzZTFkNWY0MmIyZmFmODUwZDQ0NmI3MDZhNGFmOTc3NTRkYjNmMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVTdHViSW5mby5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgIldh
c21Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTgw
LDggKzU3OSw4IEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8pCiBzdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYg
dm0sIEpTQ2VsbCogY2FsbGVlKQogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAvLyBU
aGUgV2ViQXNzZW1ibHkgLT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0
byBhIHNpbmdsZXRvbiB3aGljaCBsaXZlcyBvbiB0aGUgVk0uCi0gICAgcmV0dXJuIGNhbGxlZSA9
PSB2bS53ZWJBc3NlbWJseVRvSlNDYWxsZWUuZ2V0KCk7CisgICAgLy8gVGhlIFdlYkFzc2VtYmx5
IC0+IEpTIHN0dWIgc2V0cyBpdCBjYWxsZXIgZnJhbWUncyBjYWxsZWUgdG8gYSBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUgaW5zdGFuY2UuCisgICAgcmV0dXJuIGNhbGxlZS0+aW5oZXJpdHModm0sIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZTo6aW5mbygpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKICAgICBVTlVTRURfUEFSQU0oY2FsbGVlKTsKQEAgLTU4OSwxMyArNTg4LDEzIEBAIHN0YXRp
YyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQogfQogCi1zdGF0aWMgSlNDZWxsKiB3ZWJBc3Nl
bWJseU93bmVyKFZNJiB2bSkKK3N0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxs
KiBjYWxsZWUpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIEVhY2ggV2ViQXNz
ZW1ibHkuSW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1v
ZHVsZSwgd2hpY2ggYXJlIHRoZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCi0gICAgcmV0
dXJuIGxvYWRXYXNtQ29udGV4dCh2bSktPm1vZHVsZSgpOworICAgIHJldHVybiBqc0Nhc3Q8V2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2FsbGVlKS0+aW5zdGFuY2UoKS0+bW9kdWxlKCk7CiAjZWxz
ZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxlZSk7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC02MTIsNyArNjExLDcgQEAgdm9pZCBsaW5rRm9y
KAogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9j
aygpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlk
IENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUo
dm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxl
ckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUo
dm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1l
LT5jYWxsZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAg
IEFTU0VSVCghY2FsbExpbmtJbmZvLmlzTGlua2VkKCkpOwpAQCAtNzM1LDcgKzczNCw3IEBAIHZv
aWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFz
c2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKTsKIAogICAgIC8vIFdl
YkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNh
bGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFz
c2VtYmx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6IGNhbGxlckNvZGVCbG9jazsKICAg
ICBBU1NFUlQob3duZXIpOwogCiAgICAgQ2FsbFZhcmlhbnRMaXN0IGxpc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggMDg1N2UzNGJmMWQy
YjA0NmQ3YWJjYTQ4OTEyMWMxZjM4YzkwMjJmYy4uNTIxN2I4MjU4NmRlZTVlNGY5ZjBkYTRjNmIw
Nzg1NDYwMjYyNDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIk1hdGhDb21tb24uaCIKICNp
bmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlNwZWNp
YWxpemVkVGh1bmtKSVQuaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldh
c21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtMTE0OCwxNiArMTE0NywxNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKFZNKiB2
bSkKICAgICB9CiAKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFdhc21Db250ZXh0KEdQUkluZm86OmFy
Z3VtZW50R1BSMik7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbCgpOwog
ICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKLSAgICB2b2lkICgqdGhyb3dXYXNt
RXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNtOjpFeGNlcHRpb25UeXBlKSA9IFtdIChFeGVjU3Rh
dGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSkgeworICAgIHZvaWQgKCp0aHJvd1dh
c21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUsIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0
eXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0KSB7CiAgICAgICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgpOworICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmpl
Y3QoKTsKIAogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvciogZXJyb3IgPSBK
U1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3Qt
PldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVycm9yTWVzc2FnZUZv
ckV4Y2VwdGlvblR5cGUodHlwZSkpOwogICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
dGhyb3dTY29wZSwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFj
a0ZyYW1lLmNwcAppbmRleCA2ZDQ3ODY0Yzk3OGRjMjdhNGUzNzUwN2QyMjZkZDU3YTlhMGNjY2Uy
Li4xNjRjNGY1N2JjZDRiMmM0YmY3ZmMwNzY0YTVlMTA0NTRkYTdhMmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAtNzIsMTAgKzcyLDEwIEBA
IFN0cmluZyBTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUoVk0mIHZtKSBjb25zdAogICAgIH0KICAg
ICBTdHJpbmcgbmFtZTsKICAgICBpZiAobV9jYWxsZWUpIHsKKyAgICAgICAgaWYgKG1fY2FsbGVl
LT5pc0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgpKSkKKyAgICAgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoIjx3YXNtPiIpOwogICAgICAgICBpZiAobV9jYWxsZWUtPmlzT2JqZWN0KCkp
CiAgICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtLCBqc0Nhc3Q8
SlNPYmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKLSAgICAgICAgZWxzZSBpZiAobV9j
YWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkpKQotICAgICAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgfQogICAgIHJldHVybiBuYW1lLmlzTnVs
bCgpID8gZW1wdHlTdHJpbmcoKSA6IG5hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggODUxMTU0MmI3N2RmYzhlNmYyYmVhYmYxZjg5M2M3NzM5YWI3NGIzOC4uZDEw
ODE1M2Y2ODRlMTllYzg5NDRiZDQ0ZjExMjVjMTlmZTE3MjYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQwLDcgKzI0MCw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBX
ZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAg
ICB3ZWJBc3NlbWJseVRvSlNDYWxsZWUuc2V0KCp0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6
OmNyZWF0ZSgqdGhpcywgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpKSk7CiAj
ZW5kaWYKICAgICBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRl
eCA5ZDg2YWExOWE5MzNjZWEzOGFiNWYwMjMxODQ0NTljYjYwMTBmM2I3Li4xNThlNjk4YmE0ODcx
MjkxNTU1NTU4ZGQyNmQ1ZmFhMDljYTNkMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTMzNiw3ICszMzYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q2FsbGVlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZTsKLSAgICBTdHJvbmc8SlNDZWxsPiB3ZWJB
c3NlbWJseVRvSlNDYWxsZWU7CiAjZW5kaWYKICAgICBTdHJvbmc8U3RydWN0dXJlPiBtb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdFeHBT
dHJ1Y3R1cmU7CkBAIC00OTAsNiArNDg5LDExIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVk0sIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IHdhc21Db250ZXh0T2Zmc2V0KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVk0sIHdhc21Db250ZXh0KTsKKyAgICB9
CisKICAgICB2b2lkIHJlc3RvcmVQcmV2aW91c0V4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlv
bikgeyBzZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsgfQogCiAgICAgdm9pZCBjbGVhckxhc3RFeGNl
cHRpb24oKSB7IG1fbGFzdEV4Y2VwdGlvbiA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBmYWM1N2FkZGFmMDc0
ZTlhOGNmZTYwNjMzMzVmMzBkYTJlOTZkM2EyLi5iNWJjNGU0YzQwNzlhNDQ4NmVlNTdiYWZmNjBm
YWVhNTQ4NGIzZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUg
Ildhc21DYWxsaW5nQ29udmVudGlvbi5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5j
bHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIu
aCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC0yMjcsMjYgKzIyNiwzNCBAQCBjbGFzcyBC
M0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5j
dGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAg
R1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOworICAg
IEdQUlJlZyBtX3RvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7CiAgICAgVmFsdWUqIG1f
emVyb1ZhbHVlc1tudW1UeXBlc107CiAgICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsgLy8gRklY
TUU6IG1ha2UgdGhpcyBsYXp5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3OTIKIH07CiAKIHN0YXRpYyBWYWx1ZSogbG9hZFdhc21Db250ZXh0KFByb2NlZHVyZSYg
cHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBv
aW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBl
KCksIE9yaWdpbigpKTsKLSAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OmxvYWRXYXNt
Q29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBqaXQubG9h
ZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOworICAgIGlmICh1c2VG
YXN0VExTKCkpIHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2st
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigp
KTsKKyAgICAgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3RlcigpKQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6
bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgICAg
ICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElkZW50aXR5
LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisgICAgfQogCi0gICAgcmV0dXJuIGJsb2NrLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIElkZW50aXR5LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisgICAg
cmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRl
cik7CiB9CiAKIHN0YXRpYyB2b2lkIHN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBC
YXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKIHsKKyAgICAvLyBXZSB1c2UgcGlubmVkIGNh
bGxlZSBzYXZlIHJlZ2lzdGVyIGZvciB0aGlzIHB1cnBvc2UuIFRodXMsIHdlIGRvIG5vdCBuZWVk
IHRvIHJlc3RvcmUgdGhlIGluc3RhbmUgcmVnaXN0ZXIgb24gdGhlIGNhbGxlciBzaWRlLgorICAg
IGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICByZXR1cm47CisKICAgICBQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywg
QjM6OlZvaWQsIE9yaWdpbigpKTsKICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpzdG9yZVdhc21Db250
ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQogICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC0yODMsNyArMjkw
LDkgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKICAgICAvLyBGSVhNRSB3ZSBkb24ndCByZWFs
bHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhlcmUgaWYgdGhlcmUncyBubyBtZW1vcnkuIEl0IG1h
a2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2ltcGxlciBmb3Igbm93LiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjIzCiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJ
bmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICBtX21lbW9y
eUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOworICAgIG1fdG9wSlNXZWJB
c3NlbWJseUluc3RhbmNlUG9pbnRlciA9IHBpbm5lZFJlZ3MudG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlUG9pbnRlcjsKICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlCYXNlR1BSKTsKKyAg
ICBtX3Byb2MucGluUmVnaXN0ZXIobV90b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKTsK
ICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAg
ICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lz
dGVyOwogICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKQEAgLTMwNywxMiArMzE2LDEyIEBAIHN0cnVjdCBNZW1v
cnlCYXNlQW5kU2l6ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1zdGF0aWMgTWVtb3J5QmFz
ZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFBy
b2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgTWVtb3J5QmFzZUFuZFNp
emUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2Ms
IEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBibG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4o
KSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAK
LSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5t
ZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiBy
ZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
bG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVv
Zih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
PihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQq
KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIp
LT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVn
ZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsK
ICAgICByZXN1bHQuYmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExv
YWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlN
ZW1vcnk6Om9mZnNldE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVu
ZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmpl
Y3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTQxOSwxMiArNDI4
LDExIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVz
dWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBk
ZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGlu
dDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRl
KiBleGVjLCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01l
bW9yeSkgKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMyX3QpID0gW10g
KEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCwgaW50
MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAg
ICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5tZW1vcnko
KTsKKyAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdhc21Db250ZXh0
LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAgcmV0dXJu
IC0xOwpAQCAtNDQwLDcgKzQ0OCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9y
eShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogICAgIHJl
c3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQz
MiwgT3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJW
YWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSks
Ci0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOworICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4o
KSksIG1faW5zdGFuY2VWYWx1ZSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xv
YmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKIApAQCAtNDQ5LDcgKzQ1Nyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAog
YXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5
QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2Nr
KTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5j
ZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJf
dCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXpl
ID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0
byBiZSBjb3JyZWN0LiIpOwpAQCAtMTA4MCwxMSArMTA4OCw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0
ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwg
V2FzbUluCiAgICAgICAgICpsaW5rZWRDYWxsZWVNb3ZlID0gbGlua0J1ZmZlci5sb2NhdGlvbk9m
KGNhbGxlZU1vdmVMb2NhdGlvbik7CiAgICAgfSk7CiAKLSAgICBSZWdpc3RlclNldCB0b1NhdmU7
CiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0
ZXJJbmZvOjpnZXQoKTsKLSAgICB0b1NhdmUuc2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50
ZXIpOwotICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKLSAgICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVS
ZWdpc3Rlcik7CisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlID0gcGlubmVkUmVncy50b1NhdmUoKTsK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB1bnNpZ25lZCB0b1NhdmVTaXplID0gdG9TYXZl
Lm51bWJlck9mU2V0R1BScygpOwpAQCAtMTE5MSwxMCArMTE5NiwyNCBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRl
eHQsIFdhc21JbgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRklYTUU6IEpTV2ViQXNzZW1i
bHlDYWxsZWUgc2hvdWxkIGhhdmUgYSBwb2ludGVyIHRvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBp
bnN0ZWFkLgorICAgIEdQUlJlZyB0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyID0gcGlu
bmVkUmVncy50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyOworICAgIGlmICghdXNlRmFz
dFRMUygpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50
ZXIpOworICAgICAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJr
ZWRCbG9jazo6YmxvY2tNYXNrKSwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcik7Cisg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5
SW5zdGFuY2VQb2ludGVyLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSgpKSwgdG9wSlNXZWJBc3Nl
bWJseUluc3RhbmNlUG9pbnRlcik7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyLCBWTTo6d2FzbUNvbnRleHRP
ZmZzZXQoKSksIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOworICAgIH0KKwogICAg
IGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVk
UmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNl
TWVtb3J5KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VN
ZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1v
cnkpOworCisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9y
eSk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1l
bW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9y
eSk7CisgICAgICAgIH0KICAgICAgICAgY29uc3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdz
LnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAg
ICAgICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0uc2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcg
Y29kZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAsIGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6
ZSByZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CaW5kaW5nLmNwcAppbmRleCBmYjY3NjU3ZWE0MGNlY2QwYjg2ODgwZWJiMjRjN2VhNzkxM2Y5
YzMzLi5kYTk5ZGRmNTk1NDFhMDQ5NzI2ZDc4ZTY1MjJlZGNkMjg3NjY2NTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKLSNpbmNsdWRlICJXYXNtQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7CkBAIC02Niw4ICs2NSwxMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5m
b3MsCiAKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmU2NChK
SVQ6OlRydXN0ZWRJbW0zMigwKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSk7IC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0gICAgaml0LnN0b3JlUHRy
KEpJVDo6VHJ1c3RlZEltbVB0cih2bS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklU
OjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxs
ZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKKyAgICBqaXQubG9h
ZFdhc21Db250ZXh0KEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWxsZWUoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6
cmVnVDAsIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAg
ICAgewogICAgICAgICBib29sIGhhc0JhZEk2NFVzZSA9IGZhbHNlOwpAQCAtOTMsMTYgKzk0LDE3
IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2Fs
bExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgaWYgKGhhc0JhZEk2NFVzZSkgewog
ICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIoKTsKICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4
dChHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICAgICAgYXV0byBjYWxsID0gaml0LmNh
bGwoKTsKICAgICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKLSAgICAg
ICAgICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKikgPSBbXSAoRXhlY1N0YXRlKiBl
eGVjKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRl
KiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0KSAtPiB2b2lkIHsKICAgICAgICAgICAgICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAg
ICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250
ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCAq
dm0sIGdsb2JhbE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUo
KSwgQVNDSUlMaXRlcmFsKCJpNjQgbm90IGFsbG93ZWQgYXMgcmV0dXJuIHR5cGUgb3IgYXJndW1l
bnQgdG8gYW4gaW1wb3J0ZWQgZnVuY3Rpb24iKSk7CiAgICAgICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDY0ODRjZDRmNTI2NmEzOGU4MjE1NGE3MWQ3MDUyYmFhZWU0ODk0MjUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgotCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotCi0jaW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNs
dWRlIDx3dGYvRmFzdFRMUy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQotewotI2lmIEVOQUJMRShGQVNUX1RMU19K
SVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNw
ZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOwotI2VuZGlmCi0gICAgLy8gRklY
TUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgcmV0dXJuIHZtLndhc21Db250
ZXh0OwotfQotCi12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGluc3RhbmNlKQotewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKE9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICBfcHRocmVhZF9zZXRzcGVj
aWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5z
dGFuY2UpKTsKLSNlbmRpZgotICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJl
IHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTc3MwotICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Db250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNWU4
YTE4ZDJiMDc0ODFlZTYwMGY4YjcwMWU1M2M2MzllNWZjYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNvbnRleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTsKLWNsYXNzIFZNOwotCi1KU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29u
dGV4dChWTSYpOwotdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKik7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZv
cm1hdGlvbi5jcHAKaW5kZXggOGFjMDg2NjI3OGI1MTM5M2I2NjllYTA5YTdiNTQ4ZDZkOWE3NmIx
NC4uNmM4NTlhMzhiNzRlNjhhMDRmODY2NmEwMGY2NzA4OTRhYTdlZmIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBA
IC0zNCw0MyArMzQsNTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAor
c3RhdGljIFZlY3RvcjxHUFJSZWc+IGdldFBpbm5lZFJlZ2lzdGVycyh1bnNpZ25lZCByZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMpCit7CisgICAgVmVjdG9yPEdQUlJlZz4gcmVnaXN0ZXJzOworICAg
IGpzY0NhbGxpbmdDb252ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZd
IChSZWcgcmVnKSB7CisgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmICghcmVtYWlu
aW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChy
ZWcpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAtLXJlbWFpbmluZ1Bpbm5lZFJlZ2lz
dGVyczsKKyAgICAgICAgcmVnaXN0ZXJzLmFwcGVuZChncHIpOworICAgIH0pOworICAgIHJldHVy
biByZWdpc3RlcnM7Cit9CisKIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgUGlubmVkUmVnaXN0
ZXJJbmZvOjpnZXQoKQogewogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UGlubmVkUmVn
aXN0ZXJJbmZvPiBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm87CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uo
c3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZywgW10gKCkgewogICAgICAgICBWZWN0b3I8UGlu
bmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKLSAgICAgICAgR1BSUmVnIGJhc2VN
ZW1vcnlQb2ludGVyOworICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIgPSBJbnZhbGlk
R1BSUmVnOworICAgICAgICBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlciA9
IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1v
cmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIsIGFuZCB3ZSBzaG91bGQgYWxsb3cgZGlm
ZmVyZW50CiAgICAgICAgIC8vICAgICAgICBXZWJBc3NlbWJseS5JbnN0YW5jZSB0byBoYXZlIGRp
ZmZlcmVudCBwaW5zLiBSaWdodCBub3cgd2UgdGFrZSBhIHZlY3RvciB3aXRoIG9ubHkgb25lIGVu
dHJ5LgogICAgICAgICAvLyAgICAgICAgSWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVn
aXN0ZXIsIHdlIGNhbiBoYXZlIG9uZSBmb3IgZWFjaCBsb2FkIHNpemUgY2xhc3MuCiAgICAgICAg
IC8vICAgICAgICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjI5NTIKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBwaW5uZWRTaXplcyA9IHsgMCB9OwotICAg
ICAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXpl
KCkgKyAxOwotICAgICAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lz
dGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgaWYgKCFyZWcuaXNHUFIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVn
LmdwcigpOwotICAgICAgICAgICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVn
aXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7Ci0g
ICAgICAgICAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7Ci0gICAgICAgICAgICAgICAg
cmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZXNbLS1yZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMgLSAxXSB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgQVNTRVJU
KCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3Rl
ckluZm8uY29uc3RydWN0KFdURk1vdmUoc2l6ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVy
KTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXpl
cy5zaXplKCkgKyAxOworICAgICAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgICsr
bnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnM7CisgICAgICAgIFZlY3RvcjxHUFJSZWc+IHBpbm5lZFJl
Z3MgPSBnZXRQaW5uZWRSZWdpc3RlcnMobnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMpOworCisgICAg
ICAgIGJhc2VNZW1vcnlQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgpOworICAgICAgICBp
ZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aW50ZXIgPSBwaW5uZWRSZWdzLnRha2VMYXN0KCk7CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNp
emVzLnNpemUoKSA9PSBwaW5uZWRSZWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwaW5uZWRTaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdp
c3RlcnMuYXBwZW5kKHsgcGlubmVkUmVnc1tpXSwgcGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAg
IHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJz
KSwgYmFzZU1lbW9yeVBvaW50ZXIsIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXIpOwog
ICAgIH0pOwogCiAgICAgcmV0dXJuIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5nZXQoKTsKIH0K
IAotUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNp
emVSZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVy
KQorUGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNp
emVSZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVy
LCBHUFJSZWcgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcikKICAgICA6IHNpemVSZWdp
c3RlcnMoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSkKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJh
c2VNZW1vcnlQb2ludGVyKQorICAgICwgdG9wSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pbnRlcih0
b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCmluZGV4IDZkZTA3MGEx
MDQ1MmZmNmJiM2M1YzI1MDQxMWYxMGU5MTM4OWU0YTIuLmRjY2I3M2Q0ZDUyYzZmNmUwMDg1Y2Vk
ZjE0MTFlMTk0Mjc5ZDA3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyU2V0
LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21QYWdlQ291bnQuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00Myw4ICs0NCwyMCBAQCBzdHJ1Y3QgUGlubmVkU2l6
ZVJlZ2lzdGVySW5mbyB7CiBzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZvIHsKICAgICBWZWN0b3I8
UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKICAgICBHUFJSZWcgYmFzZU1l
bW9yeVBvaW50ZXI7CisgICAgR1BSUmVnIHRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaW50ZXI7
CiAgICAgc3RhdGljIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgZ2V0KCk7Ci0gICAgUGlubmVk
UmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmLCBHUFJSZWcpOwor
ICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwg
R1BSUmVnLCBHUFJSZWcpOworCisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LnNldChiYXNlTWVt
b3J5UG9pbnRlcik7CisgICAgICAgIGlmICh0b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2ludGVy
ICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXN1bHQuc2V0KHRvcEpTV2ViQXNzZW1i
bHlJbnN0YW5jZVBvaW50ZXIpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGluZm8gOiBzaXpl
UmVnaXN0ZXJzKQorICAgICAgICAgICAgcmVzdWx0LnNldChpbmZvLnNpemVSZWdpc3Rlcik7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogfTsKIAogY2xhc3MgTWVtb3J5SW5mb3JtYXRp
b24gewpAQCAtNzMsNiArODYsMTUgQEAgY2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewogICAgIGJv
b2wgbV9pc0ltcG9ydCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgYm9vbCB1c2VGYXN0VExTKCkK
K3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJB
c3NlbWJseUZhc3RUTFMoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0FTTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0
YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwCmluZGV4IDFjMTFiMGNhNjVjOTE3NDJmOGU0ODEzYzI0ZDk3NWY2NWVlYmFhMTgu
LjNiN2Y3Yjg3NDZmZjhkNDIxNDAxNzhjYTdiNWVlYWVkMDM0NjkyYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlNb2R1bGUuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEsNiArODIsNyBA
QCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsCiAKICAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMs
IG1vZHVsZS0+Y29kZUJsb2NrKCkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldCh2
bSwgdGhpcywgbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKKyAgICBtX2NhbGxlZS5zZXQodm0sIHRo
aXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKHZtLCB2bS53ZWJBc3NlbWJseVRvSlND
YWxsZWVTdHJ1Y3R1cmUuZ2V0KCksIHRoaXMpKTsKICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhwb3J0cyIpLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIE5v
bmUpOwogfQogCkBAIC05OSw2ICsxMDEsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21lbW9yeSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9j
YWxsZWUpOwogICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3Qt
Pm1vZHVsZSgpLT5tb2R1bGVJbmZvcm1hdGlvbigpLmdsb2JhbHMuc2l6ZSgpKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9udW1JbXBvcnRGdW5jdGlvbnM7ICsr
aSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmltcG9ydEZ1bmN0aW9uKGkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmgKaW5kZXggZTIyODQ5Njk2NzIwNWEzMTM2Yzg4M2JiZGUzMjZhZGJjNzExMTMw
ZC4uNDJhYTFiMzVkMWIyYTZmOTM5YjlkMzI5NjZiNWYzN2U0ZWU2NDFkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgK
QEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OwogY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKK2NsYXNzIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZTsKIAogY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTk3LDYgKzk4LDcgQEAgY2xhc3MgSlNXZWJB
c3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZNZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX21lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mVGFibGUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUlu
c3RhbmNlLCBtX3RhYmxlKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2NhbGxl
ZSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KICAgICBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8SlNDZWxsPik+KHNpemVvZihKU1dl
YkFzc2VtYmx5SW5zdGFuY2UpKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRG
dW5jdGlvbihzaXplX3QgaW1wb3J0RnVuY3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mSW1wb3J0
RnVuY3Rpb25zKCkgKyBpbXBvcnRGdW5jdGlvbk51bSAqIHNpemVvZihzaXplb2YoV3JpdGVCYXJy
aWVyPEpTQ2VsbD4pKTsgfQpAQCAtMTE3LDYgKzExOSw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVy
PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1lbW9yeT4gbV9tZW1vcnk7CiAgICAgV3JpdGVCYXJy
aWVyPEpTV2ViQXNzZW1ibHlUYWJsZT4gbV90YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKICAgICBNYWxsb2NQdHI8dWludDY0X3Q+IG1fZ2xv
YmFsczsKICAgICB1bnNpZ25lZCBtX251bUltcG9ydEZ1bmN0aW9uczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmlu
ZGV4IGQxYTgwMWMzZWM5MTFhMTlmMDZhYjc5Zjk4YTMzOTAxZjVjNTdjNTEuLjU2NDMzM2IzOTky
OWU2ZjkwOWQ1Nzg2NTJhNTgzOWZiZTE5ODVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zOSwxNSArMzks
MzMgQEAKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUg
Ildhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0Zh
c3RUTFMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5RnVuY3Rpb246OnNfaW5mbyA9IHsgIldl
YkFzc2VtYmx5RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFdlYkFzc2VtYmx5RnVuY3Rpb24pIH07CiAKK3N0YXRpYyBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJlYWRfZ2V0c3Bl
Y2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisjZW5kaWYKKyAgICByZXR1cm4g
dm0ud2FzbUNvbnRleHQ7Cit9CisKK3N0YXRpYyB2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZt
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQoreworI2lmIEVOQUJMRShGQVNUX1RM
U19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAg
ICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdp
c2VfY2FzdDx2b2lkKj4oaW5zdGFuY2UpKTsKKyNlbmRpZgorICAgIHZtLndhc21Db250ZXh0ID0g
aW5zdGFuY2U7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxX
ZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpAQCAtMTIxLDYgKzEzOSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJn
Q291bnQsIHJlbWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMg
ZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5
IEIzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2CisgICAg
Ly8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gbWFrZSBsb2FkV2FzbUNvbnRleHQgYW5kIHN0b3Jl
V2FzbUNvbnRleHQgbm8tb3AgaWYgd2UgdXNlIHBpbm5lZCByZWdpc3RlcnMuCisgICAgLy8gSG93
ZXZlciwgd2UgdXNlIFZNLndhc21Db250ZXh0IGZpZWxkIHRvIHBhc3MgaW5zdGFuY2UgdG8gd2Fz
bSBmdW5jdGlvbidzIEpTIGdsdWUgY29kZS4KKyAgICAvLyBPbmNlIHdlIHN0YXJ0IHVzaW5nIHVz
dWFsIFdlYkFzc2VtYmx5RnVuY3Rpb24gYXMgY2FsbGVlLCB3ZSBjYW4gcmV0cmlldmUgaW5zdGFu
Y2UgZnJvbSB0aGF0LgogICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1i
bHlJbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7CiAgICAgc3RvcmVXYXNtQ29udGV4dCh2
bSwgd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5p
bnN0YW5jZSgpKTsKQEAgLTE1Myw2ICsxNzQsNyBAQCBXZWJBc3NlbWJseUZ1bmN0aW9uKiBXZWJB
c3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0
aW9uU3RydWN0dXJlKCk7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseUZ1bmN0aW9uPih2bS5oZWFwKSkgV2Vi
QXNzZW1ibHlGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHdhc21FbnRyeXBv
aW50LCBzaWduYXR1cmVJbmRleCk7CiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBl
eGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGluc3RhbmNlLCBqc0VudHJ5cG9pbnQsIHdhc21FbnRy
eXBvaW50KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFmdW5jdGlvbi0+aXNMYXJnZUFsbG9j
YXRpb24oKSwgIldlYkFzc2VtYmx5RnVuY3Rpb24gc2hvdWxkIGJlIGFsbG9jYXRlZCBub3QgaW4g
bGFyZ2UgYWxsb2NhdGlvbiBzaW5jZSBpdCBpcyBKU0NhbGxlZS4iKTsKICAgICByZXR1cm4gZnVu
Y3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCmluZGV4IDRlODkxYTA5YTIwZWZhMmY5ODk4NWQ5Nzlj
YTlmNWQ0ZTgxMzAyYWYuLjNjMTc1ZjUzZGQ2OTU0ZjI2ZmE1NWEwOTQ3ZTdmMTE3MWI1M2VkZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9K
U0NhbGxlZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlLmNwcApAQCAtMjksMTUgKzI5LDE2IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIiwgbnVsbHB0
ciwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVRvSlNDYWxsZWUpIH07CiAKLVdl
YkFzc2VtYmx5VG9KU0NhbGxlZSogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1dlYkFzc2VtYmx5VG9KU0NhbGxlZSogV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUq
IGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgc3RydWN0dXJlKTsKLSAgICBj
YWxsZWUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZt
LCBpbnN0YW5jZSk7CiAgICAgcmV0dXJuIGNhbGxlZTsKIH0KIApAQCAtNTEsMTUgKzUyLDE5IEBA
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit2b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywg
aW5zdGFuY2UpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCit2b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNl
bGwpOwotICAgIHRoaXNPYmplY3QtPldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6fldlYkFzc2VtYmx5
VG9KU0NhbGxlZSgpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlU
b0pTQ2FsbGVlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCmluZGV4IDQ5NmM4ODU3NmMzOWY3MjMyNzIzOThh
NTY2NWM5MDRjYzVjMWIxMjMuLjI2NGM5NDQ2OTViMjcyOWYxYzYzN2RjMTVlMGFjODVjMmFhNmM0
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VG9KU0NhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VG9KU0NhbGxlZS5oCkBAIC0zMSwyMSArMzEsMjcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKwogY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOworCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSgp
IHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSopOwogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYsIFN0cnVjdHVyZSop
OworCisgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305453</attachid>
            <date>2017-03-27 01:05:52 -0700</date>
            <delta_ts>2017-03-27 01:40:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327170551.patch</filename>
            <type>text/plain</type>
            <size>59221</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTkwMjI2OTY2MzhmYTVlMzlmZmQ3NDFjMGNjMzNjNTBjYzY3OTc5Li45YjNhMWM3NDhmYjJlMjM1
YjkxNDYzNWYxZGQwM2NmYTczOTUzYWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IHBpbm5lZCByZWdpc3Rl
ciB0byBob2xkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0
byByZXByZXNlbnQgdGhlIGNvbnRleHQgb2YgcnVubmluZyBXYXNtIGNvZGUuCisgICAgICAgIFdo
aWxlIHdlIHVzZSBmYXN0IFRMUyB0byBob2xkIHRoZSBjb250ZXh0IGluIG1hY09TLCB3ZSBkbyBu
b3QgaGF2ZQorICAgICAgICBhbnkgc3lzdGVtIHJlc2VydmVkIGZhc3QgVExTIHNsb3QgaW4gdGhl
IG90aGVyIHN5c3RlbXMuIFRoaXMgcGlubmVkCisgICAgICAgIHJlZ2lzdGVyIGFwcHJvYWNoIGlz
IHVzZWQgaW4gdGhlc2Ugc3lzdGVtcy4gVGhlc2UgY2hhbmdlcyBkZWNvdXBsZQorICAgICAgICBW
TSBmcm9tIFdhc20gbW9kdWxlIHRvIG1ha2UgV2FzbSBtb2R1bGUgcG9zaXRpb24gaW5kZXBlbmRl
bnQgY29kZS4KKworICAgICAgICBXaGlsZSB1c2luZyBmYXN0IFRMUyBjb3VsZCBiZSBiZW5lZmlj
aWFsIGluIHg2NCBzeXN0ZW1zIHdoaWNoIG51bWJlciBvZgorICAgICAgICByZWdpc3RlcnMgaXMg
cmVsYXRpdmVseSBzbWFsbCwgcGlubmVkIHJlZ2lzdGVyIGFwcHJvYWNoIGNvdWxkIGJlCisgICAg
ICAgIGJlbmVmaWNpYWwgaW4gQVJNNjQgd2hpY2ggaGFzIHBsZW50eSBvZiByZWdpc3RlcnMuIElu
IG1hY09TLCB3ZSBjYW4KKyAgICAgICAgc3dpdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo
ZSBydW50aW1lIGZsYWcuIFRodXMgbWFjT1MgcG9ydCBjYW4KKyAgICAgICAgY29tcGFyZSB0aGUg
cGVyZm9ybWFuY2UgYW5kIGRlY2lkZSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGFmdGVy
CisgICAgICAgIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
b2Zmc2V0T2ZWTSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6
CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWND
YWxsKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Ondhc21Db250ZXh0T2Zmc2V0KToKKyAgICAgICAg
KiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bG9hZFdh
c21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNy
ZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpnZXRQaW5uZWRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdp
c3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6
UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2ZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OnVzZUZhc3RUTFMpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
VG9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpkZXN0cm95KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oOgorICAgICAgICAoSlND
Ojppc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSk6CisKIDIwMTctMDMtMjUgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggd2FzbSBieSByZXR1cm5pbmcgYWZ0ZXIg
d2UgZG8gVExTLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDgyNjdkMDMx
MDg2ZTU1NjA5YzhiOWVlNzZjMjk1ZjdiMjdhZDNjM2YuLjkyMjY0YWNjMmVkMDIxYWM2ZjJiOWJl
NjcyZjMwMTkwMjg1OWIwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTkzMiw3ICs5MzIsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHdhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCiAgICAgd2FzbS9XYXNtQmluZGluZy5jcHAKICAgICB3YXNtL1dh
c21DYWxsaW5nQ29udmVudGlvbi5jcHAKLSAgICB3YXNtL1dhc21Db250ZXh0LmNwcAogICAgIHdh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKICAgICB3YXNtL1dhc21Gb3JtYXQuY3BwCiAg
ICAgd2FzbS9XYXNtTWVtb3J5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
MDAzMTBjMzdhYjE0YTcyZGY1N2FiMjkxYzgyY2E3NDAzNzgzYzBkLi41ODNkMGQzZmY0ODAyYmZl
NjQ2YTg3NTg5NjI1ZWYwYjUyNGYyODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjA4Miw4ICsyMDgyLDYgQEAKIAkJQUQyRkNDMzAxREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2Vi
QXNzZW1ibHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovOyB9Owog
CQlBRDJGQ0MzMTFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQyRkNDMkYxREI4MzlGNzAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLzsgfTsKIAkJQUQyRkNDMzMxREM0MDQ1NDAwQjNFNzM2
IC8qIFdhc21Gb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovOyB9
OwotCQlBRDQxMkIzMzFFN0IyRTk5MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzExRTdCMkU4QTAw
OEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLzsgfTsKLQkJQUQ0MTJCMzQxRTdCMkU5RTAwOEFG
MTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBRDQyNTI1MTFF
NUQwRTE0MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxs
Q29kZU9yaWdpbi5oICovOyB9OwogCQlBRDQyNTI1MzFFNUQwRjQ3MDA5RDJBOTcgLyogRnVsbENv
ZGVPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCAqLzsgfTsK
IAkJQUQ0OTM3QzMxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDkzN0MxMURE
QkU2MEEwMDc3QzgwNyAvKiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgKi87IH07CkBAIC00NjUx
LDggKzQ2NDksNiBAQAogCQlBRDJGQ0MyRTFEQjgzOUY3MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJs
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkFzc2VtYmx5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMkYxREI4MzlGNzAwQjNF
NzM2IC8qIEpTV2ViQXNzZW1ibHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJBc3NlbWJseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDJGQ0MzMjFE
QzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXYXNtRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDEyQjM1MUU3QjU3QzAwMDhBRjE1NyAvKiBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBRDQyNTI1MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmln
aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbENvZGVPcmlnaW4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTIxRTVEMEYyMjAwOUQyQTk3IC8q
IEZ1bGxDb2RlT3JpZ2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZ1bGxDb2RlT3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyNTQs
OCArNjI1MCw2IEBACiAJCQkJQUQ0QjFERjgxREYyNDRENzAwNzFBRTMyIC8qIFdhc21CaW5kaW5n
LmggKi8sCiAJCQkJNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVu
dGlvbi5jcHAgKi8sCiAJCQkJNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5n
Q29udmVudGlvbi5oICovLAotCQkJCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29u
dGV4dC5jcHAgKi8sCi0JCQkJQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0
LmggKi8sCiAJCQkJNzlEQUUyNzkxRTAzQzgyMjAwQjUyNkFBIC8qIFdhc21FeGNlcHRpb25UeXBl
LmggKi8sCiAJCQkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICov
LAogCQkJCTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi8sCkBAIC04
NTcwLDcgKzg1NjQsNiBAQAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21w
aWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzIyRTVBNzFEQTY0NEE4MDA2RTc3MDkgLyogRlRM
RE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RDRDMEQxQzNF
MUMxMTAwNkNEOTg0IC8qIEZUTEV4Y2VwdGlvblRhcmdldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QUQ0MTJCMzQxRTdCMkU5RTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjIzNUJENjE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50
Rm9yT3BlcmFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRjUxOUQwQkFDMTAwQjFEMUI1
IC8qIEZUTEV4aXRQcm9wZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNzAyLDcgKzEw
Njk1LDYgQEAKIAkJCQlCQ0RFM0I0MzBFNkM4MzJEMDAxNDUzQTcgLyogU3RydWN0dXJlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdFNEVFNzBGMEVCQjdBNUIwMDU5MzRBQSAvKiBTdHJ1Y3R1cmVD
aGFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQUY3MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBRDQxMkIzMzFFN0IyRTk5
MDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzJGMEYyRDEx
NkJBRUVFOTAwMTg3QzE5IC8qIFN0cnVjdHVyZVJhcmVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQjQzOEEzMTkyNzBCMUQwMEUxRkJDOSAvKiBTdHJ1Y3R1cmVTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY3NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAppbmRleCAyMmE3YmE3MGY0N2M1MDE2MzM4MzI5OWRhMGUzZTM0YzVi
Y2RjMjI3Li41NmQ1Y2JlYTI0M2RlZTRhMGIxZWUyZTU3M2VjODZhOGI2NTQ2OTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKQEAgLTI5OCw2ICsyOTgsMTEgQEAg
Y2xhc3MgTWFya2VkQmxvY2sgewogICAgIAogICAgIGJvb2wgaXNNYXJrZWRSYXcoY29uc3Qgdm9p
ZCogcCk7CiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBt
X21hcmtpbmdWZXJzaW9uOyB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNYXJrZWRCbG9jaywgbV92bSk7
CisgICAgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGln
bm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDc4MzIwNDc5MjE5MjQ0NWI1YmU3ZjhjYzU0ZTIxYjYx
ODhmOWI3NWQuLjI4MDQ1Y2U2MjNjNDhkZjhmOWIwYzYwZTg5OTcxYTk3YjM1MTc4NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTMyLDYg
KzMyLDEwIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyNpbmNsdWRlICJXYXNtTWVtb3J5SW5mb3Jt
YXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogRXhlY3V0YWJsZUJhc2UqIEFz
c2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
KQpAQCAtNzY2LDYgKzc3MCw0OSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRW
YWx1ZVRvQm9vbGVhbihKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHJlc3VsdAogICAgIGRvbmUu
bGluayh0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK3ZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkgeworICAg
ICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRf
S0VZKSwgZHN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIG1vdmUoV2Fz
bTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS53YXNtQ29udGV4dFBvaW50ZXIsIGRzdCk7Cit9
CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCit7
CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlGYXN0VExTKCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRG
b3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorICAgIG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLndhc21D
b250ZXh0UG9pbnRlcik7Cit9CisKK2Jvb2wgQXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgcmV0
dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19K
SVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICBy
ZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRpZgor
ICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDUwMGQ2ODgyMjM5Y2ViOWIyMDk3MjU0NDZkM2NjZDg4OWJkYTE4Mjgu
LmE3OGNjNjlmOWE3OTUxNjUyNDM1MjJiYjYyMjA3NDkyN2QyYTQ2NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtMTYzNiw0NSArMTYzNiwxMiBA
QCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgIHZv
aWQgd2FuZ3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVzdWx0LCBHUFJSZWcgc2NyYXRjaCk7
CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCi0gICAgewot
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RUTFMoKSkgewotICAgICAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNl
dEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVs
c2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjk3NzMKLSAgICAgICAgbG9hZFB0cigmbV92bS0+d2FzbUNvbnRleHQsIGRzdCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpCi0gICAgewotI2lm
IEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRM
U09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSkpOwotI2VuZGlmCi0gICAgICAgIC8v
IEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBzdG9yZVB0cihz
cmMsICZtX3ZtLT53YXNtQ29udGV4dCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgbG9hZFdh
c21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAgewotI2lmIEVOQUJMRShG
QVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMo
KSkKLSAgICAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCi0gICAg
ewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJB
c3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyTmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICB2b2lk
IGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KTsKKyAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQo
R1BSUmVnIHNyYyk7CisgICAgc3RhdGljIGJvb2wgbG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3RlcigpOworICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgVk0qIG1fdm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAppbmRleCA3ZGRjNmJhZTAwNmRjZmMxYTNkNzcxYTA2MzEzNzNkZDI1Nzk5YjVhLi5i
YmRkNmFlYmM4NTQ1NjJiMGQ0OTRjZWMyMmQ5OTg5YjcxZjM0YTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlICJTdHJ1Y3R1
cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8u
aCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAu
aD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTU3NywyNSArNTc2LDEz
IEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8pCiAgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHViKGNyZWF0ZUpJVFN0dWJSb3V0aW5l
KHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7CiB9CiAKLXN0YXRpYyBib29sIGlz
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxsKiBjYWxsZWUpCi17Ci0jaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQotICAgIC8vIFRoZSBXZWJBc3NlbWJseSAtPiBKUyBzdHViIHNldHMg
aXQgY2FsbGVyIGZyYW1lJ3MgY2FsbGVlIHRvIGEgc2luZ2xldG9uIHdoaWNoIGxpdmVzIG9uIHRo
ZSBWTS4KLSAgICByZXR1cm4gY2FsbGVlID09IHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZS5nZXQo
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGVl
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQotfQot
Ci1zdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKFZNJiB2bSkKK3N0YXRpYyBKU0NlbGwq
IHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFuY2Ugc2hhcmVzIHRoZSBzdHVicyBm
cm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwgd2hpY2ggYXJlIHRoZXJlZm9yZSB0aGUgYXBw
cm9wcmlhdGUgb3duZXIuCi0gICAgcmV0dXJuIGxvYWRXYXNtQ29udGV4dCh2bSktPm1vZHVsZSgp
OworICAgIHJldHVybiBqc0Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2FsbGVlKS0+aW5z
dGFuY2UoKS0+bW9kdWxlKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKGNhbGxlZSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC02MTIs
NyArNTk5LDcgQEAgdm9pZCBsaW5rRm9yKAogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2Nr
ID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMg
c3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93bmVyID0g
aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgPyB3ZWJB
c3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0g
aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2Vt
Ymx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6IGNhbGxlckNvZGVCbG9jazsKICAgICBB
U1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5rZWQoKSk7CkBA
IC03MzIsMTAgKzcxOSwxMCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgQ2FsbEZy
YW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0mIHZtID0gY2Fs
bGVyRnJhbWUtPnZtKCk7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJG
cmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0gaXNXZWJBc3NlbWJs
eVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSk7CisgICAgYm9vbCBpc1dlYkFz
c2VtYmx5ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKTsK
IAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2Rl
QmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93
bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3Nl
bWJseSA/IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6IGNhbGxlckNv
ZGVCbG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQ2FsbFZhcmlhbnRMaXN0IGxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXgg
MDg1N2UzNGJmMWQyYjA0NmQ3YWJjYTQ4OTEyMWMxZjM4YzkwMjJmYy4uNTIxN2I4MjU4NmRlZTVl
NGY5ZjBkYTRjNmIwNzg1NDYwMjYyNDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIk1hdGhD
b21tb24uaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2lu
Y2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtKSVQuaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgog
I2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5o
PgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtMTE0OCwxNiArMTE0Nywx
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2FzbVRodW5rR2Vu
ZXJhdG9yKFZNKiB2bSkKICAgICB9CiAKICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFdhc21Db250ZXh0
KEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBq
aXQuY2FsbCgpOwogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKLSAgICB2b2lk
ICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNtOjpFeGNlcHRpb25UeXBlKSA9
IFtdIChFeGVjU3RhdGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSkgeworICAgIHZv
aWQgKCp0aHJvd1dhc21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhj
ZXB0aW9uVHlwZSB0eXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0KSB7CiAg
ICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmdsb2JhbE9iamVjdCgp
OworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHdhc21Db250ZXh0
LT5nbG9iYWxPYmplY3QoKTsKIAogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
ciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhlYywgKnZtLCBn
bG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCksIFdhc206OmVy
cm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUodHlwZSkpOwogICAgICAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAppbmRleCA4YjYxNWExYTNhNTE1MTA1OTY3MjA2NWQ0NzJiN2U4YWU4
NTg2OTlhLi4wYWZmMTA4MGFjYjIwM2JlNGU0MzA5ZTM4ZTVhMTQyOGQ1MWZlNGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTU2LDIxICsxNTYsMjEg
QEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgCiAgICAgU1RBVElD
X0FTU0VSVChTdHJpbmdUeXBlID09IDYpOwogICAgIFNUQVRJQ19BU1NFUlQoU3ltYm9sVHlwZSA9
PSA3KTsKLSAgICBTVEFUSUNfQVNTRVJUKE9iamVjdFR5cGUgPT0gMjMpOwotICAgIFNUQVRJQ19B
U1NFUlQoRmluYWxPYmplY3RUeXBlID09IDI0KTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTRnVuY3Rp
b25UeXBlID09IDI2KTsKLSAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAzNCk7Ci0gICAg
U1RBVElDX0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09IDM1KTsKLSAgICBTVEFUSUNfQVNTRVJU
KFByb3h5T2JqZWN0VHlwZSA9PSA1Myk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQ4QXJyYXlUeXBl
ID09IDM2KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM3KTsKLSAgICBT
VEFUSUNfQVNTRVJUKEludDMyQXJyYXlUeXBlID09IDM4KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVp
bnQ4QXJyYXlUeXBlID09IDM5KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZSA9PSA0MCk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUgPT0gNDEpOwot
ICAgIFNUQVRJQ19BU1NFUlQoVWludDMyQXJyYXlUeXBlID09IDQyKTsKLSAgICBTVEFUSUNfQVNT
RVJUKEZsb2F0MzJBcnJheVR5cGUgPT0gNDMpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQ2NEFy
cmF5VHlwZSA9PSA0NCk7CisgICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDI0KTsKKyAg
ICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNSk7CisgICAgU1RBVElDX0FTU0VS
VChKU0Z1bmN0aW9uVHlwZSA9PSAyNyk7CisgICAgU1RBVElDX0FTU0VSVChBcnJheVR5cGUgPT0g
MzUpOworICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNik7CisgICAgU1RB
VElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTQpOworICAgIFNUQVRJQ19BU1NFUlQoSW50
OEFycmF5VHlwZSA9PSAzNyk7CisgICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlwZSA9PSAz
OCk7CisgICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOSk7CisgICAgU1RBVElD
X0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSA0MCk7CisgICAgU1RBVElDX0FTU0VSVChVaW50OENs
YW1wZWRBcnJheVR5cGUgPT0gNDEpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJyYXlUeXBl
ID09IDQyKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Myk7CisgICAg
U1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQ0KTsKKyAgICBTVEFUSUNfQVNTRVJU
KEZsb2F0NjRBcnJheVR5cGUgPT0gNDUpOwogICAgIFNUQVRJQ19BU1NFUlQoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9PSAxKTsKICAgICBTVEFUSUNfQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UgPT0gMik7CiAgICAgU1RBVElDX0FTU0VSVChGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCA9PSAweDQwMDAwMDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBlOGUyZGI4Y2RhYzJlMWUxMGQyYjhhM2Y1
ZmY3MDYxOWZkZTAxZDRmLi5hYjNjMGM4ZTc3MWZlZGFlOWI2NWRhY2RiNjIyNTFhMTg3YTNjOWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0zNDUsMjQgKzM0NSwyNCBAQCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgPSAweDBDCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlwZSA9IDYKIGNv
bnN0IFN5bWJvbFR5cGUgPSA3Ci1jb25zdCBPYmplY3RUeXBlID0gMjMKLWNvbnN0IEZpbmFsT2Jq
ZWN0VHlwZSA9IDI0Ci1jb25zdCBKU0Z1bmN0aW9uVHlwZSA9IDI2Ci1jb25zdCBBcnJheVR5cGUg
PSAzNAotY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IDM1Ci1jb25zdCBQcm94eU9iamVjdFR5cGUg
PSA1MworY29uc3QgT2JqZWN0VHlwZSA9IDI0Citjb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNQor
Y29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNworY29uc3QgQXJyYXlUeXBlID0gMzUKK2NvbnN0IERl
cml2ZWRBcnJheVR5cGUgPSAzNgorY29uc3QgUHJveHlPYmplY3RUeXBlID0gNTQKIAogIyBUaGUg
dHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJlZCBpbiBhIHBhcnRpY3VsYXIgb3Jk
ZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgogIyBzd2l0Y2ggc3RhdGVtZW50IGlu
IGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCi1jb25zdCBJbnQ4QXJyYXlUeXBlID0gMzYKLWNv
bnN0IEludDE2QXJyYXlUeXBlID0gMzcKLWNvbnN0IEludDMyQXJyYXlUeXBlID0gMzgKLWNvbnN0
IFVpbnQ4QXJyYXlUeXBlID0gMzkKLWNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9IDQwCi1j
b25zdCBVaW50MTZBcnJheVR5cGUgPSA0MQotY29uc3QgVWludDMyQXJyYXlUeXBlID0gNDIKLWNv
bnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0MwotY29uc3QgRmxvYXQ2NEFycmF5VHlwZSA9IDQ0Citj
b25zdCBJbnQ4QXJyYXlUeXBlID0gMzcKK2NvbnN0IEludDE2QXJyYXlUeXBlID0gMzgKK2NvbnN0
IEludDMyQXJyYXlUeXBlID0gMzkKK2NvbnN0IFVpbnQ4QXJyYXlUeXBlID0gNDAKK2NvbnN0IFVp
bnQ4Q2xhbXBlZEFycmF5VHlwZSA9IDQxCitjb25zdCBVaW50MTZBcnJheVR5cGUgPSA0MgorY29u
c3QgVWludDMyQXJyYXlUeXBlID0gNDMKK2NvbnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0NAorY29u
c3QgRmxvYXQ2NEFycmF5VHlwZSA9IDQ1CiAKIGNvbnN0IEZpcnN0QXJyYXlUeXBlID0gSW50OEFy
cmF5VHlwZQogY29uc3QgTGFzdEFycmF5VHlwZSA9IEZsb2F0NjRBcnJheVR5cGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IGFjZGQ0ZTg4YzBhZjE0YTA5Zjc2
YmUyYTNhYTVhMTkwZWE2YjgwZTMuLjNkZmMyODVmZTc4YzJlYzg0ODA1ODMyZGZmMTAyOWVlODI0
Y2FkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtMjk4
LDcgKzI5OCw3IEBAIEpTVmFsdWUgSlNDZWxsOjpnZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVj
U3RhdGUqKQogYm9vbCBKU0NlbGw6OmlzQW55V2FzbUNhbGxlZShWTSYgdm0pIGNvbnN0CiB7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHJldHVybiBpbmhlcml0cyh2bSwgSlNXZWJBc3Nl
bWJseUNhbGxlZTo6aW5mbygpKSB8fCBpbmhlcml0cyh2bSwgV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
OjppbmZvKCkpOworICAgIHJldHVybiBpbmhlcml0cyh2bSwgSlNXZWJBc3NlbWJseUNhbGxlZTo6
aW5mbygpKSB8fCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh0aGlzKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCmluZGV4IDRkN2VlNDk4MDYwOTcwMDhhZDM2NzI4MjFiMTMyMzEwNzdlYzNk
ZGUuLjYyZTM3NzJmNDJiNDdhODk5YTQ4MDU2ZWRlOTQ1ZmRlN2U2OGZmYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gSlNUeXBl
IDogdWludDhfdCB7CiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAgICBKU1NjcmlwdEZldGNoZXJU
eXBlLAogCisgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwKKwogICAgIC8vIFRoZSBPYmpl
Y3RUeXBlIHZhbHVlIG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgc3ViY2xh
c3Mgb2YgSlNPYmplY3QuCiAgICAgT2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4
NjRjOTc4ZGMyN2E0ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdm
YzA3NjRhNWUxMDQ1NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0YWNrRnJhbWUuY3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1
bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlm
IChtX2NhbGxlZSkgeworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9j
YWxsZWUtPnZtKCkpKQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7
CiAgICAgICAgIGlmIChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBn
ZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdl
dCgpKSkuaW1wbCgpOwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVl
KCptX2NhbGxlZS0+dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2Fz
bT4iKTsKICAgICB9CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDog
bmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NTExNTQyYjc3
ZGZjOGU2ZjJiZWFiZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVjODk0NGJkNDRm
MTEyNWMxOWZlMTcyNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0y
NDAsNyArMjQwLDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIHdlYkFzc2VtYmx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNh
bGxlZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5Q29k
ZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxl
ZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3Nl
bWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1
ZjAyMzE4NDQ1OWNiNjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNh
M2QxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcgKzMzNiw2IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJs
eUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlD
YWxsZWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3RydWN0dXJlOwotICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKICNl
bmRpZgogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0
ODksMTEgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJs
aWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihWTSwgdGFyZ2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgd2FzbUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihWTSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQgcmVzdG9yZVBy
ZXZpb3VzRXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2VwdGlvbihleGNl
cHRpb24pOyB9CiAKICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0
aW9uID0gbnVsbHB0cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5
NmQzYTIuLjcwYTdiMTliMjJmOWYzZmY4YmRkZTg2YzAwZDBiNDY0MWEyNzM0NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTQ5
LDcgKzQ5LDYgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9u
LmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlw
ZS5oIgogI2luY2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5oIgogI2luY2x1ZGUgIldhc21NZW1v
cnkuaCIKQEAgLTIyNywyNiArMjI2LDM0IEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogICAgIFZl
Y3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsg
Ly8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0aW9uIGluZGV4IHdob3NlIGFkZHJl
c3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBHUFJSZWcgbV9tZW1vcnlCYXNlR1BS
OwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CisgICAgR1BSUmVnIG1fd2FzbUNvbnRleHRH
UFI7CiAgICAgVmFsdWUqIG1femVyb1ZhbHVlc1tudW1UeXBlc107CiAgICAgVmFsdWUqIG1faW5z
dGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CiAKIHN0YXRpYyBWYWx1ZSogbG9hZFdhc21D
b250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KHByb2MsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpKTsKLSAgICBpZiAoQ0NhbGxIZWxwZXJzOjps
b2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2Fs
bEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0g
ICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAg
IH0pOworICAgIGlmICh1c2VGYXN0VExTKCkpIHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpKTsKKyAgICAgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQorICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChq
aXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rl
cigpKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIo
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIElkZW50aXR5LCBPcmlnaW4oKSwgcGF0Y2hwb2ludCk7CisgICAgfQogCi0gICAg
cmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElkZW50aXR5LCBPcmlnaW4oKSwg
cGF0Y2hwb2ludCk7CisgICAgcmV0dXJuIGJsb2NrLT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkud2FzbUNvbnRleHRQ
b2ludGVyKTsKIH0KIAogc3RhdGljIHZvaWQgc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHBy
b2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBWYWx1ZSogYXJnKQogeworICAgIC8vIFdlIHVzZSBwaW5u
ZWQgY2FsbGVlIHNhdmUgcmVnaXN0ZXIgZm9yIHRoaXMgcHVycG9zZS4gVGh1cywgd2UgZG8gbm90
IG5lZWQgdG8gcmVzdG9yZSB0aGUgaW5zdGFuZSByZWdpc3RlciBvbiB0aGUgY2FsbGVyIHNpZGUu
CisgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihw
cm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOwogICAgIGlmIChDQ2FsbEhlbHBlcnM6OnN0b3JlV2Fz
bUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCiAgICAgICAgIHBhdGNocG9pbnQt
PmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKQEAgLTI4Myw3
ICsyOTAsMTAgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKICAgICAvLyBGSVhNRSB3ZSBkb24n
dCByZWFsbHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhlcmUgaWYgdGhlcmUncyBubyBtZW1vcnku
IEl0IG1ha2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2ltcGxlciBmb3Igbm93LiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NjIzCiAgICAgY29uc3QgUGlubmVkUmVn
aXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKICAgICBt
X21lbW9yeUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOworICAgIG1fd2Fz
bUNvbnRleHRHUFIgPSBwaW5uZWRSZWdzLndhc21Db250ZXh0UG9pbnRlcjsKICAgICBtX3Byb2Mu
cGluUmVnaXN0ZXIobV9tZW1vcnlCYXNlR1BSKTsKKyAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAg
ICAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fd2FzbUNvbnRleHRHUFIpOwogICAgIEFTU0VSVCgh
cGlubmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVPZmZzZXQpOwogICAgIG1fbWVtb3J5U2l6
ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplUmVnaXN0ZXI7CiAgICAgZm9y
IChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5zaXpl
UmVnaXN0ZXJzKQpAQCAtMzA3LDEyICszMTcsMTIgQEAgc3RydWN0IE1lbW9yeUJhc2VBbmRTaXpl
IHsKICAgICBWYWx1ZSogc2l6ZTsKIH07CiAKLXN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRN
ZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9j
LCBCYXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlC
YXNlQW5kU2l6ZShWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayog
YmxvY2spCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9IGJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBpbnN0YW5jZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKTsKIAotICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1v
cnkoKS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlz
IHNpemUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRl
eHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwg
ImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIpLT5t
ZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiBy
ZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
c3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5t
ZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24g
dGhpcyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUgcmVzdWx0OwogICAgIHJlc3VsdC5i
YXNlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0
T2ZNZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZh
bHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJBc3Nl
bWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtNDE5LDEyICs0MjksMTEgQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRVbnJlYWNoYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgaW50MzJfdCAoKmdyb3dN
ZW1vcnkpIChFeGVjU3RhdGUqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIGludDMy
X3QgZGVsdGEpIC0+IGludDMyX3QgeworICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0
YXRlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRlKiBl
eGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250ZXh0LCBpbnQzMl90IGRlbHRhKSAt
PiBpbnQzMl90IHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwotICAgICAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1lbW9yeSgpOworICAgICAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5KiB3YXNtTWVtb3J5ID0gd2FzbUNvbnRleHQtPm1lbW9yeSgpOwog
CiAgICAgICAgIGlmIChkZWx0YSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00NDAs
NyArNDQ5LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25U
eXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiAgICAgcmVzdWx0ID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDMyLCBPcmlnaW4oKSwK
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2Ms
IE9yaWdpbigpLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGdyb3dNZW1vcnkpKSwKLSAgICAgICAgbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRl
ciwgT3JpZ2luKCkpLCBkZWx0YSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgbV9pbnN0YW5j
ZVZhbHVlLCBkZWx0YSk7CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2lu
Zm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCkBA
IC00NDksNyArNDU4LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJl
c3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEIzSVJHZW5l
cmF0b3I6OmFkZEN1cnJlbnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlh
bFJlc3VsdAogewotICAgIGF1dG8gbWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZSht
X3ZtLCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIGF1dG8g
bWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShtX2luc3RhbmNlVmFsdWUsIG1fcHJv
YywgbV9jdXJyZW50QmxvY2spOwogCiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFsdWUg
PSAxNjsKICAgICBzdGF0aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMSA8PCBzaGlm
dFZhbHVlLCAiVGhpcyBtdXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJlY3Qu
Iik7CkBAIC0xMDgwLDExICsxMDg5LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFw
cGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAg
ICAgKmxpbmtlZENhbGxlZU1vdmUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbGVlTW92ZUxv
Y2F0aW9uKTsKICAgICB9KTsKIAotICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZTsKICAgICBjb25zdCBQ
aW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
OwotICAgIHRvU2F2ZS5zZXQocGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgZm9y
IChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5zaXpl
UmVnaXN0ZXJzKQotICAgICAgICB0b1NhdmUuc2V0KHJlZ0luZm8uc2l6ZVJlZ2lzdGVyKTsKKyAg
ICBSZWdpc3RlclNldCB0b1NhdmUgPSBwaW5uZWRSZWdzLnRvU2F2ZSgpOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIHVuc2lnbmVkIHRvU2F2ZVNpemUgPSB0b1NhdmUubnVtYmVyT2ZTZXRH
UFJzKCk7CkBAIC0xMTkxLDEwICsxMTk3LDI0IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNt
V3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBGSVhNRTogSlNXZWJBc3NlbWJseUNhbGxlZSBzaG91
bGQgaGF2ZSBhIHBvaW50ZXIgdG8gSlNXZWJBc3NlbWJseUluc3RhbmNlIGluc3RlYWQuCisgICAg
R1BSUmVnIHdhc21Db250ZXh0ID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CisgICAg
aWYgKCF1c2VGYXN0VExTKCkpIHsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgd2FzbUNvbnRleHQpOworICAg
ICAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6
YmxvY2tNYXNrKSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Mod2FzbUNvbnRleHQsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB3YXNt
Q29udGV4dCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNt
Q29udGV4dCwgVk06Ondhc21Db250ZXh0T2Zmc2V0KCkpLCB3YXNtQ29udGV4dCk7CisgICAgfQor
CiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBw
aW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0
KGJhc2VNZW1vcnkpOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
YmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFz
ZU1lbW9yeSk7CisKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRleHQsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIH0K
ICAgICAgICAgY29uc3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7
CiAgICAgICAgIEFTU0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAgICAgICAgIEFTU0VSVCgh
c2l6ZVJlZ3NbMF0uc2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdl
IHN0YXJ0IGF0IDAsIGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVs
YXRpdmUgdG8gMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
aW5kaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApp
bmRleCBmYjY3NjU3ZWE0MGNlY2QwYjg2ODgwZWJiMjRjN2VhNzkxM2Y5YzMzLi5lMGNhYjFmNmQ0
ZDc5ODFiYzhkYzcwOWFlMmFmZjhmYjI2MDk0OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJpbmRpbmcuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgogI2luY2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJX
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1
ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2Fz
bSB7CkBAIC02Niw4ICs2NSw2IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRv
SnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKIAogICAgIGppdC5l
bWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTMy
KDApLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsgLy8g
RklYTUUgU3RvcCB1c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjUzMjEKLSAgICBqaXQuc3RvcmVQdHIoSklUOjpUcnVzdGVkSW1t
UHRyKHZtLT53ZWJBc3NlbWJseVRvSlNDYWxsZWUuZ2V0KCkpLCBKSVQ6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKLQogCiAgICAgewogICAgICAgICBib29sIGhhc0Jh
ZEk2NFVzZSA9IGZhbHNlOwpAQCAtOTMsMTYgKzkwLDIyIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZv
cywKICAgICAgICAgaWYgKGhhc0JhZEk2NFVzZSkgewogICAgICAgICAgICAgaml0LmNvcHlDYWxs
ZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICAgICAgICAgIGpp
dC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjEp
OworCisgICAgICAgICAgICAvLyBTdG9yZSBDYWxsZWUuCisgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwor
ICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSklUOjpBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisKICAgICAgICAgICAgIGF1dG8g
Y2FsbCA9IGppdC5jYWxsKCk7CiAgICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cigpOwogCi0gICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSopID0gW10g
KEV4ZWNTdGF0ZSogZXhlYykgLT4gdm9pZCB7CisgICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJ
NjQpKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSog
ZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCkgLT4gdm9pZCB7CiAgICAg
ICAgICAgICAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
KnZtKTsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGxvYWRXYXNtQ29udGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmpl
Y3QoKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpj
cmVhdGUoZXhlYywgKnZtLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVy
cm9yU3RydWN0dXJlKCksIEFTQ0lJTGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0
eXBlIG9yIGFyZ3VtZW50IHRvIGFuIGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjUyLDYgKzI1NSwxMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBqaXQubG9hZFdhc21Db250ZXh0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1l
bnRHUFIwLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKwog
ICAgIEdQUlJlZyBpbXBvcnRKU0NlbGxHUFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVl
IG5lZWRzIHRvIGJlIGluIHJlZ1QwIGZvciBzbG93IHBhdGggYmVsb3cuCiAgICAgQVNTRVJUKCF3
YXNtQ0MubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NDg0Y2Q0ZjUyNjZhMzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKLQotI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKLQotI2luY2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSA8bXV0ZXg+Ci0jaW5j
bHVkZSA8d3RmL0Zhc3RUTFMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLUpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJiB2bSkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQotICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9nZXRz
cGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKLSNlbmRpZgotICAgIC8vIEZJ
WE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgIHJldHVybiB2bS53YXNtQ29u
dGV4dDsKLX0KLQotdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBpbnN0YW5jZSkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChP
cHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgX3B0aHJlYWRfc2V0c3Bl
Y2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGlu
c3RhbmNlKSk7Ci0jZW5kaWYKLSAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVy
ZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk3NzMKLSAgICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNlOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzVl
OGExOGQyYjA3NDgxZWU2MDBmOGI3MDFlNTNjNjM5ZTVmY2M0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Db250ZXh0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U7Ci1jbGFzcyBWTTsKLQotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNv
bnRleHQoVk0mKTsKLXZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSopOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
TUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJ
bmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5m
b3JtYXRpb24uY3BwCmluZGV4IDhhYzA4NjYyNzhiNTEzOTNiNjY5ZWEwOWE3YjU0OGQ2ZDlhNzZi
MTQuLjk5ZTdkMmJjZDI5OTRkY2JlN2Y1NTg4OWFiMzdkZTcwZWZhNGQ3MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcApA
QCAtMzQsNDMgKzM0LDU3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
K3N0YXRpYyBWZWN0b3I8R1BSUmVnPiBnZXRQaW5uZWRSZWdpc3RlcnModW5zaWduZWQgcmVtYWlu
aW5nUGlubmVkUmVnaXN0ZXJzKQoreworICAgIFZlY3RvcjxHUFJSZWc+IHJlZ2lzdGVyczsKKyAg
ICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsm
XSAoUmVnIHJlZykgeworICAgICAgICBpZiAoIXJlZy5pc0dQUigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOworICAgICAgICBpZiAoIXJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQo
cmVnKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLS1yZW1haW5pbmdQaW5uZWRSZWdp
c3RlcnM7CisgICAgICAgIHJlZ2lzdGVycy5hcHBlbmQoZ3ByKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gcmVnaXN0ZXJzOworfQorCiBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lz
dGVySW5mbzo6Z2V0KCkKIHsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFBpbm5lZFJl
Z2lzdGVySW5mbz4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvOwogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWcsIFtdICgpIHsKICAgICAgICAgVmVjdG9yPFBp
bm5lZFNpemVSZWdpc3RlckluZm8+IHNpemVSZWdpc3RlcnM7Ci0gICAgICAgIEdQUlJlZyBiYXNl
TWVtb3J5UG9pbnRlcjsKKyAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyID0gSW52YWxp
ZEdQUlJlZzsKKyAgICAgICAgR1BSUmVnIHdhc21Db250ZXh0UG9pbnRlciA9IEludmFsaWRHUFJS
ZWc7CiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUg
bWVtb3J5IHNpemUgcmVnaXN0ZXIsIGFuZCB3ZSBzaG91bGQgYWxsb3cgZGlmZmVyZW50CiAgICAg
ICAgIC8vICAgICAgICBXZWJBc3NlbWJseS5JbnN0YW5jZSB0byBoYXZlIGRpZmZlcmVudCBwaW5z
LiBSaWdodCBub3cgd2UgdGFrZSBhIHZlY3RvciB3aXRoIG9ubHkgb25lIGVudHJ5LgogICAgICAg
ICAvLyAgICAgICAgSWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIsIHdlIGNh
biBoYXZlIG9uZSBmb3IgZWFjaCBsb2FkIHNpemUgY2xhc3MuCiAgICAgICAgIC8vICAgICAgICBz
ZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBwaW5uZWRTaXplcyA9IHsgMCB9OwotICAgICAgICB1bnNpZ25l
ZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOwotICAg
ICAgICBqc2NDYWxsaW5nQ29udmVudGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNo
KFsmXSAoUmVnIHJlZykgewotICAgICAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwotICAg
ICAgICAgICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0
YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgaWYgKHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBncHI7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzLS07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzaXpl
UmVnaXN0ZXJzLmFwcGVuZCh7IGdwciwgcGlubmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdp
c3RlcnMgLSAxXSB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgQVNTRVJUKCFyZW1haW5pbmdQ
aW5uZWRSZWdpc3RlcnMpOwotICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3Ry
dWN0KFdURk1vdmUoc2l6ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVyKTsKKyAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAx
OworICAgICAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgICsrbnVtYmVyT2ZQaW5u
ZWRSZWdpc3RlcnM7CisgICAgICAgIFZlY3RvcjxHUFJSZWc+IHBpbm5lZFJlZ3MgPSBnZXRQaW5u
ZWRSZWdpc3RlcnMobnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMpOworCisgICAgICAgIGJhc2VNZW1v
cnlQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgpOworICAgICAgICBpZiAoIXVzZUZhc3RU
TFMoKSkKKyAgICAgICAgICAgIHdhc21Db250ZXh0UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxh
c3QoKTsKKworICAgICAgICBBU1NFUlQocGlubmVkU2l6ZXMuc2l6ZSgpID09IHBpbm5lZFJlZ3Mu
c2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpbm5lZFNpemVzLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBwaW5uZWRSZWdz
W2ldLCBwaW5uZWRTaXplc1tpXSB9KTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
LmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlciwgd2Fz
bUNvbnRleHRQb2ludGVyKTsKICAgICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdp
c3RlckluZm8uZ2V0KCk7CiB9CiAKLVBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJ
bmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJl
ZyBiYXNlTWVtb3J5UG9pbnRlcikKK1Bpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJ
bmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJl
ZyBiYXNlTWVtb3J5UG9pbnRlciwgR1BSUmVnIHdhc21Db250ZXh0UG9pbnRlcikKICAgICA6IHNp
emVSZWdpc3RlcnMoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSkKICAgICAsIGJhc2VNZW1vcnlQb2lu
dGVyKGJhc2VNZW1vcnlQb2ludGVyKQorICAgICwgd2FzbUNvbnRleHRQb2ludGVyKHdhc21Db250
ZXh0UG9pbnRlcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uaAppbmRleCA2ZGUwNzBhMTA0NTJmZjZiYjNjNWMyNTA0MTFm
MTBlOTEzODllNGEyLi4xMTc5YjVmNzUwMmUxZjI2YjA2Y2FkNzk2MDhmZGExY2FlNDJhNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1
ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIldhc21N
ZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtUGFnZUNvdW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgpAQCAtNDMsOCArNDQsMjAgQEAgc3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewogc3Ry
dWN0IFBpbm5lZFJlZ2lzdGVySW5mbyB7CiAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3Rlcklu
Zm8+IHNpemVSZWdpc3RlcnM7CiAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgIEdQ
UlJlZyB3YXNtQ29udGV4dFBvaW50ZXI7CiAgICAgc3RhdGljIGNvbnN0IFBpbm5lZFJlZ2lzdGVy
SW5mbyYgZ2V0KCk7Ci0gICAgUGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiYmLCBHUFJSZWcpOworICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlu
bmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnLCBHUFJSZWcpOworCisgICAgUmVnaXN0ZXJT
ZXQgdG9TYXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyAg
ICAgICAgcmVzdWx0LnNldChiYXNlTWVtb3J5UG9pbnRlcik7CisgICAgICAgIGlmICh3YXNtQ29u
dGV4dFBvaW50ZXIgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAgIHJlc3VsdC5zZXQod2Fz
bUNvbnRleHRQb2ludGVyKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpbmZvIDogc2l6ZVJl
Z2lzdGVycykKKyAgICAgICAgICAgIHJlc3VsdC5zZXQoaW5mby5zaXplUmVnaXN0ZXIpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIH07CiAKIGNsYXNzIE1lbW9yeUluZm9ybWF0aW9u
IHsKQEAgLTczLDYgKzg2LDE1IEBAIGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKICAgICBib29s
IG1faXNJbXBvcnQgeyBmYWxzZSB9OwogfTsKIAoraW5saW5lIGJvb2wgdXNlRmFzdFRMUygpCit7
CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0VExTKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdBU00pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3Rh
bmNlLmNwcAppbmRleCAxYzExYjBjYTY1YzkxNzQyZjhlNDgxM2MyNGQ5NzVmNjVlZWJhYTE4Li4z
YjdmN2I4NzQ2ZmY4ZDQyMTQwMTc4Y2E3YjVlZWFlZDAzNDY5MmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgog
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNZW1vcnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5
TW9kdWxlLmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAg
dm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJB
c3NlbWJseU1vZHVsZSogbW9kdWxlLAogCiAgICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBt
b2R1bGUtPmNvZGVCbG9jaygpKTsKICAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0s
IHRoaXMsIG1vZHVsZU5hbWVzcGFjZU9iamVjdCk7CisgICAgbV9jYWxsZWUuc2V0KHZtLCB0aGlz
LCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSh2bSwgdm0ud2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlU3RydWN0dXJlLmdldCgpLCB0aGlzKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImV4cG9ydHMiKSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBOb25l
KTsKIH0KIApAQCAtOTksNiArMTAxLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fdGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2Fs
bGVlKTsKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5t
b2R1bGUoKS0+bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzLnNpemUoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kp
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5oCmluZGV4IGUyMjg0OTY5NjcyMDVhMzEzNmM4ODNiYmRlMzI2YWRiYzcxMTEzMGQu
LjQyYWExYjM1ZDFiMmE2ZjkzOWI5ZDMyOTY2YjVmMzdlNGVlNjQxZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBA
IC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CitjbGFzcyBXZWJBc3NlbWJseVRv
SlNDYWxsZWU7CiAKIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CkBAIC05Nyw2ICs5OCw3IEBAIGNsYXNzIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSwgbV90YWJsZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FsbGVlKCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9jYWxsZWUp
OyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3Rh
dGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpTQ2VsbD4pPihzaXplb2YoSlNXZWJB
c3NlbWJseUluc3RhbmNlKSk7IH0KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVu
Y3Rpb24oc2l6ZV90IGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJldHVybiBvZmZzZXRPZkltcG9ydEZ1
bmN0aW9ucygpICsgaW1wb3J0RnVuY3Rpb25OdW0gKiBzaXplb2Yoc2l6ZW9mKFdyaXRlQmFycmll
cjxKU0NlbGw+KSk7IH0KQEAgLTExNyw2ICsxMTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1vcnk+IG1fbWVtb3J5OwogICAgIFdyaXRlQmFycmll
cjxKU1dlYkFzc2VtYmx5VGFibGU+IG1fdGFibGU7CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiAgICAgTWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2Jh
bHM7CiAgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRl
eCBkMWE4MDFjM2VjOTExYTE5ZjA2YWI3OWY5OGEzMzkwMWY1YzU3YzUxLi41NjQzMzNiMzk5Mjll
NmY5MDlkNTc4NjUyYTU4MzlmYmUxOTg1YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMzksMTUgKzM5LDMz
IEBACiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5o
IgogI2luY2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJX
YXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0
VExTLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJB
c3NlbWJseUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShXZWJBc3NlbWJseUZ1bmN0aW9uKSB9OwogCitzdGF0aWMgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQp
CisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNp
ZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworI2VuZGlmCisgICAgcmV0dXJuIHZt
Lndhc21Db250ZXh0OworfQorCitzdGF0aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAg
X3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGluc3RhbmNlKSk7CisjZW5kaWYKKyAgICB2bS53YXNtQ29udGV4dCA9IGlu
c3RhbmNlOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vi
QXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKQEAgLTEyMSw2ICsxMzksOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcHJvdG9D
YWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVuY3Rpb24sIGZpcnN0QXJndW1lbnQsIGFyZ0Nv
dW50LCByZW1haW5pbmdBcmdzKTsKIAogICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0aGlzIGVu
dGlyZSBmdW5jdGlvbiwgYW5kIG9ubHkgdXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRlZCBieSBC
My4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4NgorICAgIC8v
IEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIG1ha2UgbG9hZFdhc21Db250ZXh0IGFuZCBzdG9yZVdh
c21Db250ZXh0IG5vLW9wIGlmIHdlIHVzZSBwaW5uZWQgcmVnaXN0ZXJzLgorICAgIC8vIEhvd2V2
ZXIsIHdlIHVzZSBWTS53YXNtQ29udGV4dCBmaWVsZCB0byBwYXNzIGluc3RhbmNlIHRvIHdhc20g
ZnVuY3Rpb24ncyBKUyBnbHVlIGNvZGUuCisgICAgLy8gT25jZSB3ZSBzdGFydCB1c2luZyB1c3Vh
bCBXZWJBc3NlbWJseUZ1bmN0aW9uIGFzIGNhbGxlZSwgd2UgY2FuIHJldHJpZXZlIGluc3RhbmNl
IGZyb20gdGhhdC4KICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5
SW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwogICAgIHN0b3JlV2FzbUNvbnRleHQodm0s
IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5z
dGFuY2UoKSk7CkBAIC0xNTMsNiArMTc0LDcgQEAgV2ViQXNzZW1ibHlGdW5jdGlvbiogV2ViQXNz
ZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlv
blN0cnVjdHVyZSgpOwogICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlGdW5jdGlvbj4odm0uaGVhcCkpIFdlYkFz
c2VtYmx5RnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB3YXNtRW50cnlwb2lu
dCwgc2lnbmF0dXJlSW5kZXgpOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhl
Y3V0YWJsZSwgbGVuZ3RoLCBuYW1lLCBpbnN0YW5jZSwganNFbnRyeXBvaW50LCB3YXNtRW50cnlw
b2ludCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZnVuY3Rpb24tPmlzTGFyZ2VBbGxvY2F0
aW9uKCksICJXZWJBc3NlbWJseUZ1bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQgbm90IGluIGxh
cmdlIGFsbG9jYXRpb24gc2luY2UgaXQgaXMgSlNDYWxsZWUuIik7CiAgICAgcmV0dXJuIGZ1bmN0
aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlLmNwcAppbmRleCA0ZTg5MWEwOWEyMGVmYTJmOTg5ODVkOTc5Y2E5
ZjVkNGU4MTMwMmFmLi42MjAzYWFkYzk2MjlhZGExYTg4ZDg5NDAzZTgzNTVhNzNjODM5MjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlND
YWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VG9KU0NhbGxlZS5jcHAKQEAgLTI5LDIxICsyOSwyMiBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJs
eVRvSlNDYWxsZWU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5VG9KU0NhbGxlZSIsIG51bGxwdHIs
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKSB9OwogCi1XZWJB
c3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitXZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBj
YWxsZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRvSlNDYWxsZWU+
KHZtLmhlYXApKSBXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIHN0cnVjdHVyZSk7Ci0gICAgY2Fs
bGVlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwg
aW5zdGFuY2UpOwogICAgIHJldHVybiBjYWxsZWU7CiB9CiAKIFN0cnVjdHVyZSogV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAogV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
OjpXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAg
LTUxLDE1ICs1MiwxOSBAQCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OldlYkFzc2VtYmx5VG9KU0Nh
bGxlZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQordm9pZCBXZWJBc3NlbWJseVRv
SlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBp
bnN0YW5jZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9pbnN0YW5j
ZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBX
ZWJBc3NlbWJseVRvSlNDYWxsZWUqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJs
eVRvSlNDYWxsZWUqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5XZWJBc3NlbWJseVRvSlNDYWxs
ZWU6On5XZWJBc3NlbWJseVRvSlNDYWxsZWUoKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9p
bnN0YW5jZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCA0OTZjODg1
NzZjMzlmNzIzMjcyMzk4YTU2NjVjOTA0Y2M1YzFiMTIzLi43MTI3YjNmMTk5ZThkMDliMjAwYTg2
MTY1YmZlZjMzN2ZhNDk5MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaApAQCAtMzEsMjMgKzMxLDM4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgOiBwdWJsaWMgSlND
ZWxsIHsKK2NsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKKworY2xhc3MgV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBK
U0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0
aWMgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5G
TzsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYs
IFN0cnVjdHVyZSopOworCisgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4g
bV9pbnN0YW5jZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQkFTU0VNQkxZKQorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIGJvb2wgaXNXZWJBc3Nl
bWJseVRvSlNDYWxsZWUoY29uc3QgSlNDZWxsKiBjZWxsKQoreworICAgIHJldHVybiBjZWxsLT50
eXBlKCkgPT0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVz
L3dlYmtpdC5vcmcvQ2hhbmdlTG9nCmluZGV4IDhiOTNmODYzYzQxMGQyY2UzYzcxMjA4YjgzZDBh
ZmQyN2MxNWYwODEuLjY0NTk1ZTllYzc2NmRkOWUzZWMzZjMzMjcxMTMxYWI2NWNjNzk3OWYgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3dl
YmtpdC5vcmcvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDMtMjcgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IGFk
ZCBmYWxsYmFjayB0byB1c2UgcGlubmVkIHJlZ2lzdGVyIHRvIGxvYWQvc3RvcmUgc3RhdGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBCMyBk
b2N1bWVudCBhYm91dCBpbW11dGFibGUgcGlubmVkIHJlZ2lzdGVyIGFuZCBBcmd1bWVudFJlZy4K
KworICAgICAgICAqIGRvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWw6CisK
IDIwMTctMDMtMTEgIEpvbiBEYXZpcyAgPGpvbmRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
d2lmdCBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIHdlYmtpdC5vcmcKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbCBi
L1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24u
aHRtbAppbmRleCAyMGI1OWI1YWUxZjY1NTlhYTU4MzA2YjkzZTI2ZDE3YjAzMGE3NTE1Li41MTUw
YjU5OGM0ZDkyZTI3ZDg5Yzg2NGFmOGYyNTE4OTQ5MDI0OWQ0IDEwMDY0NAotLS0gYS9XZWJzaXRl
cy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKKysr
IGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlv
bi5odG1sCkBAIC0yMzcsNyArMjM3LDggQEAKICAgICAgIDxkdD5JbnRQdHJ8RG91YmxlIEFyZ3Vt
ZW50UmVnKCVyZWdpc3Rlcik8L2R0PgogICAgICAgPGRkPlJldHVybnMgdGhlIHZhbHVlIHRoYXQg
dGhlIGdpdmVuIHJlZ2lzdGVyIGhhZCBhdCB0aGUgcHJvbG9ndWUgb2YgdGhlIHByb2NlZHVyZS4g
IEl0CiAgICAgICAgIHJldHVybnMgSW50UHRyIGZvciBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJz
IGFuZCBEb3VibGUgZm9yIEZQUnMuICBNdXN0IHVzZSB0aGUKLSAgICAgICAgQXJndW1lbnRSZWdW
YWx1ZSBjbGFzcy48L2RkPgorICAgICAgICBBcmd1bWVudFJlZ1ZhbHVlIGNsYXNzLiBJdCBjYW4g
YmUgdXNlZCB0byByZWFkIGEgcGlubmVkIHJlZ2lzdGVyIHdoaWNoIGlzIG5vdCBjbG9iYmVyZWQK
KyAgICAgICAgaW5zaWRlIHRoZSBwcm9jZWR1cmUuPC9kZD4KIAogICAgICAgPGR0PkludFB0ciBG
cmFtZVBvaW50ZXIoKTwvZHQ+CiAgICAgICA8ZGQ+UmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGZy
YW1lIHBvaW50ZXIgcmVnaXN0ZXIuICBCMyBwcm9jZWR1cmVzIGFsd2F5IHVzZSBhIGZyYW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305456</attachid>
            <date>2017-03-27 01:40:25 -0700</date>
            <delta_ts>2017-03-27 03:36:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327174023.patch</filename>
            <type>text/plain</type>
            <size>59256</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJhNThmYjhiNzY2N2IyZTQwODY1YWRlYjdjNzQ3ODk5NDU4MGQwLi41NGM2NTViZjcxY2ExOTNj
NTg0Nzk4NWYzMGIxYzIxNjUzNTdmNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MyBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IHBpbm5lZCByZWdpc3Rl
ciB0byBob2xkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0
byByZXByZXNlbnQgdGhlIGNvbnRleHQgb2YgcnVubmluZyBXYXNtIGNvZGUuCisgICAgICAgIFdo
aWxlIHdlIHVzZSBmYXN0IFRMUyB0byBob2xkIHRoZSBjb250ZXh0IGluIG1hY09TLCB3ZSBkbyBu
b3QgaGF2ZQorICAgICAgICBhbnkgc3lzdGVtIHJlc2VydmVkIGZhc3QgVExTIHNsb3QgaW4gdGhl
IG90aGVyIHN5c3RlbXMuIFRoaXMgcGlubmVkCisgICAgICAgIHJlZ2lzdGVyIGFwcHJvYWNoIGlz
IHVzZWQgaW4gdGhlc2Ugc3lzdGVtcy4gVGhlc2UgY2hhbmdlcyBkZWNvdXBsZQorICAgICAgICBW
TSBmcm9tIFdhc20gbW9kdWxlIHRvIG1ha2UgV2FzbSBtb2R1bGUgcG9zaXRpb24gaW5kZXBlbmRl
bnQgY29kZS4KKworICAgICAgICBXaGlsZSB1c2luZyBmYXN0IFRMUyBjb3VsZCBiZSBiZW5lZmlj
aWFsIGluIHg2NCBzeXN0ZW1zIHdoaWNoIG51bWJlciBvZgorICAgICAgICByZWdpc3RlcnMgaXMg
cmVsYXRpdmVseSBzbWFsbCwgcGlubmVkIHJlZ2lzdGVyIGFwcHJvYWNoIGNvdWxkIGJlCisgICAg
ICAgIGJlbmVmaWNpYWwgaW4gQVJNNjQgd2hpY2ggaGFzIHBsZW50eSBvZiByZWdpc3RlcnMuIElu
IG1hY09TLCB3ZSBjYW4KKyAgICAgICAgc3dpdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo
ZSBydW50aW1lIGZsYWcuIFRodXMgbWFjT1MgcG9ydCBjYW4KKyAgICAgICAgY29tcGFyZSB0aGUg
cGVyZm9ybWFuY2UgYW5kIGRlY2lkZSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGFmdGVy
CisgICAgICAgIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
b2Zmc2V0T2ZWTSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6
CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWND
YWxsKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUpOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Ondhc21Db250ZXh0T2Zmc2V0KToKKyAgICAgICAg
KiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bG9hZFdh
c21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAg
ICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNy
ZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206Ondhc21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpnZXRQaW5uZWRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdp
c3RlckluZm86OmdldCk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6
UGlubmVkUmVnaXN0ZXJJbmZvKToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OnRvU2F2ZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OnVzZUZhc3RUTFMpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNl
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2Vi
QXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
VG9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpkZXN0cm95KTogRGVsZXRlZC4K
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oOgorICAgICAgICAoSlND
Ojppc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSk6CisKIDIwMTctMDMtMjYgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCMzo6Zml4U1NBIHNob3VsZCBkbyBsaXZlbmVz
cyBwcnVuaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWFmNzE0ZTA5
NTA5ZjhhNWVjZjE2NGFhYzNhZjlhOTQwYjIxMjc2Yi4uMTNiZDNhMDBiMDhhZDQ3YTBkM2UwMzNj
NGE0ZDZkNzIyMzgzMzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
OTM0LDcgKzkzNCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKICAgICB3YXNtL1dhc21CaW5kaW5nLmNwcAogICAgIHdhc20vV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmNwcAotICAgIHdhc20vV2FzbUNvbnRleHQuY3BwCiAgICAgd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAogICAgIHdhc20vV2FzbUZvcm1hdC5jcHAKICAg
ICB3YXNtL1dhc21NZW1vcnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBj
NWJmNTdlYTI5ZjQwYmNhZDk4NTZjMjZmNTE2NjBjOWNlYzgxZjMuLjBhMzYyMmJhMzA3OGVkNDAx
NWY2ZWFmNDQwYWZmNDkyYjU3MTQ0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMDg3LDggKzIwODcsNiBAQAogCQlBRDJGQ0MzMDFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJB
c3NlbWJseS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDJGQ0MyRTFEQjgzOUY3MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5jcHAgKi87IH07CiAJ
CUFEMkZDQzMxMURCODNENDkwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MyRjFEQjgzOUY3MDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseS5oICovOyB9OwogCQlBRDJGQ0MzMzFEQzQwNDU0MDBCM0U3MzYg
LyogV2FzbUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi87IH07
Ci0JCUFENDEyQjMzMUU3QjJFOTkwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIzMTFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovOyB9OwotCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYx
NTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFENDEyQjMyMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFENDI1MjUxMUU1
RDBFMTQwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxD
b2RlT3JpZ2luLmggKi87IH07CiAJCUFENDI1MjUzMUU1RDBGNDcwMDlEMkE5NyAvKiBGdWxsQ29k
ZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBRDQyNTI1MjFFNUQwRjIyMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwICovOyB9Owog
CQlBRDQ5MzdDMzFEREJFNjE0MDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0OTM3QzExRERC
RTYwQTAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQ2NjEs
OCArNDY1OSw2IEBACiAJCUFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViQXNzZW1ibHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDJGQ0MyRjFEQjgzOUY3MDBCM0U3
MzYgLyogSlNXZWJBc3NlbWJseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYkFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzMyMURD
NDA0NTMwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdhc21Gb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlBRDQxMkIzMTFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFENDI1MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDQyNTI1MjFFNUQwRjIyMDA5RDJBOTcgLyog
RnVsbENvZGVPcmlnaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RnVsbENvZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI2OSw4
ICs2MjY1LDYgQEAKIAkJCQlBRDRCMURGODFERjI0NEQ3MDA3MUFFMzIgLyogV2FzbUJpbmRpbmcu
aCAqLywKIAkJCQk1M0ZEMDREMTFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50
aW9uLmNwcCAqLywKIAkJCQk1M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdD
b252ZW50aW9uLmggKi8sCi0JCQkJQUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250
ZXh0LmNwcCAqLywKLQkJCQlBRDQxMkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
aCAqLywKIAkJCQk3OURBRTI3OTFFMDNDODIyMDBCNTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUu
aCAqLywKIAkJCQlBRDJGQ0MzMjFEQzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8s
CiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCAqLywKQEAgLTg1
ODcsNyArODU4MSw2IEBACiAJCQkJMEZFQTBBMEMxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExE
T01KSVRQYXRjaHBvaW50UGFyYW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlENEMwRDFDM0Ux
QzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlB
RDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjM1QkQ0MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjM1QkQ2MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRG
b3JPcGVyYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGNTE5RDBCQUMxMDBCMUQxQjUg
LyogRlRMRXhpdFByb3BlcnR5VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjIsNyArMTA3
MTUsNiBAQAogCQkJCUJDREUzQjQzMEU2QzgzMkQwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0U0RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBT
dHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUFENDEyQjMzMUU3QjJFOTkw
MDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkYwRjJEMTE2
QkFFRUU5MDAxODdDMTkgLyogU3RydWN0dXJlUmFyZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCNDM4QTMxOTI3MEIxRDAwRTFGQkM5IC8qIFN0cnVjdHVyZVNldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNlMzRjNWJj
ZGMyMjcuLjU2ZDVjYmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwxMSBAQCBj
bGFzcyBNYXJrZWRCbG9jayB7CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2b2lk
KiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWFya2luZ1ZlcnNpb247IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpCisg
ICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3ZtKTsK
KyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdu
bWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKaW5kZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRlMjFiNjE4
OGY5Yjc1ZC4uMjgwNDVjZTYyM2M0OGRmOGY5YjBjNjBlODk5NzFhOTdiMzUxNzg1MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIsNiAr
MzIsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJbmZvcm1h
dGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNz
ZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
CkBAIC03NjYsNiArNzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZh
bHVlVG9Cb29sZWFuKEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAgZG9uZS5s
aW5rKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3NlbWJseUhl
bHBlcnM6OmxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShGQVNUX1RM
U19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAg
ICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9L
RVkpLCBkc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShXYXNt
OjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLndhc21Db250ZXh0UG9pbnRlciwgZHN0KTsKK30K
Kwordm9pZCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKK3sK
KyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUZhc3RUTFMoKSkgeworICAgICAgICBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRMU09mZnNldEZv
cktleShXVEZfV0FTTV9DT05URVhUX0tFWSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisgICAgbW92ZShzcmMsIFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkud2FzbUNv
bnRleHRQb2ludGVyKTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4
dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQp
CisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1
cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250
ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJl
dHVybiBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmgKaW5kZXggNTAwZDY4ODIyMzljZWI5YjIwOTcyNTQ0NmQzY2NkODg5YmRhMTgyOC4u
YTc4Y2M2OWY5YTc5NTE2NTI0MzUyMmJiNjIyMDc0OTI3ZDJhNDY1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNjM2LDQ1ICsxNjM2LDEyIEBA
IGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgdm9p
ZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKLSAgICB7Ci0j
aWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5RmFzdFRMUygpKSB7Ci0gICAgICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0
Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxz
ZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTc3MwotICAgICAgICBsb2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4dCwgZHN0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKLSAgICB7Ci0jaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHIoc3JjLCBmYXN0VExT
T2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYKLSAgICAgICAgLy8g
RklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIHN0b3JlUHRyKHNy
YywgJm1fdm0tPndhc21Db250ZXh0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBsb2FkV2Fz
bUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZB
U1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygp
KQotICAgICAgICAgICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdp
c3RlcigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRp
YyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKLSAgICB7
Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIHZvaWQg
bG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpOworICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChH
UFJSZWcgc3JjKTsKKyAgICBzdGF0aWMgYm9vbCBsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKCk7CisgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFj
cm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
CiAKIHByb3RlY3RlZDoKICAgICBWTSogbV92bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCmluZGV4IDdkZGM2YmFlMDA2ZGNmYzFhM2Q3NzFhMDYzMTM3M2RkMjU3OTliNWEuLjY4
ODUxYjIyZGUxOTM5YTgzYjIyNTNlZWEzNWU0NWZmMTA1MTNlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTksNyArNTksNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVy
ZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5o
IgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1h
UHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgpAQCAtNTc3LDI1ICs1NzcsMTMgQEAgc3RhdGljIHZvaWQgbGlua1Ns
b3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKICAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUo
Vk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkKLXsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAg
Ly8gVGhlIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWIgc2V0cyBpdCBjYWxsZXIgZnJhbWUncyBjYWxs
ZWUgdG8gYSBzaW5nbGV0b24gd2hpY2ggbGl2ZXMgb24gdGhlIFZNLgotICAgIHJldHVybiBjYWxs
ZWUgPT0gdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwotICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCi19Ci0KLXN0YXRpYyBKU0NlbGwqIHdlYkFz
c2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0Nl
bGwqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJB
c3NlbWJseS5JbnN0YW5jZSBzaGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHku
TW9kdWxlLCB3aGljaCBhcmUgdGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICBy
ZXR1cm4gbG9hZFdhc21Db250ZXh0KHZtKS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxX
ZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjYWxsZWUpLT5pbnN0YW5jZSgpLT5tb2R1bGUoKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGVlKTsKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTYxMiw3ICs2MDAsNyBAQCB2b2lkIGxpbmtG
b3IoCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJs
b2NrKCk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFs
aWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2Fs
bGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+
Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBB
U1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKQEAgLTczMiwxMCArNzIwLDEwIEBAIHZv
aWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhl
Yy0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSYgdm0gPSBjYWxsZXJGcmFtZS0+dm0oKTsKICAgICBD
b2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKLSAg
ICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVy
RnJhbWUtPmNhbGxlZSgpKTsKKyAgICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5
VG9KU0NhbGxlZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkg
LT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93
bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJs
b2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25l
cihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChv
d25lcik7CiAKICAgICBDYWxsVmFyaWFudExpc3QgbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAwODU3ZTM0YmYxZDJiMDQ2ZDdhYmNh
NDg5MTIxYzFmMzhjOTAyMmZjLi41MjE3YjgyNTg2ZGVlNWU0ZjlmMGRhNGM2YjA3ODU0NjAyNjI0
MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlv
blR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmg+CkBAIC0xMTQ4LDE2ICsxMTQ3LDE3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIH0K
IAogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CiAgICAgaml0Lmp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgIHZvaWQgKCp0aHJvd1dhc21FeGNlcHRpb24p
KEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywg
V2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlKSB7CisgICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlv
bikoRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIHsKICAgICAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBs
b2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogCiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9u
VHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IDhiNjE1YTFhM2E1MTUxMDU5NjcyMDY1ZDQ3MmI3ZThhZTg1ODY5OWEuLjBhZmYxMDgwYWNiMjAz
YmU0ZTQzMDllMzhlNWExNDI4ZDUxZmU0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCkBAIC0xNTYsMjEgKzE1NiwyMSBAQCB2b2lkIERhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKFZNJiB2bSkKICAgICAKICAgICBTVEFUSUNfQVNTRVJUKFN0cmluZ1R5cGUgPT0g
Nik7CiAgICAgU1RBVElDX0FTU0VSVChTeW1ib2xUeXBlID09IDcpOwotICAgIFNUQVRJQ19BU1NF
UlQoT2JqZWN0VHlwZSA9PSAyMyk7Ci0gICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUg
PT0gMjQpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjYpOwotICAgIFNU
QVRJQ19BU1NFUlQoQXJyYXlUeXBlID09IDM0KTsKLSAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRB
cnJheVR5cGUgPT0gMzUpOwotICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDUz
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzYpOwotICAgIFNUQVRJQ19B
U1NFUlQoSW50MTZBcnJheVR5cGUgPT0gMzcpOwotICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJh
eVR5cGUgPT0gMzgpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gMzkpOwot
ICAgIFNUQVRJQ19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQwKTsKLSAgICBTVEFU
SUNfQVNTRVJUKFVpbnQxNkFycmF5VHlwZSA9PSA0MSk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50
MzJBcnJheVR5cGUgPT0gNDIpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9
PSA0Myk7Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKE9iamVjdFR5cGUgPT0gMjQpOworICAgIFNUQVRJQ19BU1NFUlQoRmluYWxP
YmplY3RUeXBlID09IDI1KTsKKyAgICBTVEFUSUNfQVNTRVJUKEpTRnVuY3Rpb25UeXBlID09IDI3
KTsKKyAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAzNSk7CisgICAgU1RBVElDX0FTU0VS
VChEZXJpdmVkQXJyYXlUeXBlID09IDM2KTsKKyAgICBTVEFUSUNfQVNTRVJUKFByb3h5T2JqZWN0
VHlwZSA9PSA1NCk7CisgICAgU1RBVElDX0FTU0VSVChJbnQ4QXJyYXlUeXBlID09IDM3KTsKKyAg
ICBTVEFUSUNfQVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM4KTsKKyAgICBTVEFUSUNfQVNTRVJU
KEludDMyQXJyYXlUeXBlID09IDM5KTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4QXJyYXlUeXBl
ID09IDQwKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9PSA0MSk7
CisgICAgU1RBVElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUgPT0gNDIpOworICAgIFNUQVRJQ19B
U1NFUlQoVWludDMyQXJyYXlUeXBlID09IDQzKTsKKyAgICBTVEFUSUNfQVNTRVJUKEZsb2F0MzJB
cnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlwZSA9PSA0
NSk7CiAgICAgU1RBVElDX0FTU0VSVChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAg
IFNUQVRJQ19BU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBT
VEFUSUNfQVNTRVJUKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID09IDB4NDAwMDAwMDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IGU4ZTJkYjhjZGFjMmUxZTEwZDJiOGEzZjVmZjcwNjE5ZmRlMDFkNGYuLmFiM2Mw
YzhlNzcxZmVkYWU5YjY1ZGFjZGI2MjI1MWExODdhM2M5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTM0NSwyNCAr
MzQ1LDI0IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSA9IDB4MEMKICMgVHlwZSBj
b25zdGFudHMuCiBjb25zdCBTdHJpbmdUeXBlID0gNgogY29uc3QgU3ltYm9sVHlwZSA9IDcKLWNv
bnN0IE9iamVjdFR5cGUgPSAyMwotY29uc3QgRmluYWxPYmplY3RUeXBlID0gMjQKLWNvbnN0IEpT
RnVuY3Rpb25UeXBlID0gMjYKLWNvbnN0IEFycmF5VHlwZSA9IDM0Ci1jb25zdCBEZXJpdmVkQXJy
YXlUeXBlID0gMzUKLWNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IDUzCitjb25zdCBPYmplY3RUeXBl
ID0gMjQKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDI1Citjb25zdCBKU0Z1bmN0aW9uVHlwZSA9
IDI3Citjb25zdCBBcnJheVR5cGUgPSAzNQorY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IDM2Citj
b25zdCBQcm94eU9iamVjdFR5cGUgPSA1NAogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBuZWVk
IHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBtYW51
YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0X2J5
X3ZhbC4KLWNvbnN0IEludDhBcnJheVR5cGUgPSAzNgotY29uc3QgSW50MTZBcnJheVR5cGUgPSAz
NwotY29uc3QgSW50MzJBcnJheVR5cGUgPSAzOAotY29uc3QgVWludDhBcnJheVR5cGUgPSAzOQot
Y29uc3QgVWludDhDbGFtcGVkQXJyYXlUeXBlID0gNDAKLWNvbnN0IFVpbnQxNkFycmF5VHlwZSA9
IDQxCi1jb25zdCBVaW50MzJBcnJheVR5cGUgPSA0MgotY29uc3QgRmxvYXQzMkFycmF5VHlwZSA9
IDQzCi1jb25zdCBGbG9hdDY0QXJyYXlUeXBlID0gNDQKK2NvbnN0IEludDhBcnJheVR5cGUgPSAz
NworY29uc3QgSW50MTZBcnJheVR5cGUgPSAzOAorY29uc3QgSW50MzJBcnJheVR5cGUgPSAzOQor
Y29uc3QgVWludDhBcnJheVR5cGUgPSA0MAorY29uc3QgVWludDhDbGFtcGVkQXJyYXlUeXBlID0g
NDEKK2NvbnN0IFVpbnQxNkFycmF5VHlwZSA9IDQyCitjb25zdCBVaW50MzJBcnJheVR5cGUgPSA0
MworY29uc3QgRmxvYXQzMkFycmF5VHlwZSA9IDQ0Citjb25zdCBGbG9hdDY0QXJyYXlUeXBlID0g
NDUKIAogY29uc3QgRmlyc3RBcnJheVR5cGUgPSBJbnQ4QXJyYXlUeXBlCiBjb25zdCBMYXN0QXJy
YXlUeXBlID0gRmxvYXQ2NEFycmF5VHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKaW5kZXggYWNkZDRlODhjMGFmMTRhMDlmNzZiZTJhM2FhNWExOTBlYTZiODBlMy4u
M2RmYzI4NWZlNzhjMmVjODQ4MDU4MzJkZmYxMDI5ZWU4MjRjYWRhOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgSlNWYWx1ZSBK
U0NlbGw6OmdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCiBib29sIEpTQ2VsbDo6
aXNBbnlXYXNtQ2FsbGVlKFZNJiB2bSkgY29uc3QKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgcmV0dXJuIGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZvKCkpIHx8
IGluaGVyaXRzKHZtLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmluZm8oKSk7CisgICAgcmV0dXJu
IGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZvKCkpIHx8IGlzV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKHRoaXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXggNGQ3
ZWU0OTgwNjA5NzAwOGFkMzY3MjgyMWIxMzIzMTA3N2VjM2RkZS4uNjJlMzc3MmY0MmI0N2E4OTlh
NDgwNTZlZGU5NDVmZGU3ZTY4ZmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgKQEAgLTUzLDYgKzUzLDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBKU1Nv
dXJjZUNvZGVUeXBlLAogICAgIEpTU2NyaXB0RmV0Y2hlclR5cGUsCiAKKyAgICBXZWJBc3NlbWJs
eVRvSlNDYWxsZWVUeXBlLAorCiAgICAgLy8gVGhlIE9iamVjdFR5cGUgdmFsdWUgbXVzdCBjb21l
IGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBzdWJjbGFzcyBvZiBKU09iamVjdC4KICAgICBP
YmplY3RUeXBlLAogICAgIEZpbmFsT2JqZWN0VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKaW5kZXggNmQ0Nzg2NGM5NzhkYzI3YTRlMzc1MDdkMjI2
ZGQ1N2E5YTBjY2NlMi4uMTY0YzRmNTdiY2Q0YjJjNGJmN2ZjMDc2NGE1ZTEwNDU0ZGE3YTJlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKQEAgLTcy
LDEwICs3MiwxMCBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgY29u
c3QKICAgICB9CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgaWYgKG1fY2FsbGVlKSB7CisgICAgICAg
IGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+dm0oKSkpCisgICAgICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICAgICAgaWYgKG1fY2FsbGVl
LT5pc09iamVjdCgpKQogICAgICAgICAgICAgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5TmFt
ZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4obV9jYWxsZWUuZ2V0KCkpKS5pbXBsKCk7Ci0gICAgICAg
IGVsc2UgaWYgKG1fY2FsbGVlLT5pc0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgpKSkKLSAg
ICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjx3YXNtPiIpOwogICAgIH0KICAgICByZXR1
cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDg1MTE1NDJiNzdkZmM4ZTZmMmJlYWJmMWY4OTNjNzcz
OWFiNzRiMzguLmQxMDgxNTNmNjg0ZTE5ZWM4OTQ0YmQ0NGYxMTI1YzE5ZmUxNzI2MDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0MCw3ICsyNDAsNiBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgd2ViQXNzZW1ibHlDYWxsZWVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJl
LnNldCgqdGhpcywgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7Ci0gICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlLnNldCgqdGhpcywgV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlOjpjcmVhdGUoKnRoaXMsIHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVy
ZS5nZXQoKSkpOwogI2VuZGlmCiAgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4cDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggOWQ4NmFhMTlhOTMzY2VhMzhhYjVmMDIzMTg0NDU5Y2I2MDEwZjNiNy4u
MTU4ZTY5OGJhNDg3MTI5MTU1NTU1OGRkMjZkNWZhYTA5Y2EzZDEzZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0zMzYsNyArMzM2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25n
PEpTQ2VsbD4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlOwogI2VuZGlmCiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gcmVnRXhwU3RydWN0dXJlOwpAQCAtNDkwLDYgKzQ4OSwxMSBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB0YXJnZXRNYWNoaW5l
UENGb3JUaHJvdyk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCB3YXNtQ29udGV4dE9m
ZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB3YXNtQ29u
dGV4dCk7CisgICAgfQorCiAgICAgdm9pZCByZXN0b3JlUHJldmlvdXNFeGNlcHRpb24oRXhjZXB0
aW9uKiBleGNlcHRpb24pIHsgc2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7IH0KIAogICAgIHZvaWQg
Y2xlYXJMYXN0RXhjZXB0aW9uKCkgeyBtX2xhc3RFeGNlcHRpb24gPSBudWxscHRyOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXgg
ZmFjNTdhZGRhZjA3NGU5YThjZmU2MDYzMzM1ZjMwZGEyZTk2ZDNhMi4uNzBhN2IxOWIyMmY5ZjNm
ZjhiZGRlODZjMDBkMGI0NjQxYTI3MzQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIu
aCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKLSNpbmNsdWRlICJXYXNtQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1
bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtMjI3LDI2ICsyMjYs
MzQgQEAgY2xhc3MgQjNJUkdlbmVyYXRvciB7CiAgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2Fz
bUNhbGw+JiBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzOyAvLyBMaXN0IGVhY2ggY2FsbCBzaXRl
IGFuZCB0aGUgZnVuY3Rpb24gaW5kZXggd2hvc2UgYWRkcmVzcyBpdCBzaG91bGQgYmUgcGF0Y2hl
ZCB3aXRoLgogICAgIEdQUlJlZyBtX21lbW9yeUJhc2VHUFI7CiAgICAgR1BSUmVnIG1fbWVtb3J5
U2l6ZUdQUjsKKyAgICBHUFJSZWcgbV93YXNtQ29udGV4dEdQUjsKICAgICBWYWx1ZSogbV96ZXJv
VmFsdWVzW251bVR5cGVzXTsKICAgICBWYWx1ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTog
bWFrZSB0aGlzIGxhenkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
OTc5MgogfTsKIAogc3RhdGljIFZhbHVlKiBsb2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9j
LCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQg
PSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwg
T3JpZ2luKCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFj
cm9TY3JhdGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6bG9hZFdhc21Db250
ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIGppdC5sb2FkV2Fz
bUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7CisgICAgaWYgKHVzZUZhc3RU
TFMoKSkgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBw
ZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOwor
ICAgICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRj
aFJlZ2lzdGVyKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0
OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcigKKyAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpsb2Fk
V2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAg
IGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9y
aWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICB9CiAKLSAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICByZXR1
cm4gYmxvY2stPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS53YXNtQ29udGV4dFBvaW50ZXIpOwogfQogCiBzdGF0aWMg
dm9pZCBzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ss
IFZhbHVlKiBhcmcpCiB7CisgICAgLy8gV2UgdXNlIHBpbm5lZCBjYWxsZWUgc2F2ZSByZWdpc3Rl
ciBmb3IgdGhpcyBwdXJwb3NlLiBUaHVzLCB3ZSBkbyBub3QgbmVlZCB0byByZXN0b3JlIHRoZSBp
bnN0YW5lIHJlZ2lzdGVyIG9uIHRoZSBjYWxsZXIgc2lkZS4KKyAgICBpZiAoIXVzZUZhc3RUTFMo
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0g
YmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4o
KSk7CiAgICAgaWYgKENDYWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3Jh
dGNoUmVnaXN0ZXIoKSkKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtMjgzLDcgKzI5MCwxMCBAQCBCM0lSR2VuZXJh
dG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IFByb2NlZHVyZSYgcAogICAgIC8vIEZJWE1FIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHBpbiBy
ZWdpc3RlcnMgaGVyZSBpZiB0aGVyZSdzIG5vIG1lbW9yeS4gSXQgbWFrZXMgd2FzbSAtPiB3YXNt
IHRodW5rcyBzaW1wbGVyIGZvciBub3cuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjY2MjMKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3Mg
PSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgIG1fbWVtb3J5QmFzZUdQUiA9IHBpbm5l
ZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgbV93YXNtQ29udGV4dEdQUiA9IHBpbm5lZFJl
Z3Mud2FzbUNvbnRleHRQb2ludGVyOwogICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJh
c2VHUFIpOworICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICBtX3Byb2MucGluUmVnaXN0
ZXIobV93YXNtQ29udGV4dEdQUik7CiAgICAgQVNTRVJUKCFwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
cnNbMF0uc2l6ZU9mZnNldCk7CiAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVncy5zaXpl
UmVnaXN0ZXJzWzBdLnNpemVSZWdpc3RlcjsKICAgICBmb3IgKGNvbnN0IFBpbm5lZFNpemVSZWdp
c3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnMpCkBAIC0zMDcsMTIg
KzMxNywxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZhbHVlKiBzaXplOwog
fTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2
bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQor
c3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBWYWx1ZSog
bWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
cG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
bG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6
ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1v
cnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8
SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1v
cnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNp
emVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKICAgICBNZW1v
cnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0LmJhc2UgPSBibG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgbWVtb3J5
T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSgpKTsKICAgICByZXN1
bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNp
emUoKSk7CkBAIC00MTksMTIgKzQyOSwxMSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFVucmVh
Y2hhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dN
ZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBh
cnRpYWxSZXN1bHQKIHsKLSAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSkgKEV4ZWNTdGF0ZSosIGlu
dDMyX3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7
CisgICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpIChFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogd2FzbUNvbnRleHQsIGludDMyX3QgZGVsdGEpIC0+IGludDMyX3QgewogICAgICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKLSAgICAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IGxv
YWRXYXNtQ29udGV4dCh2bSk7Ci0gICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHdhc21NZW1v
cnkgPSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIHdh
c21NZW1vcnkgPSB3YXNtQ29udGV4dC0+bWVtb3J5KCk7CiAKICAgICAgICAgaWYgKGRlbHRhIDwg
MCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ0MCw3ICs0NDksNyBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpCiAKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEND
YWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIE9yaWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIGJpdHdpc2VfY2Fz
dDx2b2lkKj4oZ3Jvd01lbW9yeSkpLAotICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSksIGRlbHRhKTsK
KyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBtX2luc3RhbmNlVmFsdWUsIGRlbHRhKTsKIAogICAg
IHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VW
YWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CiAKQEAgLTQ0OSw3ICs0NTgsNyBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpCiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ3VycmVudE1lbW9y
eShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgYXV0byBt
ZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1fdm0sIG1faW5zdGFuY2VWYWx1ZSwg
bV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgYXV0byBtZW1vcnlWYWx1ZSA9IGdldE1lbW9y
eUJhc2VBbmRTaXplKG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CiAK
ICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2OwogICAgIHN0YXRpY19hc3Nl
cnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxIDw8IHNoaWZ0VmFsdWUsICJUaGlzIG11c3QgaG9s
ZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4iKTsKQEAgLTEwODAsMTEgKzEwODks
OCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0
JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAgICAgICAqbGlua2VkQ2FsbGVlTW92ZSA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZihjYWxsZWVNb3ZlTG9jYXRpb24pOwogICAgIH0pOwogCi0g
ICAgUmVnaXN0ZXJTZXQgdG9TYXZlOwogICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlu
bmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7Ci0gICAgdG9TYXZlLnNldChwaW5u
ZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICBmb3IgKGNvbnN0IFBpbm5lZFNpemVSZWdp
c3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnMpCi0gICAgICAgIHRv
U2F2ZS5zZXQocmVnSW5mby5zaXplUmVnaXN0ZXIpOworICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZSA9
IHBpbm5lZFJlZ3MudG9TYXZlKCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgdW5zaWdu
ZWQgdG9TYXZlU2l6ZSA9IHRvU2F2ZS5udW1iZXJPZlNldEdQUnMoKTsKQEAgLTExOTEsMTAgKzEx
OTcsMjQgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgfQogICAgIH0KIAorICAg
IC8vIEZJWE1FOiBKU1dlYkFzc2VtYmx5Q2FsbGVlIHNob3VsZCBoYXZlIGEgcG9pbnRlciB0byBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UgaW5zdGVhZC4KKyAgICBHUFJSZWcgd2FzbUNvbnRleHQgPSBw
aW5uZWRSZWdzLndhc21Db250ZXh0UG9pbnRlcjsKKyAgICBpZiAoIXVzZUZhc3RUTFMoKSkgewor
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkpLCB3YXNtQ29udGV4dCk7CisgICAgICAgIGppdC5hbmRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2spLCB3YXNtQ29udGV4
dCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4
dCwgTWFya2VkQmxvY2s6Om9mZnNldE9mVk0oKSksIHdhc21Db250ZXh0KTsKKyAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBWTTo6d2FzbUNvbnRl
eHRPZmZzZXQoKSksIHdhc21Db250ZXh0KTsKKyAgICB9CisKICAgICBpZiAoISFpbmZvLm1lbW9y
eSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBv
aW50ZXI7Ci0gICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7Ci0gICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKworICAgICAgICBp
ZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyh3YXNtQ29udGV4dCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9y
eSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaml0LmxvYWRX
YXNtQ29udGV4dChiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
TWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgfQogICAgICAgICBjb25zdCBhdXRvJiBz
aXplUmVncyA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyczsKICAgICAgICAgQVNTRVJUKHNpemVS
ZWdzLnNpemUoKSA+PSAxKTsKICAgICAgICAgQVNTRVJUKCFzaXplUmVnc1swXS5zaXplT2Zmc2V0
KTsgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgd2Ugc3RhcnQgYXQgMCwgYW5kIGNhbGN1
bGF0ZXMgc3Vic2VxdWVudCBzaXplIHJlZ2lzdGVycyByZWxhdGl2ZSB0byAwLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IGZiNjc2NTdlYTQwY2VjZDBi
ODY4ODBlYmIyNGM3ZWE3OTEzZjljMzMuLmUwY2FiMWY2ZDRkNzk4MWJjOGRjNzA5YWUyYWZmOGZi
MjYwOTQ4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5k
aW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAK
QEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5o
IgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKQEAgLTY2LDggKzY1LDYgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlu
a0luZm8+JiBjYWxsTGlua0luZm9zLAogCiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CiAgICAgaml0LnN0b3JlNjQoSklUOjpUcnVzdGVkSW1tMzIoMCksIEpJVDo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOyAvLyBGSVhNRSBTdG9wIHVzaW5nIDAgYXMg
Y29kZUJsb2Nrcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTMy
MQotICAgIGppdC5zdG9yZVB0cihKSVQ6OlRydXN0ZWRJbW1QdHIodm0tPndlYkFzc2VtYmx5VG9K
U0NhbGxlZS5nZXQoKSksIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOwotCiAKICAgICB7CiAgICAgICAgIGJvb2wgaGFzQmFkSTY0VXNlID0gZmFsc2U7CkBAIC05
MywxNiArOTAsMjIgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSog
dm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgICAgICBpZiAoaGFzQmFk
STY0VXNlKSB7CiAgICAgICAgICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9WTUVudHJ5RnJhbWVD
YWxsZWVTYXZlc0J1ZmZlcigpOwogICAgICAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgICAgICBqaXQubG9h
ZFdhc21Db250ZXh0KEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisKKyAgICAgICAgICAgIC8vIFN0
b3JlIENhbGxlZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjphcmd1bWVudEdQUjEsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CisgICAgICAgICAgICBqaXQuc3RvcmVQ
dHIoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkpKTsKKwogICAgICAgICAgICAgYXV0byBjYWxsID0gaml0LmNhbGwoKTsKICAg
ICAgICAgICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAKLSAgICAgICAgICAgIHZv
aWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjKSAtPiB2
b2lkIHsKKyAgICAgICAgICAgIHZvaWQgKCp0aHJvd0JhZEk2NCkoRXhlY1N0YXRlKiwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqIHdhc21Db250ZXh0KSAtPiB2b2lkIHsKICAgICAgICAgICAgICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKICAgICAgICAgICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKIAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSkt
Pmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2Jh
bE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgQVNDSUlM
aXRlcmFsKCJpNjQgbm90IGFsbG93ZWQgYXMgcmV0dXJuIHR5cGUgb3IgYXJndW1lbnQgdG8gYW4g
aW1wb3J0ZWQgZnVuY3Rpb24iKSk7CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgICAgICB9CkBAIC0yNTIsNiAr
MjU1LDEwIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBC
YWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgfQogICAgIH0KIAorICAg
IGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpJVDo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOworCiAgICAgR1BSUmVnIGltcG9ydEpTQ2Vs
bEdQUlJlZyA9IEdQUkluZm86OnJlZ1QwOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUgaW4gcmVnVDAg
Zm9yIHNsb3cgcGF0aCBiZWxvdy4KICAgICBBU1NFUlQoIXdhc21DQy5tX2NhbGxlZVNhdmVSZWdp
c3RlcnMuZ2V0KGltcG9ydEpTQ2VsbEdQUlJlZykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ODRj
ZDRmNTI2NmEzOGU4MjE1NGE3MWQ3MDUyYmFhZWU0ODk0MjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgotCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotCi0jaW5j
bHVkZSAiVk0uaCIKLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRl
eHQoVk0mIHZtKQotewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FT
TV9DT05URVhUX0tFWSkpOwotI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBl
bHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NzczCi0gICAgcmV0dXJuIHZtLndhc21Db250ZXh0OwotfQotCi12b2lkIHN0b3Jl
V2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQotewot
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKQotICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01f
Q09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2UpKTsKLSNlbmRpZgotICAg
IC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgIHZtLndhc21Db250
ZXh0ID0gaW5zdGFuY2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNWU4YTE4ZDJiMDc0ODFlZTYwMGY4Yjcw
MWU1M2M2MzllNWZjYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKLWNsYXNzIFZNOwot
Ci1KU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYpOwotdm9pZCBzdG9y
ZVdhc21Db250ZXh0KFZNJiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKaW5kZXggOGFj
MDg2NjI3OGI1MTM5M2I2NjllYTA5YTdiNTQ4ZDZkOWE3NmIxNC4uOTllN2QyYmNkMjk5NGRjYmU3
ZjU1ODg5YWIzN2RlNzBlZmE0ZDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCkBAIC0zNCw0MyArMzQsNTcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorc3RhdGljIFZlY3RvcjxHUFJSZWc+
IGdldFBpbm5lZFJlZ2lzdGVycyh1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpCit7
CisgICAgVmVjdG9yPEdQUlJlZz4gcmVnaXN0ZXJzOworICAgIGpzY0NhbGxpbmdDb252ZW50aW9u
KCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7CisgICAgICAg
IGlmICghcmVnLmlzR1BSKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIEdQUlJlZyBn
cHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8
IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAtLXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVyczsKKyAgICAgICAgcmVnaXN0
ZXJzLmFwcGVuZChncHIpOworICAgIH0pOworICAgIHJldHVybiByZWdpc3RlcnM7Cit9CisKIGNv
bnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKQogewogICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UGlubmVkUmVnaXN0ZXJJbmZvPiBzdGF0aWNQaW5u
ZWRSZWdpc3RlckluZm87CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHN0YXRpY1Bpbm5lZFJl
Z2lzdGVySW5mb0ZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uoc3RhdGljUGlubmVkUmVnaXN0ZXJJ
bmZvRmxhZywgW10gKCkgewogICAgICAgICBWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4g
c2l6ZVJlZ2lzdGVyczsKLSAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgICAg
ICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBHUFJS
ZWcgd2FzbUNvbnRleHRQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKIAogICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3Rlciwg
YW5kIHdlIHNob3VsZCBhbGxvdyBkaWZmZXJlbnQKICAgICAgICAgLy8gICAgICAgIFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlIHRvIGhhdmUgZGlmZmVyZW50IHBpbnMuIFJpZ2h0IG5vdyB3ZSB0YWtlIGEg
dmVjdG9yIHdpdGggb25seSBvbmUgZW50cnkuCiAgICAgICAgIC8vICAgICAgICBJZiB3ZSBoYXZl
IG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlciwgd2UgY2FuIGhhdmUgb25lIGZvciBlYWNoIGxv
YWQgc2l6ZSBjbGFzcy4KICAgICAgICAgLy8gICAgICAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IHBp
bm5lZFNpemVzID0geyAwIH07Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lz
dGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDE7Ci0gICAgICAgIGpzY0NhbGxpbmdDb252ZW50
aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVhY2goWyZdIChSZWcgcmVnKSB7Ci0gICAg
ICAgICAgICBpZiAoIXJlZy5pc0dQUigpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7Ci0gICAgICAgICAgICBpZiAoIXJlbWFpbmlu
Z1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVn
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAocmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzID09IDEpIHsKLSAgICAgICAgICAgICAgICBiYXNlTWVtb3J5UG9pbnRlciA9
IGdwcjsKLSAgICAgICAgICAgICAgICByZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMtLTsKLSAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHNpemVSZWdpc3RlcnMuYXBwZW5kKHsgZ3By
LCBwaW5uZWRTaXplc1stLXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyAtIDFdIH0pOwotICAgICAg
ICB9KTsKLQotICAgICAgICBBU1NFUlQoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyk7Ci0gICAg
ICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0
ZXJzKSwgYmFzZU1lbW9yeVBvaW50ZXIpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlBpbm5l
ZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDE7CisgICAgICAgIGlmICghdXNlRmFz
dFRMUygpKQorICAgICAgICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKKyAgICAgICAg
VmVjdG9yPEdQUlJlZz4gcGlubmVkUmVncyA9IGdldFBpbm5lZFJlZ2lzdGVycyhudW1iZXJPZlBp
bm5lZFJlZ2lzdGVycyk7CisKKyAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBwaW5uZWRSZWdz
LnRha2VMYXN0KCk7CisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICAgICAgd2Fz
bUNvbnRleHRQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgpOworCisgICAgICAgIEFTU0VS
VChwaW5uZWRTaXplcy5zaXplKCkgPT0gcGlubmVkUmVncy5zaXplKCkpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGlubmVkU2l6ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IHBpbm5lZFJlZ3NbaV0sIHBpbm5lZFNpemVzW2ldIH0p
OworICAgICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0KFdURk1vdmUoc2l6
ZVJlZ2lzdGVycyksIGJhc2VNZW1vcnlQb2ludGVyLCB3YXNtQ29udGV4dFBvaW50ZXIpOwogICAg
IH0pOwogCiAgICAgcmV0dXJuIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5nZXQoKTsKIH0KIAot
UGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVS
ZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyKQor
UGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVS
ZWdpc3RlckluZm8+JiYgc2l6ZVJlZ2lzdGVycywgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyLCBH
UFJSZWcgd2FzbUNvbnRleHRQb2ludGVyKQogICAgIDogc2l6ZVJlZ2lzdGVycyhXVEZNb3ZlKHNp
emVSZWdpc3RlcnMpKQogICAgICwgYmFzZU1lbW9yeVBvaW50ZXIoYmFzZU1lbW9yeVBvaW50ZXIp
CisgICAgLCB3YXNtQ29udGV4dFBvaW50ZXIod2FzbUNvbnRleHRQb2ludGVyKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5o
CmluZGV4IDZkZTA3MGExMDQ1MmZmNmJiM2M1YzI1MDQxMWYxMGU5MTM4OWU0YTIuLjExNzliNWY3
NTAyZTFmMjZiMDZjYWQ3OTYwOGZkYTFjYWU0MmE0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1
ZGUgIlJlZ2lzdGVyU2V0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldh
c21QYWdlQ291bnQuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00Myw4ICs0NCwyMCBAQCBz
dHJ1Y3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyB7CiBzdHJ1Y3QgUGlubmVkUmVnaXN0ZXJJbmZv
IHsKICAgICBWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKICAg
ICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgR1BSUmVnIHdhc21Db250ZXh0UG9pbnRl
cjsKICAgICBzdGF0aWMgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBnZXQoKTsKLSAgICBQaW5u
ZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZyk7
CisgICAgUGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYm
LCBHUFJSZWcsIEdQUlJlZyk7CisKKyAgICBSZWdpc3RlclNldCB0b1NhdmUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgICAgICByZXN1bHQuc2V0KGJhc2VN
ZW1vcnlQb2ludGVyKTsKKyAgICAgICAgaWYgKHdhc21Db250ZXh0UG9pbnRlciAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICAgICAgcmVzdWx0LnNldCh3YXNtQ29udGV4dFBvaW50ZXIpOworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGluZm8gOiBzaXplUmVnaXN0ZXJzKQorICAgICAgICAgICAg
cmVzdWx0LnNldChpbmZvLnNpemVSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQogfTsKIAogY2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewpAQCAtNzMsNiArODYsMTUgQEAg
Y2xhc3MgTWVtb3J5SW5mb3JtYXRpb24gewogICAgIGJvb2wgbV9pc0ltcG9ydCB7IGZhbHNlIH07
CiB9OwogCitpbmxpbmUgYm9vbCB1c2VGYXN0VExTKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKTsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0FTTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDFjMTFiMGNh
NjVjOTE3NDJmOGU0ODEzYzI0ZDk3NWY2NWVlYmFhMTguLjNiN2Y3Yjg3NDZmZjhkNDIxNDAxNzhj
YTdiNWVlYWVkMDM0NjkyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJX
ZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtODEsNiArODIsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUs
CiAKICAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG1vZHVsZS0+Y29kZUJsb2NrKCkpOwog
ICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldCh2bSwgdGhpcywgbW9kdWxlTmFtZXNwYWNl
T2JqZWN0KTsKKyAgICBtX2NhbGxlZS5zZXQodm0sIHRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZTo6Y3JlYXRlKHZtLCB2bS53ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCksIHRo
aXMpKTsKICAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiZXhw
b3J0cyIpLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QsIE5vbmUpOwogfQogCkBAIC05OSw2ICsxMDEs
NyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX21lbW9yeSk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAgIHZpc2l0b3IucmVw
b3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPm1vZHVsZSgpLT5tb2R1bGVJbmZvcm1h
dGlvbigpLmdsb2JhbHMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhp
c09iamVjdC0+bV9udW1JbXBvcnRGdW5jdGlvbnM7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBl
bmQoKnRoaXNPYmplY3QtPmltcG9ydEZ1bmN0aW9uKGkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5kZXggZTIyODQ5
Njk2NzIwNWEzMTM2Yzg4M2JiZGUzMjZhZGJjNzExMTMwZC4uNDJhYTFiMzVkMWIyYTZmOTM5Yjlk
MzI5NjZiNWYzN2U0ZWU2NDFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgSlNXZWJB
c3NlbWJseU1vZHVsZTsKK2NsYXNzIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKIAogY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1Ymxp
YzoKQEAgLTk3LDYgKzk4LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGlj
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZN
ZW1vcnkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBt
X21lbW9yeSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVGFibGUoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX3RhYmxlKTsgfQorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZDYWxsZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2NhbGxlZSk7IH0KICAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mR2xvYmFscygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UsIG1fZ2xvYmFscyk7IH0KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1w
b3J0RnVuY3Rpb25zKCkgeyByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihX
cml0ZUJhcnJpZXI8SlNDZWxsPik+KHNpemVvZihKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKTsgfQog
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbihzaXplX3QgaW1wb3J0RnVu
Y3Rpb25OdW0pIHsgcmV0dXJuIG9mZnNldE9mSW1wb3J0RnVuY3Rpb25zKCkgKyBpbXBvcnRGdW5j
dGlvbk51bSAqIHNpemVvZihzaXplb2YoV3JpdGVCYXJyaWVyPEpTQ2VsbD4pKTsgfQpAQCAtMTE3
LDYgKzExOSw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJs
eU1lbW9yeT4gbV9tZW1vcnk7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlUYWJsZT4g
bV90YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxl
ZTsKICAgICBNYWxsb2NQdHI8dWludDY0X3Q+IG1fZ2xvYmFsczsKICAgICB1bnNpZ25lZCBtX251
bUltcG9ydEZ1bmN0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IGQxYTgwMWMzZWM5MTFhMTlmMDZh
Yjc5Zjk4YTMzOTAxZjVjNTdjNTEuLjU2NDMzM2IzOTkyOWU2ZjkwOWQ1Nzg2NTJhNTgzOWZiZTE5
ODVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCkBAIC0zOSwxNSArMzksMzMgQEAKICNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiVk0uaCIKLSNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRl
ICJXYXNtTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNpbmNsdWRlIDx3dGYv
U3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdl
YkFzc2VtYmx5RnVuY3Rpb246OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5RnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5RnVuY3Rp
b24pIH07CiAKK3N0YXRpYyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChW
TSYgdm0pCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJB
c3NlbWJseUluc3RhbmNlKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NP
TlRFWFRfS0VZKSk7CisjZW5kaWYKKyAgICByZXR1cm4gdm0ud2FzbUNvbnRleHQ7Cit9CisKK3N0
YXRpYyB2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IGluc3RhbmNlKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19k
aXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2Up
KTsKKyNlbmRpZgorICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7Cit9CisKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTIxLDYgKzEzOSw5
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIs
IHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3MpOwog
CiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25s
eSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2CisgICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2Ug
dG8gbWFrZSBsb2FkV2FzbUNvbnRleHQgYW5kIHN0b3JlV2FzbUNvbnRleHQgbm8tb3AgaWYgd2Ug
dXNlIHBpbm5lZCByZWdpc3RlcnMuCisgICAgLy8gSG93ZXZlciwgd2UgdXNlIFZNLndhc21Db250
ZXh0IGZpZWxkIHRvIHBhc3MgaW5zdGFuY2UgdG8gd2FzbSBmdW5jdGlvbidzIEpTIGdsdWUgY29k
ZS4KKyAgICAvLyBPbmNlIHdlIHN0YXJ0IHVzaW5nIHVzdWFsIFdlYkFzc2VtYmx5RnVuY3Rpb24g
YXMgY2FsbGVlLCB3ZSBjYW4gcmV0cmlldmUgaW5zdGFuY2UgZnJvbSB0aGF0LgogICAgIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IGxvYWRXYXNtQ29u
dGV4dCh2bSk7CiAgICAgc3RvcmVXYXNtQ29udGV4dCh2bSwgd2FzbUZ1bmN0aW9uLT5pbnN0YW5j
ZSgpKTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKQEAgLTE1Myw2ICsx
NzQsNyBAQCBXZWJBc3NlbWJseUZ1bmN0aW9uKiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgV2Vi
QXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxX
ZWJBc3NlbWJseUZ1bmN0aW9uPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlGdW5jdGlvbih2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHdhc21FbnRyeXBvaW50LCBzaWduYXR1cmVJbmRleCk7CiAg
ICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUs
IGluc3RhbmNlLCBqc0VudHJ5cG9pbnQsIHdhc21FbnRyeXBvaW50KTsKKyAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFmdW5jdGlvbi0+aXNMYXJnZUFsbG9jYXRpb24oKSwgIldlYkFzc2VtYmx5RnVu
Y3Rpb24gc2hvdWxkIGJlIGFsbG9jYXRlZCBub3QgaW4gbGFyZ2UgYWxsb2NhdGlvbiBzaW5jZSBp
dCBpcyBKU0NhbGxlZS4iKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3Bw
CmluZGV4IDRlODkxYTA5YTIwZWZhMmY5ODk4NWQ5NzljYTlmNWQ0ZTgxMzAyYWYuLjYyMDNhYWRj
OTYyOWFkYTFhODhkODk0MDNlODM1NWE3M2M4MzkyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcApAQCAtMjks
MjEgKzI5LDIyIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6c19pbmZvID0g
eyAiV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIiwgbnVsbHB0ciwgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShXZWJBc3NlbWJseVRvSlNDYWxsZWUpIH07CiAKLVdlYkFzc2VtYmx5VG9KU0NhbGxlZSogV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K1dlYkFzc2VtYmx5VG9KU0NhbGxlZSogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5j
ZSkKIHsKICAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZSh2bSwgc3RydWN0dXJlKTsKLSAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZtLCBpbnN0YW5jZSk7CiAgICAgcmV0dXJu
IGNhbGxlZTsKIH0KIAogU3RydWN0dXJlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG90eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwogfQogCiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OldlYkFzc2VtYmx5VG9KU0NhbGxl
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtNTEsMTUgKzUyLDE5IEBAIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit2b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywgaW5zdGFu
Y2UpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCit2b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNlbGwpOwot
ICAgIHRoaXNPYmplY3QtPldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6fldlYkFzc2VtYmx5VG9KU0Nh
bGxlZSgpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VG9KU0NhbGxlZS5oCmluZGV4IDQ5NmM4ODU3NmMzOWY3MjMyNzIzOThhNTY2NWM5
MDRjYzVjMWIxMjMuLjcxMjdiM2YxOTllOGQwOWIyMDBhODYxNjViZmVmMzM3ZmE0OTkzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0Nh
bGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9K
U0NhbGxlZS5oCkBAIC0zMSwyMyArMzEsMzggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNz
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOworCitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgZmluYWwgOiBwdWJs
aWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKIAotICAgIHN0YXRpYyBXZWJBc3NlbWJseVRvSlNDYWxsZWUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBXZWJBc3NlbWJseVRvSlNDYWxs
ZWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotICAgIHN0YXRpYyBjb25zdCBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CisKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKCkgeyByZXR1cm4g
bV9pbnN0YW5jZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNXZWJBc3NlbWJseUluc3RhbmNl
Kik7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0dXJlKik7CisKKyAgICBX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlPiBtX2luc3RhbmNlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK25hbWVz
cGFjZSBKU0MgeworCitpbmxpbmUgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShjb25zdCBK
U0NlbGwqIGNlbGwpCit7CisgICAgcmV0dXJuIGNlbGwtPnR5cGUoKSA9PSBXZWJBc3NlbWJseVRv
SlNDYWxsZWVUeXBlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cK
aW5kZXggOGI5M2Y4NjNjNDEwZDJjZTNjNzEyMDhiODNkMGFmZDI3YzE1ZjA4MS4uNjQ1OTVlOWVj
NzY2ZGQ5ZTNlYzNmMzMyNzExMzFhYjY1Y2M3OTc5ZiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Vi
a2l0Lm9yZy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5u
ZWQgcmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEIzIGRvY3VtZW50IGFib3V0IGltbXV0YWJs
ZSBwaW5uZWQgcmVnaXN0ZXIgYW5kIEFyZ3VtZW50UmVnLgorCisgICAgICAgICogZG9jcy9iMy9p
bnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbDoKKwogMjAxNy0wMy0xMSAgSm9uIERhdmlz
ICA8am9uZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFN3aWZ0IHN5bnRheCBoaWdobGlnaHRp
bmcgdG8gd2Via2l0Lm9yZwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2Iz
L2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9k
b2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IDIwYjU5YjVhZTFm
NjU1OWFhNTgzMDZiOTNlMjZkMTdiMDMwYTc1MTUuLjUxNTBiNTk4YzRkOTJlMjdkODljODY0YWY4
ZjI1MTg5NDkwMjQ5ZDQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9p
bnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93ZWJraXQub3Jn
L2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTIzNyw3ICsyMzcs
OCBAQAogICAgICAgPGR0PkludFB0cnxEb3VibGUgQXJndW1lbnRSZWcoJXJlZ2lzdGVyKTwvZHQ+
CiAgICAgICA8ZGQ+UmV0dXJucyB0aGUgdmFsdWUgdGhhdCB0aGUgZ2l2ZW4gcmVnaXN0ZXIgaGFk
IGF0IHRoZSBwcm9sb2d1ZSBvZiB0aGUgcHJvY2VkdXJlLiAgSXQKICAgICAgICAgcmV0dXJucyBJ
bnRQdHIgZm9yIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgYW5kIERvdWJsZSBmb3IgRlBScy4g
IE11c3QgdXNlIHRoZQotICAgICAgICBBcmd1bWVudFJlZ1ZhbHVlIGNsYXNzLjwvZGQ+CisgICAg
ICAgIEFyZ3VtZW50UmVnVmFsdWUgY2xhc3MuIEl0IGNhbiBiZSB1c2VkIHRvIHJlYWQgYSBwaW5u
ZWQgcmVnaXN0ZXIgd2hpY2ggaXMgbm90IGNsb2JiZXJlZAorICAgICAgICBpbnNpZGUgdGhlIHBy
b2NlZHVyZS48L2RkPgogCiAgICAgICA8ZHQ+SW50UHRyIEZyYW1lUG9pbnRlcigpPC9kdD4KICAg
ICAgIDxkZD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZnJhbWUgcG9pbnRlciByZWdpc3Rlci4g
IEIzIHByb2NlZHVyZXMgYWx3YXkgdXNlIGEgZnJhbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305460</attachid>
            <date>2017-03-27 03:36:23 -0700</date>
            <delta_ts>2017-03-27 11:15:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170327193621.patch</filename>
            <type>text/plain</type>
            <size>59661</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJhNThmYjhiNzY2N2IyZTQwODY1YWRlYjdjNzQ3ODk5NDU4MGQwLi44ZjY0NjYzY2JlNTU2YjU1
NzZkNjdkMDgxZTI1NWM5Y2NjNzE0YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IHBpbm5lZCByZWdpc3Rl
ciB0byBob2xkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0
byByZXByZXNlbnQgdGhlIGNvbnRleHQgb2YgcnVubmluZyBXYXNtIGNvZGUuCisgICAgICAgIFdo
aWxlIHdlIHVzZSBmYXN0IFRMUyB0byBob2xkIHRoZSBjb250ZXh0IGluIG1hY09TLCB3ZSBkbyBu
b3QgaGF2ZQorICAgICAgICBhbnkgc3lzdGVtIHJlc2VydmVkIGZhc3QgVExTIHNsb3QgaW4gdGhl
IG90aGVyIHN5c3RlbXMuIFRoaXMgcGlubmVkCisgICAgICAgIHJlZ2lzdGVyIGFwcHJvYWNoIGlz
IHVzZWQgaW4gdGhlc2Ugc3lzdGVtcy4gVGhlc2UgY2hhbmdlcyBkZWNvdXBsZQorICAgICAgICBW
TSBmcm9tIFdhc20gbW9kdWxlIHRvIG1ha2UgV2FzbSBtb2R1bGUgcG9zaXRpb24gaW5kZXBlbmRl
bnQgY29kZS4KKworICAgICAgICBXaGlsZSB1c2luZyBmYXN0IFRMUyBjb3VsZCBiZSBiZW5lZmlj
aWFsIGluIHg2NCBzeXN0ZW1zIHdoaWNoIG51bWJlciBvZgorICAgICAgICByZWdpc3RlcnMgaXMg
cmVsYXRpdmVseSBzbWFsbCwgcGlubmVkIHJlZ2lzdGVyIGFwcHJvYWNoIGNvdWxkIGJlCisgICAg
ICAgIGJlbmVmaWNpYWwgaW4gQVJNNjQgd2hpY2ggaGFzIHBsZW50eSBvZiByZWdpc3RlcnMuIElu
IG1hY09TLCB3ZSBjYW4KKyAgICAgICAgc3dpdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo
ZSBydW50aW1lIGZsYWcuIFRodXMgbWFjT1MgcG9ydCBjYW4KKyAgICAgICAgY29tcGFyZSB0aGUg
cGVyZm9ybWFuY2UgYW5kIGRlY2lkZSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGFmdGVy
CisgICAgICAgIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
b2Zmc2V0T2ZWTSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6
CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWND
YWxsKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlzV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RhY2tGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZ1bmN0
aW9uTmFtZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6d2FzbUNvbnRl
eHRPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpzdG9y
ZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdl
bmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OmdldE1lbW9yeUJhc2VBbmRTaXplKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNt
L1dhc21CaW5kaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSnMpOgorICAgICAg
ICAqIHdhc20vV2FzbUNvbnRleHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdhc20vV2FzbUNv
bnRleHQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OmdldFBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGlubmVkUmVnaXN0ZXJJbmZvOjpQaW5uZWRSZWdpc3RlckluZm8pOgorICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lz
dGVySW5mbzo6dG9TYXZlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6dXNlRmFzdFRMUyk6CisgICAg
ICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNX
ZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mQ2FsbGVlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpz
dG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0Nh
bGxlZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6
OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmg6CisKIDIwMTctMDMtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBCMzo6Zml4U1NBIHNob3VsZCBkbyBsaXZlbmVzcyBwcnVuaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWFmNzE0ZTA5NTA5ZjhhNWVjZjE2NGFhYzNhZjlh
OTQwYjIxMjc2Yi4uMTNiZDNhMDBiMDhhZDQ3YTBkM2UwMzNjNGE0ZDZkNzIyMzgzMzE5MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTM0LDcgKzkzNCw2IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKICAg
ICB3YXNtL1dhc21CaW5kaW5nLmNwcAogICAgIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmNw
cAotICAgIHdhc20vV2FzbUNvbnRleHQuY3BwCiAgICAgd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcAogICAgIHdhc20vV2FzbUZvcm1hdC5jcHAKICAgICB3YXNtL1dhc21NZW1vcnkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBjNWJmNTdlYTI5ZjQwYmNhZDk4NTZj
MjZmNTE2NjBjOWNlYzgxZjMuLjBhMzYyMmJhMzA3OGVkNDAxNWY2ZWFmNDQwYWZmNDkyYjU3MTQ0
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDg3LDggKzIwODcsNiBAQAog
CQlBRDJGQ0MzMDFEQjgzRDQ5MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MyRTFEQjgzOUY3MDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseS5jcHAgKi87IH07CiAJCUFEMkZDQzMxMURCODNENDkwMEIz
RTczNiAvKiBKU1dlYkFzc2VtYmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBRDJGQ0MyRjFEQjgzOUY3MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5o
ICovOyB9OwogCQlBRDJGQ0MzMzFEQzQwNDU0MDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDJGQ0MzMjFEQzQw
NDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi87IH07Ci0JCUFENDEyQjMzMUU3QjJFOTkw
MDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDQxMkIzMTFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQu
Y3BwICovOyB9OwotCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDEyQjMyMUU3
QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFENDI1MjUxMUU1RDBFMTQwMDlEMkE5NyAvKiBGdWxs
Q29kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi87IH07CiAJ
CUFENDI1MjUzMUU1RDBGNDcwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQyNTI1MjFFNUQwRjIyMDA5
RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwICovOyB9OwogCQlBRDQ5MzdDMzFEREJFNjE0MDA3
N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0OTM3QzExRERCRTYwQTAwNzdDODA3IC8qIEFic3Ry
YWN0TW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKQEAgLTQ2NjEsOCArNDY1OSw2IEBACiAJCUFEMkZD
QzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBRDJGQ0MyRjFEQjgzOUY3MDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkFzc2VtYmx5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNt
Rm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Gb3Jt
YXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBRDQxMkIzMTFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2FzbUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBRDQx
MkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2FzbUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQUQ0MTJCMzUxRTdCNTdDMDAwOEFGMTU3IC8qIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZUlmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1
MjUwMUU1RDBERUIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBRDQyNTI1MjFFNUQwRjIyMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVsbENvZGVPcmlnaW4uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI2OSw4ICs2MjY1LDYgQEAKIAkJCQlBRDRC
MURGODFERjI0NEQ3MDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuaCAqLywKIAkJCQk1M0ZEMDREMTFE
N0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCAqLywKIAkJCQk1M0ZE
MDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8sCi0JCQkJ
QUQ0MTJCMzExRTdCMkU4QTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCAqLywKLQkJCQlBRDQx
MkIzMjFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuaCAqLywKIAkJCQk3OURBRTI3OTFF
MDNDODIyMDBCNTI2QUEgLyogV2FzbUV4Y2VwdGlvblR5cGUuaCAqLywKIAkJCQlBRDJGQ0MzMjFE
QzQwNDUzMDBCM0U3MzYgLyogV2FzbUZvcm1hdC5jcHAgKi8sCiAJCQkJN0JDNTQ3RDIxQjY5NTk5
QjAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCAqLywKQEAgLTg1ODcsNyArODU4MSw2IEBACiAJCQkJ
MEZFQTBBMEMxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTENvbXBpbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzMjJFNUE3MURBNjQ0QTgwMDZFNzcwOSAvKiBGVExET01KSVRQYXRjaHBvaW50UGFyYW1z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlENEMwRDFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhj
ZXB0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQlBRDQxMkIzNDFFN0IyRTlFMDA4QUYx
NTcgLyogV2FzbUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ0MTcxNzhFMUMw
MDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkQ2
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1lbnRGb3JPcGVyYW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCOUNGNTE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFByb3BlcnR5VmFs
dWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjIsNyArMTA3MTUsNiBAQAogCQkJCUJDREUzQjQz
MEU2QzgzMkQwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0
RUU3MEYwRUJCN0E1QjAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJBRjczODJDMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUFENDEyQjMzMUU3QjJFOTkwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkYwRjJEMTE2QkFFRUU5MDAxODdDMTkgLyogU3Ry
dWN0dXJlUmFyZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNDM4QTMxOTI3MEIxRDAw
RTFGQkM5IC8qIFN0cnVjdHVyZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQzODE1
QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4
IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEwZTNlMzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVl
NGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5OCwxMSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAg
ICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKwor
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpCisgICAgeworICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAt
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5k
ZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNjNTRlMjFiNjE4OGY5Yjc1ZC4uMjgwNDVjZTYyM2M0
OGRmOGY5YjBjNjBlODk5NzFhOTdiMzUxNzg1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1vcnlJbmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRh
YmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBA
IHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVS
ZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAgICAgZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4
dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZh
c3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpLndhc21Db250ZXh0UG9pbnRlciwgZHN0KTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBl
cnM6OnN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkgeworICAgICAg
ICBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhU
X0tFWSkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgbW92ZShzcmMsIFdh
c206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkud2FzbUNvbnRleHRQb2ludGVyKTsKK30KKwor
Ym9vbCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyTmVl
ZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQor
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNTAwZDY4
ODIyMzljZWI5YjIwOTcyNTQ0NmQzY2NkODg5YmRhMTgyOC4uYTc4Y2M2OWY5YTc5NTE2NTI0MzUy
MmJiNjIyMDc0OTI3ZDJhNDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCkBAIC0xNjM2LDQ1ICsxNjM2LDEyIEBAIGNsYXNzIEFzc2VtYmx5SGVscGVy
cyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJS
ZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBzY3JhdGNoKTsKICNlbmRpZgogCi0gICAgdm9pZCBs
b2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJ
VCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7Ci0gICAg
ICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRF
WFRfS0VZKSwgZHN0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0g
ICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBs
b2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4dCwgZHN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3Jl
V2FzbUNvbnRleHQoR1BSUmVnIHNyYykKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkK
LSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0b3JlVG9UTFNQdHIoc3JjLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNN
X0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0
ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIHN0b3JlUHRyKHNyYywgJm1fdm0tPndhc21Db250ZXh0
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2Ny
YXRjaFJlZ2lzdGVyKCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJu
IGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwotI2VuZGlmCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExT
X0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAg
ICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7
CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIHZvaWQgbG9hZFdhc21Db250ZXh0KEdQUlJl
ZyBkc3QpOworICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKTsKKyAgICBzdGF0
aWMgYm9vbCBsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisgICAg
c3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsK
ICNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAKIHByb3RlY3RlZDoKICAgICBW
TSogbV92bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDdkZGM2YmFl
MDA2ZGNmYzFhM2Q3NzFhMDYzMTM3M2RkMjU3OTliNWEuLmJiZGQ2YWViYzg1NDU2MmIwZDQ5NGNl
YzIyZDk5ODliNzFmMzRhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogI2luY2x1ZGUgIlRodW5rR2Vu
ZXJhdG9ycy5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1h
UHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgpAQCAtNTc3LDI1ICs1NzYsMTMgQEAgc3RhdGljIHZvaWQgbGlua1Ns
b3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKICAgICBjYWxsTGlua0lu
Zm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51
bGxwdHIsIHRydWUpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUo
Vk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkKLXsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAg
Ly8gVGhlIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWIgc2V0cyBpdCBjYWxsZXIgZnJhbWUncyBjYWxs
ZWUgdG8gYSBzaW5nbGV0b24gd2hpY2ggbGl2ZXMgb24gdGhlIFZNLgotICAgIHJldHVybiBjYWxs
ZWUgPT0gdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwotICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCi19Ci0KLXN0YXRpYyBKU0NlbGwqIHdlYkFz
c2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0Nl
bGwqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJB
c3NlbWJseS5JbnN0YW5jZSBzaGFyZXMgdGhlIHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHku
TW9kdWxlLCB3aGljaCBhcmUgdGhlcmVmb3JlIHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICBy
ZXR1cm4gbG9hZFdhc21Db250ZXh0KHZtKS0+bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxX
ZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjYWxsZWUpLT5pbnN0YW5jZSgpLT5tb2R1bGUoKTsKICNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbGVlKTsKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTYxMiw3ICs1OTksNyBAQCB2b2lkIGxpbmtG
b3IoCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBjYWxsZXJGcmFtZS0+Y29kZUJs
b2NrKCk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBoYXZlIGEgdmFs
aWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2Fs
bGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxl
ZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+
Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBB
U1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKQEAgLTczMiwxMCArNzE5LDEwIEBAIHZv
aWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhl
Yy0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSYgdm0gPSBjYWxsZXJGcmFtZS0+dm0oKTsKICAgICBD
b2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKLSAg
ICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVy
RnJhbWUtPmNhbGxlZSgpKTsKKyAgICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5
VG9KU0NhbGxlZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAgICAgLy8gV2ViQXNzZW1ibHkg
LT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwqIG93
bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJs
b2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5ID8gd2ViQXNzZW1ibHlPd25l
cihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VSVChv
d25lcik7CiAKICAgICBDYWxsVmFyaWFudExpc3QgbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAwODU3ZTM0YmYxZDJiMDQ2ZDdhYmNh
NDg5MTIxYzFmMzhjOTAyMmZjLi41MjE3YjgyNTg2ZGVlNWU0ZjlmMGRhNGM2YjA3ODU0NjAyNjI0
MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlv
blR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmlu
Z1ByaW50U3RyZWFtLmg+CkBAIC0xMTQ4LDE2ICsxMTQ3LDE3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIH0K
IAogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIy
KTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CiAgICAgaml0Lmp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgIHZvaWQgKCp0aHJvd1dhc21FeGNlcHRpb24p
KEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywg
V2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlKSB7CisgICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlv
bikoRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBlIHR5cGUsIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIHsKICAgICAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBs
b2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmdsb2JhbE9iamVjdCgpOwogCiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBlcnJvciA9IEpTV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNzYWdlRm9yRXhjZXB0aW9u
VHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IDhiNjE1YTFhM2E1MTUxMDU5NjcyMDY1ZDQ3MmI3ZThhZTg1ODY5OWEuLjBhZmYxMDgwYWNiMjAz
YmU0ZTQzMDllMzhlNWExNDI4ZDUxZmU0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCkBAIC0xNTYsMjEgKzE1NiwyMSBAQCB2b2lkIERhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKFZNJiB2bSkKICAgICAKICAgICBTVEFUSUNfQVNTRVJUKFN0cmluZ1R5cGUgPT0g
Nik7CiAgICAgU1RBVElDX0FTU0VSVChTeW1ib2xUeXBlID09IDcpOwotICAgIFNUQVRJQ19BU1NF
UlQoT2JqZWN0VHlwZSA9PSAyMyk7Ci0gICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUg
PT0gMjQpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjYpOwotICAgIFNU
QVRJQ19BU1NFUlQoQXJyYXlUeXBlID09IDM0KTsKLSAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRB
cnJheVR5cGUgPT0gMzUpOwotICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDUz
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzYpOwotICAgIFNUQVRJQ19B
U1NFUlQoSW50MTZBcnJheVR5cGUgPT0gMzcpOwotICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJh
eVR5cGUgPT0gMzgpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gMzkpOwot
ICAgIFNUQVRJQ19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQwKTsKLSAgICBTVEFU
SUNfQVNTRVJUKFVpbnQxNkFycmF5VHlwZSA9PSA0MSk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50
MzJBcnJheVR5cGUgPT0gNDIpOwotICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9
PSA0Myk7Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKE9iamVjdFR5cGUgPT0gMjQpOworICAgIFNUQVRJQ19BU1NFUlQoRmluYWxP
YmplY3RUeXBlID09IDI1KTsKKyAgICBTVEFUSUNfQVNTRVJUKEpTRnVuY3Rpb25UeXBlID09IDI3
KTsKKyAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAzNSk7CisgICAgU1RBVElDX0FTU0VS
VChEZXJpdmVkQXJyYXlUeXBlID09IDM2KTsKKyAgICBTVEFUSUNfQVNTRVJUKFByb3h5T2JqZWN0
VHlwZSA9PSA1NCk7CisgICAgU1RBVElDX0FTU0VSVChJbnQ4QXJyYXlUeXBlID09IDM3KTsKKyAg
ICBTVEFUSUNfQVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM4KTsKKyAgICBTVEFUSUNfQVNTRVJU
KEludDMyQXJyYXlUeXBlID09IDM5KTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4QXJyYXlUeXBl
ID09IDQwKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9PSA0MSk7
CisgICAgU1RBVElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUgPT0gNDIpOworICAgIFNUQVRJQ19B
U1NFUlQoVWludDMyQXJyYXlUeXBlID09IDQzKTsKKyAgICBTVEFUSUNfQVNTRVJUKEZsb2F0MzJB
cnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQ2NEFycmF5VHlwZSA9PSA0
NSk7CiAgICAgU1RBVElDX0FTU0VSVChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwogICAg
IFNUQVRJQ19BU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBT
VEFUSUNfQVNTRVJUKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID09IDB4NDAwMDAwMDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IGU4ZTJkYjhjZGFjMmUxZTEwZDJiOGEzZjVmZjcwNjE5ZmRlMDFkNGYuLmFiM2Mw
YzhlNzcxZmVkYWU5YjY1ZGFjZGI2MjI1MWExODdhM2M5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTM0NSwyNCAr
MzQ1LDI0IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSA9IDB4MEMKICMgVHlwZSBj
b25zdGFudHMuCiBjb25zdCBTdHJpbmdUeXBlID0gNgogY29uc3QgU3ltYm9sVHlwZSA9IDcKLWNv
bnN0IE9iamVjdFR5cGUgPSAyMwotY29uc3QgRmluYWxPYmplY3RUeXBlID0gMjQKLWNvbnN0IEpT
RnVuY3Rpb25UeXBlID0gMjYKLWNvbnN0IEFycmF5VHlwZSA9IDM0Ci1jb25zdCBEZXJpdmVkQXJy
YXlUeXBlID0gMzUKLWNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IDUzCitjb25zdCBPYmplY3RUeXBl
ID0gMjQKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDI1Citjb25zdCBKU0Z1bmN0aW9uVHlwZSA9
IDI3Citjb25zdCBBcnJheVR5cGUgPSAzNQorY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IDM2Citj
b25zdCBQcm94eU9iamVjdFR5cGUgPSA1NAogCiAjIFRoZSB0eXBlZCBhcnJheSB0eXBlcyBuZWVk
IHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBiZWNhdXNlIG9mIHRoZSBtYW51
YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0X2J5X3ZhbCBhbmQgcHV0X2J5
X3ZhbC4KLWNvbnN0IEludDhBcnJheVR5cGUgPSAzNgotY29uc3QgSW50MTZBcnJheVR5cGUgPSAz
NwotY29uc3QgSW50MzJBcnJheVR5cGUgPSAzOAotY29uc3QgVWludDhBcnJheVR5cGUgPSAzOQot
Y29uc3QgVWludDhDbGFtcGVkQXJyYXlUeXBlID0gNDAKLWNvbnN0IFVpbnQxNkFycmF5VHlwZSA9
IDQxCi1jb25zdCBVaW50MzJBcnJheVR5cGUgPSA0MgotY29uc3QgRmxvYXQzMkFycmF5VHlwZSA9
IDQzCi1jb25zdCBGbG9hdDY0QXJyYXlUeXBlID0gNDQKK2NvbnN0IEludDhBcnJheVR5cGUgPSAz
NworY29uc3QgSW50MTZBcnJheVR5cGUgPSAzOAorY29uc3QgSW50MzJBcnJheVR5cGUgPSAzOQor
Y29uc3QgVWludDhBcnJheVR5cGUgPSA0MAorY29uc3QgVWludDhDbGFtcGVkQXJyYXlUeXBlID0g
NDEKK2NvbnN0IFVpbnQxNkFycmF5VHlwZSA9IDQyCitjb25zdCBVaW50MzJBcnJheVR5cGUgPSA0
MworY29uc3QgRmxvYXQzMkFycmF5VHlwZSA9IDQ0Citjb25zdCBGbG9hdDY0QXJyYXlUeXBlID0g
NDUKIAogY29uc3QgRmlyc3RBcnJheVR5cGUgPSBJbnQ4QXJyYXlUeXBlCiBjb25zdCBMYXN0QXJy
YXlUeXBlID0gRmxvYXQ2NEFycmF5VHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKaW5kZXggYWNkZDRlODhjMGFmMTRhMDlmNzZiZTJhM2FhNWExOTBlYTZiODBlMy4u
M2RmYzI4NWZlNzhjMmVjODQ4MDU4MzJkZmYxMDI5ZWU4MjRjYWRhOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgSlNWYWx1ZSBK
U0NlbGw6OmdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSopCiBib29sIEpTQ2VsbDo6
aXNBbnlXYXNtQ2FsbGVlKFZNJiB2bSkgY29uc3QKIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgcmV0dXJuIGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZvKCkpIHx8
IGluaGVyaXRzKHZtLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmluZm8oKSk7CisgICAgcmV0dXJu
IGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZvKCkpIHx8IGlzV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKHRoaXMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAppbmRleCA2YTk4MGE4MTgyY2FiYjY3ZThlZjY4MTg4YWZiZGRhYTA5ODYwM2VjLi45NTA5
MzU2ZWM2ZGU1NGUwOTZmMDYzOWQ4M2I5MGRhZTFmM2RhODU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0zNDYsNCArMzQ2LDkgQEAgaW5s
aW5lIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gdG9PYmplY3RTbG93KGV4ZWMsIGdsb2Jh
bE9iamVjdCk7CiB9CiAKK2lubGluZSBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNvbnN0
IEpTQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gY2VsbC0+dHlwZSgpID09IFdlYkFzc2VtYmx5
VG9KU0NhbGxlZVR5cGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0ZDdlZTQ5ODA2MDk3MDA4YWQzNjcyODIxYjEzMjMx
MDc3ZWMzZGRlLi42MmUzNzcyZjQyYjQ3YTg5OWE0ODA1NmVkZTk0NWZkZTdlNjhmZmEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVt
IEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIEpTU291cmNlQ29kZVR5cGUsCiAgICAgSlNTY3JpcHRG
ZXRjaGVyVHlwZSwKIAorICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5cGUsCisKICAgICAvLyBU
aGUgT2JqZWN0VHlwZSB2YWx1ZSBtdXN0IGNvbWUgYmVmb3JlIGFueSBKU1R5cGUgdGhhdCBpcyBh
IHN1YmNsYXNzIG9mIEpTT2JqZWN0LgogICAgIE9iamVjdFR5cGUsCiAgICAgRmluYWxPYmplY3RU
eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFt
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRl
eCA2ZDQ3ODY0Yzk3OGRjMjdhNGUzNzUwN2QyMjZkZDU3YTlhMGNjY2UyLi4xNjRjNGY1N2JjZDRi
MmM0YmY3ZmMwNzY0YTVlMTA0NTRkYTdhMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAtNzIsMTAgKzcyLDEwIEBAIFN0cmluZyBTdGFja0Zy
YW1lOjpmdW5jdGlvbk5hbWUoVk0mIHZtKSBjb25zdAogICAgIH0KICAgICBTdHJpbmcgbmFtZTsK
ICAgICBpZiAobV9jYWxsZWUpIHsKKyAgICAgICAgaWYgKG1fY2FsbGVlLT5pc0FueVdhc21DYWxs
ZWUoKm1fY2FsbGVlLT52bSgpKSkKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjx3
YXNtPiIpOwogICAgICAgICBpZiAobV9jYWxsZWUtPmlzT2JqZWN0KCkpCiAgICAgICAgICAgICBu
YW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtLCBqc0Nhc3Q8SlNPYmplY3QqPihtX2Nh
bGxlZS5nZXQoKSkpLmltcGwoKTsKLSAgICAgICAgZWxzZSBpZiAobV9jYWxsZWUtPmlzQW55V2Fz
bUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkpKQotICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiPHdhc20+Iik7CiAgICAgfQogICAgIHJldHVybiBuYW1lLmlzTnVsbCgpID8gZW1wdHlTdHJp
bmcoKSA6IG5hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggODUx
MTU0MmI3N2RmYzhlNmYyYmVhYmYxZjg5M2M3NzM5YWI3NGIzOC4uZDEwODE1M2Y2ODRlMTllYzg5
NDRiZDQ0ZjExMjVjMTlmZTE3MjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMjQwLDcgKzI0MCw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2ViQXNz
ZW1ibHlDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB3
ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB3ZWJBc3Nl
bWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICB3ZWJBc3NlbWJseVRv
SlNDYWxsZWUuc2V0KCp0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSgqdGhpcywg
d2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpKSk7CiAjZW5kaWYKICAgICBtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcmVnRXhw
U3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA5ZDg2YWExOWE5MzNj
ZWEzOGFiNWYwMjMxODQ0NTljYjYwMTBmM2I3Li4xNThlNjk4YmE0ODcxMjkxNTU1NTU4ZGQyNmQ1
ZmFhMDljYTNkMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMzNiw3ICsz
MzYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1Ymxp
YyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFz
c2VtYmx5Q2FsbGVlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5
VG9KU0NhbGxlZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseUNv
ZGVCbG9ja1N0cnVjdHVyZTsKLSAgICBTdHJvbmc8SlNDZWxsPiB3ZWJBc3NlbWJseVRvSlNDYWxs
ZWU7CiAjZW5kaWYKICAgICBTdHJvbmc8U3RydWN0dXJlPiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdFeHBTdHJ1Y3R1cmU7CkBAIC00
OTAsNiArNDg5LDExIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoVk0sIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKICAgICB9CiAKKyAgICBz
dGF0aWMgcHRyZGlmZl90IHdhc21Db250ZXh0T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoVk0sIHdhc21Db250ZXh0KTsKKyAgICB9CisKICAgICB2b2lkIHJl
c3RvcmVQcmV2aW91c0V4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBzZXRFeGNlcHRp
b24oZXhjZXB0aW9uKTsgfQogCiAgICAgdm9pZCBjbGVhckxhc3RFeGNlcHRpb24oKSB7IG1fbGFz
dEV4Y2VwdGlvbiA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBmYWM1N2FkZGFmMDc0ZTlhOGNmZTYwNjMzMzVm
MzBkYTJlOTZkM2EyLi43MGE3YjE5YjIyZjlmM2ZmOGJkZGU4NmMwMGQwYjQ2NDFhMjczNDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
CkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5o
IgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29u
dmVudGlvbi5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2Vw
dGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCkBAIC0yMjcsMjYgKzIyNiwzNCBAQCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsK
ICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIG1fdW5saW5rZWRXYXNtVG9XYXNt
Q2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRoZSBmdW5jdGlvbiBpbmRleCB3aG9z
ZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGguCiAgICAgR1BSUmVnIG1fbWVtb3J5
QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BSOworICAgIEdQUlJlZyBtX3dhc21D
b250ZXh0R1BSOwogICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNbbnVtVHlwZXNdOwogICAgIFZhbHVl
KiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRoaXMgbGF6eSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9OwogCiBzdGF0aWMgVmFsdWUqIGxv
YWRXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7Ci0gICAgaWYgKENDYWxsSGVs
cGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQotICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGpp
dCwgQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkpOwotICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOwot
ICAgICAgICB9KTsKKyAgICBpZiAodXNlRmFzdFRMUygpKSB7CisgICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9j
LCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7CisgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6Omxv
YWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKKyAgICAgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
KyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1Nj
cmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNb
MF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworICAgIH0K
IAotICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3Jp
Z2luKCksIHBhdGNocG9pbnQpOworICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLndhc21D
b250ZXh0UG9pbnRlcik7CiB9CiAKIHN0YXRpYyB2b2lkIHN0b3JlV2FzbUNvbnRleHQoUHJvY2Vk
dXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKIHsKKyAgICAvLyBXZSB1
c2UgcGlubmVkIGNhbGxlZSBzYXZlIHJlZ2lzdGVyIGZvciB0aGlzIHB1cnBvc2UuIFRodXMsIHdl
IGRvIG5vdCBuZWVkIHRvIHJlc3RvcmUgdGhlIGluc3RhbmUgcmVnaXN0ZXIgb24gdGhlIGNhbGxl
ciBzaWRlLgorICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICByZXR1cm47CisKICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpz
dG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQogICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBA
IC0yODMsNyArMjkwLDEwIEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwCiAgICAgLy8gRklYTUUg
d2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGluIHJlZ2lzdGVycyBoZXJlIGlmIHRoZXJlJ3Mgbm8g
bWVtb3J5LiBJdCBtYWtlcyB3YXNtIC0+IHdhc20gdGh1bmtzIHNpbXBsZXIgZm9yIG5vdy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjYyMwogICAgIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7
CiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAg
ICBtX3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CiAgICAg
bV9wcm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7CisgICAgaWYgKCF1c2VGYXN0VExT
KCkpCisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0R1BSKTsKICAgICBB
U1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBtX21l
bW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOwog
ICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVycykKQEAgLTMwNywxMiArMzE3LDEyIEBAIHN0cnVjdCBNZW1vcnlCYXNl
QW5kU2l6ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1zdGF0aWMgTWVtb3J5QmFzZUFuZFNp
emUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVy
ZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0
TWVtb3J5QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2lj
QmxvY2sqIGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBibG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5z
dGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnko
KS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMg
b24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUobG9hZFdh
c21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50
NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihudWxs
cHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNv
ZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRl
Y2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIpLT5tZW1v
cnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVs
aWVzIG9uIHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsKICAgICBy
ZXN1bHQuYmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6
Om9mZnNldE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpT
V2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTQxOSwxMiArNDI5LDExIEBA
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAK
IGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwg
RXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGludDMyX3Qg
KCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRlKiBleGVj
LCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSkg
KEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMyX3QpID0gW10gKEV4ZWNT
dGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCwgaW50MzJfdCBk
ZWx0YSkgLT4gaW50MzJfdCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAgICAgICAg
SlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5tZW1vcnkoKTsKKyAg
ICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdhc21Db250ZXh0LT5tZW1v
cnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpA
QCAtNDQwLDcgKzQ0OSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHBy
ZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogICAgIHJlc3VsdCA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgT3Jp
Z2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4o
bV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSksCi0gICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFt
ZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSksIG1f
aW5zdGFuY2VWYWx1ZSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3Rh
dGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2Nr
KTsKIApAQCAtNDQ5LDcgKzQ1OCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9y
eShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFu
ZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAg
ICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5jZVZhbHVl
LCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlm
dFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEg
PDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBj
b3JyZWN0LiIpOwpAQCAtMTA4MCwxMSArMTA4OSw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9X
YXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUlu
CiAgICAgICAgICpsaW5rZWRDYWxsZWVNb3ZlID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxl
ZU1vdmVMb2NhdGlvbik7CiAgICAgfSk7CiAKLSAgICBSZWdpc3RlclNldCB0b1NhdmU7CiAgICAg
Y29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZv
OjpnZXQoKTsKLSAgICB0b1NhdmUuc2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXIpOwot
ICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJl
Z3Muc2l6ZVJlZ2lzdGVycykKLSAgICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVSZWdpc3Rl
cik7CisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlID0gcGlubmVkUmVncy50b1NhdmUoKTsKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICB1bnNpZ25lZCB0b1NhdmVTaXplID0gdG9TYXZlLm51bWJl
ck9mU2V0R1BScygpOwpAQCAtMTE5MSwxMCArMTE5NywyNCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVK
U1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdh
c21JbgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRklYTUU6IEpTV2ViQXNzZW1ibHlDYWxs
ZWUgc2hvdWxkIGhhdmUgYSBwb2ludGVyIHRvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBpbnN0ZWFk
LgorICAgIEdQUlJlZyB3YXNtQ29udGV4dCA9IHBpbm5lZFJlZ3Mud2FzbUNvbnRleHRQb2ludGVy
OworICAgIGlmICghdXNlRmFzdFRMUygpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHdhc21Db250ZXh0
KTsKKyAgICAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoTWFya2Vk
QmxvY2s6OmJsb2NrTWFzayksIHdhc21Db250ZXh0KTsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSgp
KSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Mod2FzbUNvbnRleHQsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgd2FzbUNvbnRleHQpOwor
ICAgIH0KKwogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVt
b3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRXYXNt
Q29udGV4dChiYXNlTWVtb3J5KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnko
KSksIGJhc2VNZW1vcnkpOworCisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOworICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAg
ICAgICB9CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVn
aXN0ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwogICAgICAgICBB
U1NFUlQoIXNpemVSZWdzWzBdLnNpemVPZmZzZXQpOyAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYXNz
dW1lcyB3ZSBzdGFydCBhdCAwLCBhbmQgY2FsY3VsYXRlcyBzdWJzZXF1ZW50IHNpemUgcmVnaXN0
ZXJzIHJlbGF0aXZlIHRvIDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAKaW5kZXggZmI2NzY1N2VhNDBjZWNkMGI4Njg4MGViYjI0YzdlYTc5MTNmOWMzMy4uZTBj
YWIxZjZkNGQ3OTgxYmM4ZGM3MDlhZTJhZmY4ZmIyNjA5NDhhNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIK
ICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIFdhc20gewpAQCAtNjYsOCArNjUsNiBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAg
ICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0
ZWRJbW0zMigwKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7IC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0gICAgaml0LnN0b3JlUHRyKEpJVDo6VHJ1
c3RlZEltbVB0cih2bS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklUOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0KIAogICAgIHsKICAgICAgICAgYm9v
bCBoYXNCYWRJNjRVc2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5MCwyMiBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxM
aW5rSW5mb3MsCiAgICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsKICAgICAgICAgICAgIGppdC5j
b3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAgICAgICAg
ICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKKworICAgICAgICAgICAgLy8gU3RvcmUgQ2FsbGVlLgorICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEpJ
VDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOworCiAgICAgICAgICAg
ICBhdXRvIGNhbGwgPSBqaXQuY2FsbCgpOwogICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlv
bkhhbmRsZXIoKTsKIAotICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3RhdGUq
KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMpIC0+IHZvaWQgeworICAgICAgICAgICAgdm9pZCAoKnRo
cm93QmFkSTY0KShFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVj
U3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIC0+IHZvaWQg
ewogICAgICAgICAgICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICAgICAgICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJyb3JJbnN0
YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1Y3Rv
cigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dlZCBhcyBy
ZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsKICAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTI1Miw2ICsyNTUsMTAgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0lu
Zm9zLAogICAgICAgICB9CiAgICAgfQogCisgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxs
ZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSk7CisKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVnVDA7IC8v
IENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93LgogICAgIEFT
U0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoaW1wb3J0SlNDZWxsR1BSUmVn
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4NGNkNGY1MjY2YTM4ZTgyMTU0YTcxZDcwNTJiYWFl
ZTQ4OTQyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCi0KLSNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLSNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgPG11dGV4
PgotI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1KU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCi17Ci0jaWYgRU5BQkxFKEZB
U1RfVExTX0pJVCkKLSAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJl
YWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYKLSAg
ICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICByZXR1cm4gdm0u
d2FzbUNvbnRleHQ7Ci19Ci0KLXZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCi17Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIF9wdGhyZWFk
X3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZv
aWQqPihpbnN0YW5jZSkpOwotI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBl
bHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5NzczCi0gICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMWM1ZThhMThkMmIwNzQ4MWVlNjAwZjhiNzAxZTUzYzYzOWU1ZmNjNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNXZWJB
c3NlbWJseUluc3RhbmNlOwotY2xhc3MgVk07Ci0KLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9h
ZFdhc21Db250ZXh0KFZNJik7Ci12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqKTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA4YWMwODY2Mjc4YjUxMzkzYjY2OWVhMDlhN2I1NDhk
NmQ5YTc2YjE0Li45OWU3ZDJiY2QyOTk0ZGNiZTdmNTU4ODlhYjM3ZGU3MGVmYTRkNzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5jcHAKQEAgLTM0LDQzICszNCw1NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdh
c20gewogCitzdGF0aWMgVmVjdG9yPEdQUlJlZz4gZ2V0UGlubmVkUmVnaXN0ZXJzKHVuc2lnbmVk
IHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycykKK3sKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdpc3Rl
cnM7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9y
RWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAgaWYg
KCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJz
KCkuZ2V0KHJlZykpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC0tcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzOworICAgICAgICByZWdpc3RlcnMuYXBwZW5kKGdwcik7CisgICAgfSk7Cisg
ICAgcmV0dXJuIHJlZ2lzdGVyczsKK30KKwogY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5u
ZWRSZWdpc3RlckluZm86OmdldCgpCiB7CiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxQ
aW5uZWRSZWdpc3RlckluZm8+IHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mbzsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZzsKICAgICBzdGQ6OmNh
bGxfb25jZShzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnLCBbXSAoKSB7CiAgICAgICAgIFZl
Y3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwotICAgICAgICBHUFJS
ZWcgYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciA9
IEludmFsaWRHUFJSZWc7CisgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50ZXIgPSBJbnZh
bGlkR1BSUmVnOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRo
YW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyLCBhbmQgd2Ugc2hvdWxkIGFsbG93IGRpZmZlcmVu
dAogICAgICAgICAvLyAgICAgICAgV2ViQXNzZW1ibHkuSW5zdGFuY2UgdG8gaGF2ZSBkaWZmZXJl
bnQgcGlucy4gUmlnaHQgbm93IHdlIHRha2UgYSB2ZWN0b3Igd2l0aCBvbmx5IG9uZSBlbnRyeS4K
ICAgICAgICAgLy8gICAgICAgIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVy
LCB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVhY2ggbG9hZCBzaXplIGNsYXNzLgogICAgICAgICAvLyAg
ICAgICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUy
CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKLSAgICAgICAg
dW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsg
MTsKLSAgICAgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMu
Zm9yRWFjaChbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIo
KTsKLSAgICAgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVy
U2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgewotICAgICAg
ICAgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOwotICAgICAgICAgICAgICAgIHJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycy0tOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWluaW5nUGlu
bmVkUmVnaXN0ZXJzIC0gMV0gfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIEFTU0VSVCghcmVt
YWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
LmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlcik7Cisg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6
ZSgpICsgMTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICArK251bWJl
ck9mUGlubmVkUmVnaXN0ZXJzOworICAgICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdzID0g
Z2V0UGlubmVkUmVnaXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0ZXJzKTsKKworICAgICAgICBi
YXNlTWVtb3J5UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKKyAgICAgICAgaWYgKCF1
c2VGYXN0VExTKCkpCisgICAgICAgICAgICB3YXNtQ29udGV4dFBvaW50ZXIgPSBwaW5uZWRSZWdz
LnRha2VMYXN0KCk7CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNpemVzLnNpemUoKSA9PSBwaW5u
ZWRSZWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaW5uZWRT
aXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdpc3RlcnMuYXBwZW5kKHsgcGlu
bmVkUmVnc1tpXSwgcGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lz
dGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBvaW50
ZXIsIHdhc21Db250ZXh0UG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlu
bmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJl
Z2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0ZXJz
LCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJl
Z2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0ZXJz
LCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50ZXIpCiAg
ICAgOiBzaXplUmVnaXN0ZXJzKFdURk1vdmUoc2l6ZVJlZ2lzdGVycykpCiAgICAgLCBiYXNlTWVt
b3J5UG9pbnRlcihiYXNlTWVtb3J5UG9pbnRlcikKKyAgICAsIHdhc21Db250ZXh0UG9pbnRlcih3
YXNtQ29udGV4dFBvaW50ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKaW5kZXggNmRlMDcwYTEwNDUyZmY2YmIzYzVj
MjUwNDExZjEwZTkxMzg5ZTRhMi4uMTE3OWI1Zjc1MDJlMWYyNmIwNmNhZDc5NjA4ZmRhMWNhZTQy
YTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUlu
Zm9ybWF0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAK
ICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRl
ICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VDb3VudC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KQEAgLTQzLDggKzQ0LDIwIEBAIHN0cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZv
IHsKIHN0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8gewogICAgIFZlY3RvcjxQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwogICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsK
KyAgICBHUFJSZWcgd2FzbUNvbnRleHRQb2ludGVyOwogICAgIHN0YXRpYyBjb25zdCBQaW5uZWRS
ZWdpc3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVk
U2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVj
dG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywgR1BSUmVnKTsKKworICAgIFJl
Z2lzdGVyU2V0IHRvU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICBSZWdpc3RlclNldCByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5zZXQoYmFzZU1lbW9yeVBvaW50ZXIpOworICAgICAgICBpZiAo
d2FzbUNvbnRleHRQb2ludGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXN1bHQu
c2V0KHdhc21Db250ZXh0UG9pbnRlcik7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5mbyA6
IHNpemVSZWdpc3RlcnMpCisgICAgICAgICAgICByZXN1bHQuc2V0KGluZm8uc2l6ZVJlZ2lzdGVy
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiB9OwogCiBjbGFzcyBNZW1vcnlJbmZv
cm1hdGlvbiB7CkBAIC03Myw2ICs4NiwxNSBAQCBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7CiAg
ICAgYm9vbCBtX2lzSW1wb3J0IHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSBib29sIHVzZUZhc3RU
TFMoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgcmV0dXJuIE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXQVNN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5jcHAKaW5kZXggMWMxMWIwY2E2NWM5MTc0MmY4ZTQ4MTNjMjRkOTc1ZjY1ZWVi
YWExOC4uM2I3ZjdiODc0NmZmOGQ0MjE0MDE3OGNhN2I1ZWVhZWQwMzQ2OTJjNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04MSw2ICs4
Miw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKIAogICAgIG1fY29kZUJsb2NrLnNldCh2bSwg
dGhpcywgbW9kdWxlLT5jb2RlQmxvY2soKSk7CiAgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Qu
c2V0KHZtLCB0aGlzLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIG1fY2FsbGVlLnNldCh2
bSwgdGhpcywgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUodm0sIHZtLndlYkFzc2VtYmx5
VG9KU0NhbGxlZVN0cnVjdHVyZS5nZXQoKSwgdGhpcykpOwogICAgIHB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBvcnRzIiksIG1vZHVsZU5hbWVzcGFjZU9iamVj
dCwgTm9uZSk7CiB9CiAKQEAgLTk5LDYgKzEwMSw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWVtb3J5KTsKICAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3RhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09i
amVjdC0+bW9kdWxlKCktPm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX251bUltcG9ydEZ1bmN0aW9u
czsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW1wb3J0RnVuY3Rp
b24oaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuaAppbmRleCBlMjI4NDk2OTY3MjA1YTMxMzZjODgzYmJkZTMyNmFkYmM3
MTExMzBkLi40MmFhMWIzNWQxYjJhNmY5MzliOWQzMjk2NmI1ZjM3ZTRlZTY0MWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOworY2xhc3MgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOwogCiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMg
SlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgpAQCAtOTcsNiArOTgsNyBAQCBjbGFzcyBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogCiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBwdHJk
aWZmX3Qgb2Zmc2V0T2ZUYWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UsIG1fdGFibGUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkNh
bGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1f
Y2FsbGVlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9nbG9iYWxzKTsgfQog
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbnMoKSB7IHJldHVybiBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KT4oc2l6ZW9m
KEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklt
cG9ydEZ1bmN0aW9uKHNpemVfdCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gb2Zmc2V0T2ZJ
bXBvcnRGdW5jdGlvbnMoKSArIGltcG9ydEZ1bmN0aW9uTnVtICogc2l6ZW9mKHNpemVvZihXcml0
ZUJhcnJpZXI8SlNDZWxsPikpOyB9CkBAIC0xMTcsNiArMTE5LDcgQEAgY2xhc3MgSlNXZWJBc3Nl
bWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBXcml0ZUJh
cnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0Owog
ICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TWVtb3J5PiBtX21lbW9yeTsKICAgICBXcml0
ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPiBtX3RhYmxlOworICAgIFdyaXRlQmFycmllcjxX
ZWJBc3NlbWJseVRvSlNDYWxsZWU+IG1fY2FsbGVlOwogICAgIE1hbGxvY1B0cjx1aW50NjRfdD4g
bV9nbG9iYWxzOwogICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAKaW5kZXggZDFhODAxYzNlYzkxMWExOWYwNmFiNzlmOThhMzM5MDFmNWM1N2M1MS4uNTY0MzMz
YjM5OTI5ZTZmOTA5ZDU3ODY1MmE1ODM5ZmJlMTk4NWFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTM5LDE1
ICszOSwzMyBAQAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5j
bHVkZSAiV2FzbUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlIDx3
dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlGdW5jdGlvbjo6c19pbmZvID0g
eyAiV2ViQXNzZW1ibHlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlGdW5jdGlvbikgfTsKIAorc3RhdGljIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJiB2bSkKK3sKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9n
ZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbmRpZgorICAgIHJl
dHVybiB2bS53YXNtQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQgc3RvcmVXYXNtQ29udGV4dChW
TSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisjaWYgRU5BQkxFKEZB
U1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisg
ICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwg
Yml0d2lzZV9jYXN0PHZvaWQqPihpbnN0YW5jZSkpOworI2VuZGlmCisgICAgdm0ud2FzbUNvbnRl
eHQgPSBpbnN0YW5jZTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CkBAIC0xMjEsNiArMTM5LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50
LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGgg
dGhpcyBlbnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0
ZWQgYnkgQjMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYK
KyAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byBtYWtlIGxvYWRXYXNtQ29udGV4dCBhbmQg
c3RvcmVXYXNtQ29udGV4dCBuby1vcCBpZiB3ZSB1c2UgcGlubmVkIHJlZ2lzdGVycy4KKyAgICAv
LyBIb3dldmVyLCB3ZSB1c2UgVk0ud2FzbUNvbnRleHQgZmllbGQgdG8gcGFzcyBpbnN0YW5jZSB0
byB3YXNtIGZ1bmN0aW9uJ3MgSlMgZ2x1ZSBjb2RlLgorICAgIC8vIE9uY2Ugd2Ugc3RhcnQgdXNp
bmcgdXN1YWwgV2ViQXNzZW1ibHlGdW5jdGlvbiBhcyBjYWxsZWUsIHdlIGNhbiByZXRyaWV2ZSBp
bnN0YW5jZSBmcm9tIHRoYXQuCiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJB
c3NlbWJseUluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKICAgICBzdG9yZVdhc21Db250
ZXh0KHZtLCB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOwogICAgIEFTU0VSVCh3YXNtRnVuY3Rp
b24tPmluc3RhbmNlKCkpOwpAQCAtMTUzLDYgKzE3NCw3IEBAIFdlYkFzc2VtYmx5RnVuY3Rpb24q
IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5
RnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5RnVuY3Rpb24+KHZtLmhlYXAp
KSBXZWJBc3NlbWJseUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgd2FzbUVu
dHJ5cG9pbnQsIHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24o
dm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFuY2UsIGpzRW50cnlwb2ludCwgd2Fz
bUVudHJ5cG9pbnQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWZ1bmN0aW9uLT5pc0xhcmdl
QWxsb2NhdGlvbigpLCAiV2ViQXNzZW1ibHlGdW5jdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIG5v
dCBpbiBsYXJnZSBhbGxvY2F0aW9uIHNpbmNlIGl0IGlzIEpTQ2FsbGVlLiIpOwogICAgIHJldHVy
biBmdW5jdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKaW5kZXggNGU4OTFhMDlhMjBlZmEyZjk4OTg1
ZDk3OWNhOWY1ZDRlODEzMDJhZi4uNjIwM2FhZGM5NjI5YWRhMWE4OGQ4OTQwM2U4MzU1YTczYzgz
OTI0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseVRvSlNDYWxsZWUuY3BwCkBAIC0yOSwyMSArMjksMjIgQEAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUiLCBu
dWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkgfTsK
IAotV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJB
c3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAgIFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUb0pT
Q2FsbGVlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBzdHJ1Y3R1cmUpOwot
ICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRp
b24odm0sIGluc3RhbmNlKTsKICAgICByZXR1cm4gY2FsbGVlOwogfQogCiBTdHJ1Y3R1cmUqIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhXZWJBc3NlbWJseVRvSlND
YWxsZWVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZTo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCkBAIC01MSwxNSArNTIsMTkgQEAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJs
eVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBX
ZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG1f
aW5zdGFuY2Uuc2V0KHZtLCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+V2ViQXNzZW1ibHlU
b0pTQ2FsbGVlOjp+V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKCk7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsKKyAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1faW5zdGFuY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKaW5kZXgg
NDk2Yzg4NTc2YzM5ZjcyMzI3MjM5OGE1NjY1YzkwNGNjNWMxYjEyMy4uMDRkZWFkZGRiMWVjY2Qy
Y2FlMjQ4Mjk1NzgxMzhmM2FjMGJlMmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKQEAgLTMxLDIxICszMSwyNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIDogcHVi
bGljIEpTQ2VsbCB7CitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisKK2NsYXNzIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAg
c3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAgICBXZWJBc3NlbWJseVRvSlNDYWxs
ZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5SW5z
dGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFu
Z2VMb2cKaW5kZXggOGI5M2Y4NjNjNDEwZDJjZTNjNzEyMDhiODNkMGFmZDI3YzE1ZjA4MS4uNjQ1
OTVlOWVjNzY2ZGQ5ZTNlYzNmMzMyNzExMzFhYjY1Y2M3OTc5ZiAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVz
ZSBwaW5uZWQgcmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEIzIGRvY3VtZW50IGFib3V0IGlt
bXV0YWJsZSBwaW5uZWQgcmVnaXN0ZXIgYW5kIEFyZ3VtZW50UmVnLgorCisgICAgICAgICogZG9j
cy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbDoKKwogMjAxNy0wMy0xMSAgSm9u
IERhdmlzICA8am9uZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFN3aWZ0IHN5bnRheCBoaWdo
bGlnaHRpbmcgdG8gd2Via2l0Lm9yZwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9k
b2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Via2l0
Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IDIwYjU5
YjVhZTFmNjU1OWFhNTgzMDZiOTNlMjZkMTdiMDMwYTc1MTUuLjUxNTBiNTk4YzRkOTJlMjdkODlj
ODY0YWY4ZjI1MTg5NDkwMjQ5ZDQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9j
cy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93ZWJr
aXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTIzNyw3
ICsyMzcsOCBAQAogICAgICAgPGR0PkludFB0cnxEb3VibGUgQXJndW1lbnRSZWcoJXJlZ2lzdGVy
KTwvZHQ+CiAgICAgICA8ZGQ+UmV0dXJucyB0aGUgdmFsdWUgdGhhdCB0aGUgZ2l2ZW4gcmVnaXN0
ZXIgaGFkIGF0IHRoZSBwcm9sb2d1ZSBvZiB0aGUgcHJvY2VkdXJlLiAgSXQKICAgICAgICAgcmV0
dXJucyBJbnRQdHIgZm9yIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgYW5kIERvdWJsZSBmb3Ig
RlBScy4gIE11c3QgdXNlIHRoZQotICAgICAgICBBcmd1bWVudFJlZ1ZhbHVlIGNsYXNzLjwvZGQ+
CisgICAgICAgIEFyZ3VtZW50UmVnVmFsdWUgY2xhc3MuIEl0IGNhbiBiZSB1c2VkIHRvIHJlYWQg
YSBwaW5uZWQgcmVnaXN0ZXIgd2hpY2ggaXMgbm90IGNsb2JiZXJlZAorICAgICAgICBpbnNpZGUg
dGhlIHByb2NlZHVyZS48L2RkPgogCiAgICAgICA8ZHQ+SW50UHRyIEZyYW1lUG9pbnRlcigpPC9k
dD4KICAgICAgIDxkZD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZnJhbWUgcG9pbnRlciByZWdp
c3Rlci4gIEIzIHByb2NlZHVyZXMgYWx3YXkgdXNlIGEgZnJhbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305488</attachid>
            <date>2017-03-27 11:15:38 -0700</date>
            <delta_ts>2017-03-27 11:39:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170328031536.patch</filename>
            <type>text/plain</type>
            <size>64421</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJhNThmYjhiNzY2N2IyZTQwODY1YWRlYjdjNzQ3ODk5NDU4MGQwLi4wNzY1ZDk4YzA4NDNjMDli
ZjJmZTY1NWRlMDc0MTU1ODQ5NWZmMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IHBpbm5lZCByZWdpc3Rl
ciB0byBob2xkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0
byByZXByZXNlbnQgdGhlIGNvbnRleHQgb2YgcnVubmluZyBXYXNtIGNvZGUuCisgICAgICAgIFdo
aWxlIHdlIHVzZSBmYXN0IFRMUyB0byBob2xkIHRoZSBjb250ZXh0IGluIG1hY09TLCB3ZSBkbyBu
b3QgaGF2ZQorICAgICAgICBhbnkgc3lzdGVtIHJlc2VydmVkIGZhc3QgVExTIHNsb3QgaW4gdGhl
IG90aGVyIHN5c3RlbXMuIFRoaXMgcGlubmVkCisgICAgICAgIHJlZ2lzdGVyIGFwcHJvYWNoIGlz
IHVzZWQgaW4gdGhlc2Ugc3lzdGVtcy4gVGhlc2UgY2hhbmdlcyBkZWNvdXBsZQorICAgICAgICBW
TSBmcm9tIFdhc20gbW9kdWxlIHRvIG1ha2UgV2FzbSBtb2R1bGUgcG9zaXRpb24gaW5kZXBlbmRl
bnQgY29kZS4KKworICAgICAgICBXaGlsZSB1c2luZyBmYXN0IFRMUyBjb3VsZCBiZSBiZW5lZmlj
aWFsIGluIHg2NCBzeXN0ZW1zIHdoaWNoIG51bWJlciBvZgorICAgICAgICByZWdpc3RlcnMgaXMg
cmVsYXRpdmVseSBzbWFsbCwgcGlubmVkIHJlZ2lzdGVyIGFwcHJvYWNoIGNvdWxkIGJlCisgICAg
ICAgIGJlbmVmaWNpYWwgaW4gQVJNNjQgd2hpY2ggaGFzIHBsZW50eSBvZiByZWdpc3RlcnMuIElu
IG1hY09TLCB3ZSBjYW4KKyAgICAgICAgc3dpdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo
ZSBydW50aW1lIGZsYWcuIFRodXMgbWFjT1MgcG9ydCBjYW4KKyAgICAgICAgY29tcGFyZSB0aGUg
cGVyZm9ybWFuY2UgYW5kIGRlY2lkZSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGFmdGVy
CisgICAgICAgIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
b2Zmc2V0T2ZWTSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6
CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWND
YWxsKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlzV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RhY2tGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZ1bmN0
aW9uTmFtZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6d2FzbUNvbnRl
eHRPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6Oldhc206OmdldE1lbW9yeUJhc2VBbmRTaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjps
b2FkV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpzdG9yZVdhc21D
b250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAgICogd2FzbS9XYXNtQ29udGV4
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6Z2V0UGlubmVkUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86
OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
Lmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoKKwogMjAxNy0wMy0y
NiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpmaXhTU0Eg
c2hvdWxkIGRvIGxpdmVuZXNzIHBydW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA1YWY3MTRlMDk1MDlmOGE1ZWNmMTY0YWFjM2FmOWE5NDBiMjEyNzZiLi4xM2JkM2Ew
MGIwOGFkNDdhMGQzZTAzM2M0YTRkNmQ3MjIzODMzMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC05MzQsNyArOTM0LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20vV2FzbUJpbmRpbmcu
Y3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCi0gICAgd2FzbS9XYXNtQ29u
dGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCiAgICAgd2FzbS9X
YXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGM1YmY1N2VhMjlmNDBiY2FkOTg1NmMyNmY1MTY2MGM5Y2VjODFmMy4u
MGEzNjIyYmEzMDc4ZWQ0MDE1ZjZlYWY0NDBhZmY0OTJiNTcxNDRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIwODcsOCArMjA4Nyw2IEBACiAJCUFEMkZDQzMwMURCODNENDkw
MEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZD
QzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07CiAJCUFEMkZDQzMz
MURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNt
Rm9ybWF0LmNwcCAqLzsgfTsKLQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
NDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi87IH07Ci0JCUFENDEy
QjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdh
c21Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQUQ0MjUyNTExRTVEMEUxNDAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQyNTI1MDFFNUQwREVC
MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLzsgfTsKIAkJQUQ0MjUyNTMxRTVEMEY0NzAw
OUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9y
aWdpbi5jcHAgKi87IH07CiAJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDQ5MzdDMTFEREJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
ICovOyB9OwpAQCAtNDY2MSw4ICs0NjU5LDYgQEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZD
QzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDQxMkIzNTFFN0I1N0Mw
MDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3
IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1
RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MjY5LDggKzYyNjUsNiBAQAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUz
MiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBX
YXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdE
MyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKLQkJCQlBRDQxMkIzMTFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAotCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAvKiBX
YXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBX
YXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZv
cm1hdC5oICovLApAQCAtODU4Nyw3ICs4NTgxLDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2NDRB
ODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRB
cmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1
MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDcyMiw3ICsxMDcxNSw2IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0
QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJl
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggMjJhN2JhNzBmNDdjNTAxNjMz
ODMyOTlkYTBlM2UzNGM1YmNkYzIyNy4uNTZkNWNiZWEyNDNkZWU0YTBiMWVlMmU1NzNlYzg2YThi
NjU0NjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0y
OTgsNiArMjk4LDExIEBAIGNsYXNzIE1hcmtlZEJsb2NrIHsKICAgICAKICAgICBib29sIGlzTWFy
a2VkUmF3KGNvbnN0IHZvaWQqIHApOwogICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorCisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlZNKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWFy
a2VkQmxvY2ssIG1fdm0pOworICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA3ODMyMDQ3OTIxOTI0NDVi
NWJlN2Y4Y2M1NGUyMWI2MTg4ZjliNzVkLi4yODA0NWNlNjIzYzQ4ZGY4ZjliMGM2MGU4OTk3MWE5
N2IzNTE3ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisjaW5jbHVkZSAi
V2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIEV4
ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKQEAgLTc2Niw2ICs3NzAsNDkgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBy
ZXN1bHQKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCit7Cisj
aWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlG
YXN0VExTKCkpIHsKKyAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShX
VEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyAgICBtb3ZlKFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkud2FzbUNvbnRleHRQ
b2ludGVyLCBkc3QpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4
dChHUFJSZWcgc3JjKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIHN0b3JlVG9UTFNQdHIoc3Jj
LCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBtb3ZlKHNyYywgV2FzbTo6UGlubmVkUmVnaXN0ZXJJ
bmZvOjpnZXQoKS53YXNtQ29udGV4dFBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVy
czo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExT
KCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBl
cnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIzOWNlYjliMjA5NzI1NDQ2
ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2
MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwg
R1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJS
ZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExT
UHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNh
dmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21D
b250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcg
c3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RM
U1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKLSNl
bmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAg
ICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwotICAgIH0KLQotICAgIHN0
YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAg
IHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3Rv
cmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCk7CisgICAgdm9pZCBz
dG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVdh
c21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZkY2ZjMWEzZDc3MWEwNjMx
MzczZGQyNTc5OWI1YS4uYmJkZDZhZWJjODU0NTYyYjBkNDk0Y2VjMjJkOTk4OWI3MWYzNGEzYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01OSw3ICs1OSw2IEBACiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5jbHVk
ZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBA
IC01NzcsMjUgKzU3NiwxMyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVh
dGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQog
Ci1zdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2Fs
bGVlKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAvLyBUaGUgV2ViQXNzZW1ibHkg
LT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIHNpbmdsZXRvbiB3
aGljaCBsaXZlcyBvbiB0aGUgVk0uCi0gICAgcmV0dXJuIGNhbGxlZSA9PSB2bS53ZWJBc3NlbWJs
eVRvSlNDYWxsZWUuZ2V0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxlZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKLX0KLQotc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0p
CitzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQogewogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNo
YXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0
aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiBsb2FkV2FzbUNvbnRl
eHQodm0pLT5tb2R1bGUoKTsKKyAgICByZXR1cm4ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZSo+KGNhbGxlZSktPmluc3RhbmNlKCktPm1vZHVsZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQpAQCAtNjEyLDcgKzU5OSw3IEBAIHZvaWQgbGlua0ZvcigKICAgICBDb2RlQmxvY2sq
IGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKIAogICAgIC8vIFdl
YkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+
Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJD
b2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZv
LmlzTGlua2VkKCkpOwpAQCAtNzMyLDEwICs3MTksMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwog
ICAgIFZNJiB2bSA9IGNhbGxlckZyYW1lLT52bSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29k
ZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIGJvb2wgaXNXZWJBc3NlbWJs
eSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwor
ICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZy
YW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBo
YXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5
ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBv
d25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIENhbGxW
YXJpYW50TGlzdCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCmluZGV4IDA4NTdlMzRiZjFkMmIwNDZkN2FiY2E0ODkxMjFjMWYzOGM5MDIyZmMu
LjUyMTdiODI1ODZkZWU1ZTRmOWYwZGE0YzZiMDc4NTQ2MDI2MjQwMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCi0jaW5jbHVkZSAi
V2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAg
LTExNDgsMTYgKzExNDcsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9u
RnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgfQogCiAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0
LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cigpOwogCi0gICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6
RXhjZXB0aW9uVHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBl
IHR5cGUpIHsKKyAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNt
OjpFeGNlcHRpb25UeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUq
IGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3
YXNtQ29udGV4dCkgewogICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVj
dHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggOGI2MTVhMWEzYTUxNTEwNTk2
NzIwNjVkNDcyYjdlOGFlODU4Njk5YS4uMGFmZjEwODBhY2IyMDNiZTRlNDMwOWUzOGU1YTE0Mjhk
NTFmZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAg
LTE1NiwyMSArMTU2LDIxIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIAogICAgIFNUQVRJQ19BU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKICAgICBTVEFUSUNfQVNT
RVJUKFN5bWJvbFR5cGUgPT0gNyk7Ci0gICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIz
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNCk7Ci0gICAgU1RBVElD
X0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNik7Ci0gICAgU1RBVElDX0FTU0VSVChBcnJheVR5
cGUgPT0gMzQpOwotICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTMpOwotICAgIFNUQVRJQ19BU1NF
UlQoSW50OEFycmF5VHlwZSA9PSAzNik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlw
ZSA9PSAzNyk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOCk7Ci0gICAg
U1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAzOSk7Ci0gICAgU1RBVElDX0FTU0VSVChV
aW50OENsYW1wZWRBcnJheVR5cGUgPT0gNDApOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJy
YXlUeXBlID09IDQxKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Mik7
Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQzKTsKLSAgICBTVEFUSUNf
QVNTRVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0
VHlwZSA9PSAyNCk7CisgICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjUpOwor
ICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjcpOworICAgIFNUQVRJQ19BU1NF
UlQoQXJyYXlUeXBlID09IDM1KTsKKyAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUg
PT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDU0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzcpOworICAgIFNUQVRJQ19BU1NFUlQoSW50
MTZBcnJheVR5cGUgPT0gMzgpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0g
MzkpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gNDApOworICAgIFNUQVRJ
Q19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQxKTsKKyAgICBTVEFUSUNfQVNTRVJU
KFVpbnQxNkFycmF5VHlwZSA9PSA0Mik7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5
cGUgPT0gNDMpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0NCk7Cisg
ICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ1KTsKICAgICBTVEFUSUNfQVNT
RVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZThlMmRiOGNk
YWMyZTFlMTBkMmI4YTNmNWZmNzA2MTlmZGUwMWQ0Zi4uYWIzYzBjOGU3NzFmZWRhZTliNjVkYWNk
YjYyMjUxYTE4N2EzYzliZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzQ1LDI0ICszNDUsMjQgQEAgY29uc3QgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMHgwQwogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0
cmluZ1R5cGUgPSA2CiBjb25zdCBTeW1ib2xUeXBlID0gNwotY29uc3QgT2JqZWN0VHlwZSA9IDIz
Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNAotY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNgot
Y29uc3QgQXJyYXlUeXBlID0gMzQKLWNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNQotY29uc3Qg
UHJveHlPYmplY3RUeXBlID0gNTMKK2NvbnN0IE9iamVjdFR5cGUgPSAyNAorY29uc3QgRmluYWxP
YmplY3RUeXBlID0gMjUKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjcKK2NvbnN0IEFycmF5VHlw
ZSA9IDM1Citjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzYKK2NvbnN0IFByb3h5T2JqZWN0VHlw
ZSA9IDU0CiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4g
YSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dp
dGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgotY29uc3QgSW50OEFy
cmF5VHlwZSA9IDM2Ci1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDM3Ci1jb25zdCBJbnQzMkFycmF5
VHlwZSA9IDM4Ci1jb25zdCBVaW50OEFycmF5VHlwZSA9IDM5Ci1jb25zdCBVaW50OENsYW1wZWRB
cnJheVR5cGUgPSA0MAotY29uc3QgVWludDE2QXJyYXlUeXBlID0gNDEKLWNvbnN0IFVpbnQzMkFy
cmF5VHlwZSA9IDQyCi1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gNDMKLWNvbnN0IEZsb2F0NjRB
cnJheVR5cGUgPSA0NAorY29uc3QgSW50OEFycmF5VHlwZSA9IDM3Citjb25zdCBJbnQxNkFycmF5
VHlwZSA9IDM4Citjb25zdCBJbnQzMkFycmF5VHlwZSA9IDM5Citjb25zdCBVaW50OEFycmF5VHlw
ZSA9IDQwCitjb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSA0MQorY29uc3QgVWludDE2QXJy
YXlUeXBlID0gNDIKK2NvbnN0IFVpbnQzMkFycmF5VHlwZSA9IDQzCitjb25zdCBGbG9hdDMyQXJy
YXlUeXBlID0gNDQKK2NvbnN0IEZsb2F0NjRBcnJheVR5cGUgPSA0NQogCiBjb25zdCBGaXJzdEFy
cmF5VHlwZSA9IEludDhBcnJheVR5cGUKIGNvbnN0IExhc3RBcnJheVR5cGUgPSBGbG9hdDY0QXJy
YXlUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBhY2Rk
NGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzLi4zZGZjMjg1ZmU3OGMyZWM4NDgw
NTgzMmRmZjEwMjllZTgyNGNhZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6Z2V0UHJvdG90eXBl
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKikKIGJvb2wgSlNDZWxsOjppc0FueVdhc21DYWxsZWUoVk0m
IHZtKSBjb25zdAogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICByZXR1cm4gaW5oZXJp
dHModm0sIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaW5oZXJpdHModm0sIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6aW5mbygpKTsKKyAgICByZXR1cm4gaW5oZXJpdHModm0sIEpTV2Vi
QXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodGhpcyk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDZhOTgwYTgx
ODJjYWJiNjdlOGVmNjgxODhhZmJkZGFhMDk4NjAzZWMuLjk1MDkzNTZlYzZkZTU0ZTA5NmYwNjM5
ZDgzYjkwZGFlMWYzZGE4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTM0Niw0ICszNDYsOSBAQCBpbmxpbmUgSlNPYmplY3QqIEpTQ2Vs
bDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHJldHVybiB0b09iamVjdFNsb3coZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAoraW5s
aW5lIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY29uc3QgSlNDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBjZWxsLT50eXBlKCkgPT0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CmluZGV4IDRkN2VlNDk4MDYwOTcwMDhhZDM2NzI4MjFiMTMyMzEwNzdlYzNkZGUuLjYyZTM3NzJm
NDJiNDdhODk5YTQ4MDU2ZWRlOTQ1ZmRlN2U2OGZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAgICBKU1NjcmlwdEZldGNoZXJUeXBlLAogCisgICAg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwKKwogICAgIC8vIFRoZSBPYmplY3RUeXBlIHZhbHVl
IG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgSlNPYmpl
Y3QuCiAgICAgT2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4ZGMyN2E0
ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRhNWUxMDQ1
NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShW
TSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkg
eworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkp
KQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgICAgIGlm
IChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxhdGVk
RGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1wbCgp
OwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+
dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICB9
CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NTExNTQyYjc3ZGZjOGU2ZjJiZWFi
ZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVjODk0NGJkNDRmMTEyNWMxOWZlMTcy
NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDAsNyArMjQwLDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHdlYkFzc2Vt
Ymx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNhbGxlZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxl
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZS5zZXQoKnRoaXMs
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3NlbWJseVRvSlNDYWxs
ZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1ZjAyMzE4NDQ1OWNi
NjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNhM2QxM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcgKzMzNiw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDYWxsZWVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlOwot
ICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKICNlbmRpZgogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0ODksMTEgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2Fz
bUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihW
TSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0
aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAK
ICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjQ1OTVm
MjUyMTZhODJjOTIwYTg3MWMzZjliNDE0ODIxNmUwNTIyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0ZpeFNTQS5oIgogI2lu
Y2x1ZGUgIkIzR2VuZXJhdGUuaCIKKyNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNpbmNs
dWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFs
dWUuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCkBAIC00OSw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgotI2luY2x1ZGUgIldhc21D
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNt
RnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC0yMTksNiArMjE5
LDEwIEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogCiAgICAgdm9pZCBlbWl0Q2hlY2tzRm9yTW9k
T3JEaXYoQjM6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmln
aHQpOwogCisgICAgVmFsdWUqIG1hdGVyaWFsaXplV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFz
aWNCbG9jayopOworICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYsIEJhc2lj
QmxvY2sqLCBWYWx1ZSopOworICAgIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
Y29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYsIEJh
c2ljQmxvY2sqKTsKKwogICAgIFZNJiBtX3ZtOwogICAgIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBtX2luZm87CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CkBAIC0yMjcsMzUgKzIzMSw2MiBAQCBj
bGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4m
IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRo
ZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGgu
CiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BS
OworICAgIEdQUlJlZyBtX3dhc21Db250ZXh0R1BSOwogICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNb
bnVtVHlwZXNdOwogICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRo
aXMgbGF6eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9
OwogCi1zdGF0aWMgVmFsdWUqIGxvYWRXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2lj
QmxvY2sqIGJsb2NrKQorVmFsdWUqIEIzSVJHZW5lcmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVs
cGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAg
ICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7
CisgICAgaWYgKHVzZUZhc3RUTFMoKSkgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCkpOworICAgICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwg
Q0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkp
OworICAgICAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICB9CiAKKyAgICAvLyBG
SVhNRTogQmVjYXVzZSBXYXNtVG9XYXNtIGNhbGwgY2xvYmJlcnMgd2FzbUNvbnRleHQgcmVnaXN0
ZXIgYW5kIGRvZXMgbm90IHJlc3RvcmUgaXQsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBpbiB0aGUg
Y2FsbGVyIHNpZGUuCisgICAgLy8gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIHVzaW5nIEFyZ3VtZW50
UmVnIHRvIHRoaXMgKGxvZ2ljYWxseSkgaW1tdXRhYmxlIHBpbm5lZCByZWdpc3Rlci4KKyAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOworICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMud3JpdGVzUGlubmVkID0gZmFsc2U7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFk
c1Bpbm5lZCA9IHRydWU7CisgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVl
UmVwOjpyZWcobV93YXNtQ29udGV4dEdQUik7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeyB9
KTsKICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9y
aWdpbigpLCBwYXRjaHBvaW50KTsKIH0KIAotc3RhdGljIHZvaWQgc3RvcmVXYXNtQ29udGV4dChQ
cm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBWYWx1ZSogYXJnKQordm9pZCBCM0lS
R2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2Nr
KiBibG9jaywgVmFsdWUqIGFyZykKIHsKKyAgICBpZiAodXNlRmFzdFRMUygpKSB7CisgICAgICAg
IFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2lu
dFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOworICAgICAgICBpZiAoQ0NhbGxIZWxw
ZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQorICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0
ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcs
IFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJh
dG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OnN0b3Jl
V2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAgICAgICAg
IGppdC5zdG9yZVdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBCZWNhdXNlIFdhc21Ub1dh
c20gY2FsbCBjbG9iYmVycyB3YXNtQ29udGV4dCByZWdpc3RlciBhbmQgZG9lcyBub3QgcmVzdG9y
ZSBpdCwgd2UgbmVlZCB0byByZXN0b3JlIGl0IGluIHRoZSBjYWxsZXIgc2lkZS4KKyAgICAvLyBU
aGlzIHByZXZlbnRzIHVzIGZyb20gdXNpbmcgQXJndW1lbnRSZWcgdG8gdGhpcyAobG9naWNhbGx5
KSBpbW11dGFibGUgcGlubmVkIHJlZ2lzdGVyLgogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwg
T3JpZ2luKCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQo
Q29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBl
cnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOwotICAgICAg
ICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7
CisgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZmZWN0czo6bm9uZSgpOworICAgIGVmZmVjdHMud3Jp
dGVzUGlubmVkID0gdHJ1ZTsKKyAgICBlZmZlY3RzLnJlYWRzID0gQjM6OkhlYXBSYW5nZTo6dG9w
KCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IGVmZmVjdHM7CisgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldChtX3dhc21Db250ZXh0R1BSKSk7CisgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1faW5zdGFuY2VWYWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW0pIHsKKyAgICAgICAgaml0Lm1vdmUocGFyYW1bMF0u
Z3ByKCksIG1fd2FzbUNvbnRleHRHUFIpOworICAgIH0pOwogfQogCiBCM0lSR2VuZXJhdG9yOjpC
M0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2Nl
ZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlvbiogY29tcGlsYXRpb24sIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpCkBAIC0y
ODMsNyArMzE0LDEwIEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwCiAgICAgLy8gRklYTUUgd2Ug
ZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGluIHJlZ2lzdGVycyBoZXJlIGlmIHRoZXJlJ3Mgbm8gbWVt
b3J5LiBJdCBtYWtlcyB3YXNtIC0+IHdhc20gdGh1bmtzIHNpbXBsZXIgZm9yIG5vdy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjYyMwogICAgIGNvbnN0IFBpbm5l
ZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAg
ICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBt
X3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CiAgICAgbV9w
cm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7CisgICAgaWYgKCF1c2VGYXN0VExTKCkp
CisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0R1BSKTsKICAgICBBU1NF
UlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBtX21lbW9y
eVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOwogICAg
IGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVycykKQEAgLTI5OSw3ICszMzMsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYg
cAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBGcmFtZUluUHJvbG9ndWUoJmNv
bXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0aW9uLCBtX3Byb2MsIE9yaWdpbigpLCBtX2N1
cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNlVmFsdWUgPSBsb2FkV2FzbUNvbnRleHQobV9w
cm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgbV9pbnN0YW5jZVZhbHVlID0gbWF0ZXJpYWxpemVX
YXNtQ29udGV4dChtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIH0KIAogc3RydWN0IE1lbW9yeUJh
c2VBbmRTaXplIHsKQEAgLTMwNywxMiArMzQxLDEyIEBAIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6
ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1zdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0
TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJv
YywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5
QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2Us
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVt
b3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUobG9hZFdhc21Db250
ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCks
ICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihudWxscHRyKS0+
bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4g
cmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBl
KHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIpLT5tZW1vcnkoKS0+
bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9u
IHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsKICAgICByZXN1bHQu
YmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJU
eXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNl
dE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNz
ZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTMyMCw5ICszNTQsOSBAQCBzdGF0aWMg
TWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5z
dGFuY2UsIFByb2NlZHVyZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1v
cnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
K3ZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3Qg
TWVtb3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHBy
b2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAgIHN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxv
Y2ssIGluc3RhbmNlKTsKKyAgICByZXN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxvY2ssIGluc3Rh
bmNlKTsKIAogICAgIGlmICghIW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3Rl
ckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTQxOSwx
MiArNDUzLDExIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9u
VHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewot
ICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhl
Y1N0YXRlKiBleGVjLCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgq
Z3Jvd01lbW9yeSkgKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMyX3Qp
ID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4
dCwgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
ICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZt
KTsKLSAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5t
ZW1vcnkoKTsKKyAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdhc21D
b250ZXh0LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAg
cmV0dXJuIC0xOwpAQCAtNDQwLDcgKzQ3Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAog
ICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9j
LCBJbnQzMiwgT3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVt
b3J5KSksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOworICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBP
cmlnaW4oKSksIG1faW5zdGFuY2VWYWx1ZSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1f
Y3VycmVudEJsb2NrKTsKIApAQCAtNDQ5LDcgKzQ4Miw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0
TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9p
bnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBh
Z2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBi
ZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtMTAxNSw3ICsxMDQ4LDYgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFNpZ25h
dHVyZUluZGV4IHMKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQg
PSB0cnVlOwogCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY2FsbGVlQ29kZSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0KICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwocGFy
YW1zW3JldHVyblR5cGUgPT0gVm9pZCA/IDAgOiAxXS5ncHIoKSk7CkBAIC0xMDgwLDExICsxMTEy
LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4
dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgKmxpbmtlZENhbGxlZU1vdmUg
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbGVlTW92ZUxvY2F0aW9uKTsKICAgICB9KTsKIAot
ICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZTsKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBp
bm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwotICAgIHRvU2F2ZS5zZXQocGlu
bmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgZm9yIChjb25zdCBQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzKQotICAgICAgICB0
b1NhdmUuc2V0KHJlZ0luZm8uc2l6ZVJlZ2lzdGVyKTsKKyAgICBSZWdpc3RlclNldCB0b1NhdmUg
PSBwaW5uZWRSZWdzLnRvU2F2ZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHVuc2ln
bmVkIHRvU2F2ZVNpemUgPSB0b1NhdmUubnVtYmVyT2ZTZXRHUFJzKCk7CkBAIC0xMTkxLDEwICsx
MjIwLDI0IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNv
bnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBGSVhNRTogSlNXZWJBc3NlbWJseUNhbGxlZSBzaG91bGQgaGF2ZSBhIHBvaW50ZXIgdG8g
SlNXZWJBc3NlbWJseUluc3RhbmNlIGluc3RlYWQuCisgICAgR1BSUmVnIHdhc21Db250ZXh0ID0g
cGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CisgICAgaWYgKCF1c2VGYXN0VExTKCkpIHsK
KyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpKSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQuYW5kUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgd2FzbUNvbnRl
eHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRl
eHQsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB3YXNtQ29udGV4dCk7CisgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dCwgVk06Ondhc21Db250
ZXh0T2Zmc2V0KCkpLCB3YXNtQ29udGV4dCk7CisgICAgfQorCiAgICAgaWYgKCEhaW5mby5tZW1v
cnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQ
b2ludGVyOwotICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwotICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisKKyAgICAgICAg
aWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Mod2FzbUNvbnRleHQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2Fk
V2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIH0KICAgICAgICAgY29uc3QgYXV0byYg
c2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VSVChzaXpl
UmVncy5zaXplKCkgPj0gMSk7CiAgICAgICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0uc2l6ZU9mZnNl
dCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAsIGFuZCBjYWxj
dWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBmYjY3NjU3ZWE0MGNlY2Qw
Yjg2ODgwZWJiMjRjN2VhNzkxM2Y5YzMzLi5lMGNhYjFmNmQ0ZDc5ODFiYzhkYzcwOWFlMmFmZjhm
YjI2MDk0OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3Bw
CkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk5h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24u
aCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC02Niw4ICs2NSw2IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExp
bmtJbmZvPiYgY2FsbExpbmtJbmZvcywKIAogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OwogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTMyKDApLCBKSVQ6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFz
IGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MjEKLSAgICBqaXQuc3RvcmVQdHIoSklUOjpUcnVzdGVkSW1tUHRyKHZtLT53ZWJBc3NlbWJseVRv
SlNDYWxsZWUuZ2V0KCkpLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkpKTsKLQogCiAgICAgewogICAgICAgICBib29sIGhhc0JhZEk2NFVzZSA9IGZhbHNlOwpAQCAt
OTMsMTYgKzkwLDIyIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0q
IHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgaWYgKGhhc0Jh
ZEk2NFVzZSkgewogICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgaml0Lmxv
YWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgICAgICAgICAvLyBT
dG9yZSBDYWxsZWUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
Q2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICAgICAgaml0LnN0b3Jl
UHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSk7CisKICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKCk7CiAg
ICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgICAgICAgICB2
b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYykgLT4g
dm9pZCB7CisgICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSosIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiB3YXNtQ29udGV4dCkgLT4gdm9pZCB7CiAgICAgICAgICAgICAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9i
YWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJ
TGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFu
IGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjUyLDYg
KzI1NSwxMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwg
QmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBqaXQubG9hZFdhc21Db250ZXh0KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKSVQ6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKwogICAgIEdQUlJlZyBpbXBvcnRKU0Nl
bGxHUFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1Qw
IGZvciBzbG93IHBhdGggYmVsb3cuCiAgICAgQVNTRVJUKCF3YXNtQ0MubV9jYWxsZWVTYXZlUmVn
aXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg0
Y2Q0ZjUyNjZhMzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2lu
Y2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250
ZXh0KFZNJiB2bSkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dB
U01fQ09OVEVYVF9LRVkpKTsKLSNlbmRpZgotICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUg
ZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTc3MwotICAgIHJldHVybiB2bS53YXNtQ29udGV4dDsKLX0KLQotdm9pZCBzdG9y
ZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKLXsK
LSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUZhc3RUTFMoKSkKLSAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNN
X0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNlKSk7Ci0jZW5kaWYKLSAg
ICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICB2bS53YXNtQ29u
dGV4dCA9IGluc3RhbmNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzVlOGExOGQyYjA3NDgxZWU2MDBmOGI3
MDFlNTNjNjM5ZTVmY2M0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci1jbGFzcyBWTTsK
LQotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mKTsKLXZvaWQgc3Rv
cmVXYXNtQ29udGV4dChWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCmluZGV4IDhh
YzA4NjYyNzhiNTEzOTNiNjY5ZWEwOWE3YjU0OGQ2ZDlhNzZiMTQuLjk5ZTdkMmJjZDI5OTRkY2Jl
N2Y1NTg4OWFiMzdkZTcwZWZhNGQ3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcApAQCAtMzQsNDMgKzM0LDU3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRpYyBWZWN0b3I8R1BSUmVn
PiBnZXRQaW5uZWRSZWdpc3RlcnModW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKQor
eworICAgIFZlY3RvcjxHUFJSZWc+IHJlZ2lzdGVyczsKKyAgICBqc2NDYWxsaW5nQ29udmVudGlv
bigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgeworICAgICAg
ICBpZiAoIXJlZy5pc0dQUigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBHUFJSZWcg
Z3ByID0gcmVnLmdwcigpOworICAgICAgICBpZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8
fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnM7CisgICAgICAgIHJlZ2lz
dGVycy5hcHBlbmQoZ3ByKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVnaXN0ZXJzOworfQorCiBj
b25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkKIHsKICAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFBpbm5lZFJlZ2lzdGVySW5mbz4gc3RhdGljUGlu
bmVkUmVnaXN0ZXJJbmZvOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzdGF0aWNQaW5uZWRS
ZWdpc3RlckluZm9GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY1Bpbm5lZFJlZ2lzdGVy
SW5mb0ZsYWcsIFtdICgpIHsKICAgICAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+
IHNpemVSZWdpc3RlcnM7Ci0gICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAg
ICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgR1BS
UmVnIHdhc21Db250ZXh0UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIs
IGFuZCB3ZSBzaG91bGQgYWxsb3cgZGlmZmVyZW50CiAgICAgICAgIC8vICAgICAgICBXZWJBc3Nl
bWJseS5JbnN0YW5jZSB0byBoYXZlIGRpZmZlcmVudCBwaW5zLiBSaWdodCBub3cgd2UgdGFrZSBh
IHZlY3RvciB3aXRoIG9ubHkgb25lIGVudHJ5LgogICAgICAgICAvLyAgICAgICAgSWYgd2UgaGF2
ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIsIHdlIGNhbiBoYXZlIG9uZSBmb3IgZWFjaCBs
b2FkIHNpemUgY2xhc3MuCiAgICAgICAgIC8vICAgICAgICBzZWU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBw
aW5uZWRTaXplcyA9IHsgMCB9OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdp
c3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOwotICAgICAgICBqc2NDYWxsaW5nQ29udmVu
dGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgewotICAg
ICAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwotICAgICAgICAgICAgaWYgKCFyZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJl
ZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycyA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIg
PSBncHI7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdw
ciwgcGlubmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgLSAxXSB9KTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgQVNTRVJUKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpOwotICAg
ICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0KFdURk1vdmUoc2l6ZVJlZ2lz
dGVycyksIGJhc2VNZW1vcnlQb2ludGVyKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQaW5u
ZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOworICAgICAgICBpZiAoIXVzZUZh
c3RUTFMoKSkKKyAgICAgICAgICAgICsrbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnM7CisgICAgICAg
IFZlY3RvcjxHUFJSZWc+IHBpbm5lZFJlZ3MgPSBnZXRQaW5uZWRSZWdpc3RlcnMobnVtYmVyT2ZQ
aW5uZWRSZWdpc3RlcnMpOworCisgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gcGlubmVkUmVn
cy50YWtlTGFzdCgpOworICAgICAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgIHdh
c21Db250ZXh0UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKKworICAgICAgICBBU1NF
UlQocGlubmVkU2l6ZXMuc2l6ZSgpID09IHBpbm5lZFJlZ3Muc2l6ZSgpKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpbm5lZFNpemVzLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBwaW5uZWRSZWdzW2ldLCBwaW5uZWRTaXplc1tpXSB9
KTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNp
emVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlciwgd2FzbUNvbnRleHRQb2ludGVyKTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uZ2V0KCk7CiB9CiAK
LVBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcikK
K1Bpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwg
R1BSUmVnIHdhc21Db250ZXh0UG9pbnRlcikKICAgICA6IHNpemVSZWdpc3RlcnMoV1RGTW92ZShz
aXplUmVnaXN0ZXJzKSkKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VNZW1vcnlQb2ludGVy
KQorICAgICwgd2FzbUNvbnRleHRQb2ludGVyKHdhc21Db250ZXh0UG9pbnRlcikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
aAppbmRleCA2ZGUwNzBhMTA0NTJmZjZiYjNjNWMyNTA0MTFmMTBlOTEzODllNGEyLi4xMTc5YjVm
NzUwMmUxZjI2YjA2Y2FkNzk2MDhmZGExY2FlNDJhNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNs
dWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJX
YXNtUGFnZUNvdW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDMsOCArNDQsMjAgQEAg
c3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewogc3RydWN0IFBpbm5lZFJlZ2lzdGVySW5m
byB7CiAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+IHNpemVSZWdpc3RlcnM7CiAg
ICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50
ZXI7CiAgICAgc3RhdGljIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgZ2V0KCk7Ci0gICAgUGlu
bmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmLCBHUFJSZWcp
OworICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4m
JiwgR1BSUmVnLCBHUFJSZWcpOworCisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LnNldChiYXNl
TWVtb3J5UG9pbnRlcik7CisgICAgICAgIGlmICh3YXNtQ29udGV4dFBvaW50ZXIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIHJlc3VsdC5zZXQod2FzbUNvbnRleHRQb2ludGVyKTsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBpbmZvIDogc2l6ZVJlZ2lzdGVycykKKyAgICAgICAgICAg
IHJlc3VsdC5zZXQoaW5mby5zaXplUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KIH07CiAKIGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKQEAgLTczLDYgKzg2LDE1IEBA
IGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9
OwogfTsKIAoraW5saW5lIGJvb2wgdXNlRmFzdFRMUygpCit7CisjaWYgRU5BQkxFKEZBU1RfVExT
X0pJVCkKKyAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdBU00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCAxYzExYjBj
YTY1YzkxNzQyZjhlNDgxM2MyNGQ5NzVmNjVlZWJhYTE4Li4zYjdmN2I4NzQ2ZmY4ZDQyMTQwMTc4
Y2E3YjVlZWFlZDAzNDY5MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlNZW1vcnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
LAogCiAgICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBtb2R1bGUtPmNvZGVCbG9jaygpKTsK
ICAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIG1vZHVsZU5hbWVzcGFj
ZU9iamVjdCk7CisgICAgbV9jYWxsZWUuc2V0KHZtLCB0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OmNyZWF0ZSh2bSwgdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpLCB0
aGlzKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4
cG9ydHMiKSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBOb25lKTsKIH0KIApAQCAtOTksNiArMTAx
LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9tZW1vcnkpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2aXNpdG9yLnJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tb2R1bGUoKS0+bW9kdWxlSW5mb3Jt
YXRpb24oKS5nbG9iYWxzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRo
aXNPYmplY3QtPm1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCp0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGUyMjg0
OTY5NjcyMDVhMzEzNmM4ODNiYmRlMzI2YWRiYzcxMTEzMGQuLjQyYWExYjM1ZDFiMmE2ZjkzOWI5
ZDMyOTY2YjVmMzdlNGVlNjQxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKIGNsYXNzIEpTV2Vi
QXNzZW1ibHlNb2R1bGU7CitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJs
aWM6CkBAIC05Nyw2ICs5OCw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwg
bV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV90YWJsZSk7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3Nl
bWJseUluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklt
cG9ydEZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yo
V3JpdGVCYXJyaWVyPEpTQ2VsbD4pPihzaXplb2YoSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7IH0K
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1
bmN0aW9uTnVtKSB7IHJldHVybiBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpICsgaW1wb3J0RnVu
Y3Rpb25OdW0gKiBzaXplb2Yoc2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KSk7IH0KQEAgLTEx
Nyw2ICsxMTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVj
dD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlNZW1vcnk+IG1fbWVtb3J5OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+
IG1fdGFibGU7CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxs
ZWU7CiAgICAgTWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgdW5zaWduZWQgbV9u
dW1JbXBvcnRGdW5jdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkMWE4MDFjM2VjOTExYTE5ZjA2
YWI3OWY5OGEzMzkwMWY1YzU3YzUxLi41NjQzMzNiMzk5MjllNmY5MDlkNTc4NjUyYTU4MzlmYmUx
OTg1YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMzksMTUgKzM5LDMzIEBACiAjaW5jbHVkZSAiTExJbnRU
aHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlZNLmgiCi0j
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVk
ZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVkZSA8d3Rm
L1N5c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseUZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUZ1bmN0
aW9uKSB9OwogCitzdGF0aWMgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQo
Vk0mIHZtKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9D
T05URVhUX0tFWSkpOworI2VuZGlmCisgICAgcmV0dXJuIHZtLndhc21Db250ZXh0OworfQorCitz
dGF0aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNf
ZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNl
KSk7CisjZW5kaWYKKyAgICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNlOworfQorCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTEyMSw2ICsxMzks
OSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRy
LCB3YXNtRnVuY3Rpb24sIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsK
IAogICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0aGlzIGVudGlyZSBmdW5jdGlvbiwgYW5kIG9u
bHkgdXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRlZCBieSBCMy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4NgorICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtl
IHRvIG1ha2UgbG9hZFdhc21Db250ZXh0IGFuZCBzdG9yZVdhc21Db250ZXh0IG5vLW9wIGlmIHdl
IHVzZSBwaW5uZWQgcmVnaXN0ZXJzLgorICAgIC8vIEhvd2V2ZXIsIHdlIHVzZSBWTS53YXNtQ29u
dGV4dCBmaWVsZCB0byBwYXNzIGluc3RhbmNlIHRvIHdhc20gZnVuY3Rpb24ncyBKUyBnbHVlIGNv
ZGUuCisgICAgLy8gT25jZSB3ZSBzdGFydCB1c2luZyB1c3VhbCBXZWJBc3NlbWJseUZ1bmN0aW9u
IGFzIGNhbGxlZSwgd2UgY2FuIHJldHJpZXZlIGluc3RhbmNlIGZyb20gdGhhdC4KICAgICBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNv
bnRleHQodm0pOwogICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFu
Y2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CkBAIC0xNTMsNiAr
MTc0LDcgQEAgV2ViQXNzZW1ibHlGdW5jdGlvbiogV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
V2ViQXNzZW1ibHlGdW5jdGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCB3YXNtRW50cnlwb2ludCwgc2lnbmF0dXJlSW5kZXgpOwog
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1l
LCBpbnN0YW5jZSwganNFbnRyeXBvaW50LCB3YXNtRW50cnlwb2ludCk7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghZnVuY3Rpb24tPmlzTGFyZ2VBbGxvY2F0aW9uKCksICJXZWJBc3NlbWJseUZ1
bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQgbm90IGluIGxhcmdlIGFsbG9jYXRpb24gc2luY2Ug
aXQgaXMgSlNDYWxsZWUuIik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNw
cAppbmRleCA0ZTg5MWEwOWEyMGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFmLi42MjAzYWFk
Yzk2MjlhZGExYTg4ZDg5NDAzZTgzNTVhNzNjODM5MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKQEAgLTI5
LDIxICsyOSwyMiBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnNfaW5mbyA9
IHsgIldlYkFzc2VtYmx5VG9KU0NhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitXZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UpCiB7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUodm0sIHN0cnVjdHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFuY2UpOwogICAgIHJldHVy
biBjYWxsZWU7CiB9CiAKIFN0cnVjdHVyZSogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKIH0KIAogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxs
ZWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxLDE1ICs1MiwxOSBAQCBXZWJB
c3NlbWJseVRvSlNDYWxsZWU6OldlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3Rh
bmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsK
LSAgICB0aGlzT2JqZWN0LT5XZWJBc3NlbWJseVRvSlNDYWxsZWU6On5XZWJBc3NlbWJseVRvSlND
YWxsZWUoKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnN0YW5jZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCA0OTZjODg1NzZjMzlmNzIzMjcyMzk4YTU2NjVj
OTA0Y2M1YzFiMTIzLi4wNGRlYWRkZGIxZWNjZDJjYWUyNDgyOTU3ODEzOGYzYWMwYmUyYWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlND
YWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRv
SlNDYWxsZWUuaApAQCAtMzEsMjEgKzMxLDI3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFz
cyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTsKKworY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSgpIHsgcmV0dXJu
IG1faW5zdGFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSopOwogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYsIFN0cnVjdHVyZSopOworCisgICAg
V3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VM
b2cgYi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA4YjkzZjg2M2M0MTBkMmNl
M2M3MTIwOGI4M2QwYWZkMjdjMTVmMDgxLi42NDU5NWU5ZWM3NjZkZDllM2VjM2YzMzI3MTEzMWFi
NjVjYzc5NzlmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZworKysg
Yi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAz
LTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdl
YkFzc2VtYmx5OiBhZGQgZmFsbGJhY2sgdG8gdXNlIHBpbm5lZCByZWdpc3RlciB0byBsb2FkL3N0
b3JlIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgQjMgZG9jdW1lbnQgYWJvdXQgaW1tdXRhYmxlIHBpbm5lZCByZWdpc3RlciBhbmQg
QXJndW1lbnRSZWcuCisKKyAgICAgICAgKiBkb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRh
dGlvbi5odG1sOgorCiAyMDE3LTAzLTExICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgU3dpZnQgc3ludGF4IGhpZ2hsaWdodGluZyB0byB3ZWJraXQub3JnCmRpZmYg
LS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2Vu
dGF0aW9uLmh0bWwgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJl
cHJlc2VudGF0aW9uLmh0bWwKaW5kZXggMjBiNTliNWFlMWY2NTU5YWE1ODMwNmI5M2UyNmQxN2Iw
MzBhNzUxNS4uNTE1MGI1OThjNGQ5MmUyN2Q4OWM4NjRhZjhmMjUxODk0OTAyNDlkNCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRh
dGlvbi5odG1sCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUt
cmVwcmVzZW50YXRpb24uaHRtbApAQCAtMjM3LDcgKzIzNyw4IEBACiAgICAgICA8ZHQ+SW50UHRy
fERvdWJsZSBBcmd1bWVudFJlZyglcmVnaXN0ZXIpPC9kdD4KICAgICAgIDxkZD5SZXR1cm5zIHRo
ZSB2YWx1ZSB0aGF0IHRoZSBnaXZlbiByZWdpc3RlciBoYWQgYXQgdGhlIHByb2xvZ3VlIG9mIHRo
ZSBwcm9jZWR1cmUuICBJdAogICAgICAgICByZXR1cm5zIEludFB0ciBmb3IgZ2VuZXJhbC1wdXJw
b3NlIHJlZ2lzdGVycyBhbmQgRG91YmxlIGZvciBGUFJzLiAgTXVzdCB1c2UgdGhlCi0gICAgICAg
IEFyZ3VtZW50UmVnVmFsdWUgY2xhc3MuPC9kZD4KKyAgICAgICAgQXJndW1lbnRSZWdWYWx1ZSBj
bGFzcy4gSXQgY2FuIGJlIHVzZWQgdG8gcmVhZCBhIHBpbm5lZCByZWdpc3RlciB3aGljaCBpcyBu
b3QgY2xvYmJlcmVkCisgICAgICAgIGluc2lkZSB0aGUgcHJvY2VkdXJlLjwvZGQ+CiAKICAgICAg
IDxkdD5JbnRQdHIgRnJhbWVQb2ludGVyKCk8L2R0PgogICAgICAgPGRkPlJldHVybnMgdGhlIHZh
bHVlIG9mIHRoZSBmcmFtZSBwb2ludGVyIHJlZ2lzdGVyLiAgQjMgcHJvY2VkdXJlcyBhbHdheSB1
c2UgYSBmcmFtZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305489</attachid>
            <date>2017-03-27 11:39:18 -0700</date>
            <delta_ts>2017-03-27 12:00:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170328033916.patch</filename>
            <type>text/plain</type>
            <size>64250</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJhNThmYjhiNzY2N2IyZTQwODY1YWRlYjdjNzQ3ODk5NDU4MGQwLi4wNzY1ZDk4YzA4NDNjMDli
ZjJmZTY1NWRlMDc0MTU1ODQ5NWZmMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IHBpbm5lZCByZWdpc3Rl
ciB0byBob2xkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0
byByZXByZXNlbnQgdGhlIGNvbnRleHQgb2YgcnVubmluZyBXYXNtIGNvZGUuCisgICAgICAgIFdo
aWxlIHdlIHVzZSBmYXN0IFRMUyB0byBob2xkIHRoZSBjb250ZXh0IGluIG1hY09TLCB3ZSBkbyBu
b3QgaGF2ZQorICAgICAgICBhbnkgc3lzdGVtIHJlc2VydmVkIGZhc3QgVExTIHNsb3QgaW4gdGhl
IG90aGVyIHN5c3RlbXMuIFRoaXMgcGlubmVkCisgICAgICAgIHJlZ2lzdGVyIGFwcHJvYWNoIGlz
IHVzZWQgaW4gdGhlc2Ugc3lzdGVtcy4gVGhlc2UgY2hhbmdlcyBkZWNvdXBsZQorICAgICAgICBW
TSBmcm9tIFdhc20gbW9kdWxlIHRvIG1ha2UgV2FzbSBtb2R1bGUgcG9zaXRpb24gaW5kZXBlbmRl
bnQgY29kZS4KKworICAgICAgICBXaGlsZSB1c2luZyBmYXN0IFRMUyBjb3VsZCBiZSBiZW5lZmlj
aWFsIGluIHg2NCBzeXN0ZW1zIHdoaWNoIG51bWJlciBvZgorICAgICAgICByZWdpc3RlcnMgaXMg
cmVsYXRpdmVseSBzbWFsbCwgcGlubmVkIHJlZ2lzdGVyIGFwcHJvYWNoIGNvdWxkIGJlCisgICAg
ICAgIGJlbmVmaWNpYWwgaW4gQVJNNjQgd2hpY2ggaGFzIHBsZW50eSBvZiByZWdpc3RlcnMuIElu
IG1hY09TLCB3ZSBjYW4KKyAgICAgICAgc3dpdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo
ZSBydW50aW1lIGZsYWcuIFRodXMgbWFjT1MgcG9ydCBjYW4KKyAgICAgICAgY29tcGFyZSB0aGUg
cGVyZm9ybWFuY2UgYW5kIGRlY2lkZSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGFmdGVy
CisgICAgICAgIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
b2Zmc2V0T2ZWTSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6
CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWND
YWxsKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlzV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RhY2tGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZ1bmN0
aW9uTmFtZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6d2FzbUNvbnRl
eHRPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6Oldhc206OmdldE1lbW9yeUJhc2VBbmRTaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjps
b2FkV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpzdG9yZVdhc21D
b250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAgICogd2FzbS9XYXNtQ29udGV4
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6Z2V0UGlubmVkUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86
OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
Lmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoKKwogMjAxNy0wMy0y
NiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpmaXhTU0Eg
c2hvdWxkIGRvIGxpdmVuZXNzIHBydW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA1YWY3MTRlMDk1MDlmOGE1ZWNmMTY0YWFjM2FmOWE5NDBiMjEyNzZiLi4xM2JkM2Ew
MGIwOGFkNDdhMGQzZTAzM2M0YTRkNmQ3MjIzODMzMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC05MzQsNyArOTM0LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20vV2FzbUJpbmRpbmcu
Y3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCi0gICAgd2FzbS9XYXNtQ29u
dGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCiAgICAgd2FzbS9X
YXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGM1YmY1N2VhMjlmNDBiY2FkOTg1NmMyNmY1MTY2MGM5Y2VjODFmMy4u
MGEzNjIyYmEzMDc4ZWQ0MDE1ZjZlYWY0NDBhZmY0OTJiNTcxNDRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIwODcsOCArMjA4Nyw2IEBACiAJCUFEMkZDQzMwMURCODNENDkw
MEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZD
QzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07CiAJCUFEMkZDQzMz
MURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNt
Rm9ybWF0LmNwcCAqLzsgfTsKLQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
NDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi87IH07Ci0JCUFENDEy
QjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdh
c21Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQUQ0MjUyNTExRTVEMEUxNDAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQyNTI1MDFFNUQwREVC
MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLzsgfTsKIAkJQUQ0MjUyNTMxRTVEMEY0NzAw
OUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9y
aWdpbi5jcHAgKi87IH07CiAJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDQ5MzdDMTFEREJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
ICovOyB9OwpAQCAtNDY2MSw4ICs0NjU5LDYgQEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZD
QzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDQxMkIzNTFFN0I1N0Mw
MDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3
IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1
RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MjY5LDggKzYyNjUsNiBAQAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUz
MiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBX
YXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdE
MyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKLQkJCQlBRDQxMkIzMTFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAotCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAvKiBX
YXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBX
YXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZv
cm1hdC5oICovLApAQCAtODU4Nyw3ICs4NTgxLDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2NDRB
ODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRB
cmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1
MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDcyMiw3ICsxMDcxNSw2IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0
QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJl
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggMjJhN2JhNzBmNDdjNTAxNjMz
ODMyOTlkYTBlM2UzNGM1YmNkYzIyNy4uNTZkNWNiZWEyNDNkZWU0YTBiMWVlMmU1NzNlYzg2YThi
NjU0NjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0y
OTgsNiArMjk4LDExIEBAIGNsYXNzIE1hcmtlZEJsb2NrIHsKICAgICAKICAgICBib29sIGlzTWFy
a2VkUmF3KGNvbnN0IHZvaWQqIHApOwogICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorCisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlZNKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWFy
a2VkQmxvY2ssIG1fdm0pOworICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA3ODMyMDQ3OTIxOTI0NDVi
NWJlN2Y4Y2M1NGUyMWI2MTg4ZjliNzVkLi4yODA0NWNlNjIzYzQ4ZGY4ZjliMGM2MGU4OTk3MWE5
N2IzNTE3ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisjaW5jbHVkZSAi
V2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIEV4
ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKQEAgLTc2Niw2ICs3NzAsNDkgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBy
ZXN1bHQKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCit7Cisj
aWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlG
YXN0VExTKCkpIHsKKyAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShX
VEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyAgICBtb3ZlKFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkud2FzbUNvbnRleHRQ
b2ludGVyLCBkc3QpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4
dChHUFJSZWcgc3JjKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIHN0b3JlVG9UTFNQdHIoc3Jj
LCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBtb3ZlKHNyYywgV2FzbTo6UGlubmVkUmVnaXN0ZXJJ
bmZvOjpnZXQoKS53YXNtQ29udGV4dFBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVy
czo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExT
KCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBl
cnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIzOWNlYjliMjA5NzI1NDQ2
ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2
MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwg
R1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJS
ZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExT
UHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNh
dmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21D
b250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcg
c3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RM
U1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKLSNl
bmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAg
ICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwotICAgIH0KLQotICAgIHN0
YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAg
IHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3Rv
cmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCk7CisgICAgdm9pZCBz
dG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVdh
c21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZkY2ZjMWEzZDc3MWEwNjMx
MzczZGQyNTc5OWI1YS4uYmJkZDZhZWJjODU0NTYyYjBkNDk0Y2VjMjJkOTk4OWI3MWYzNGEzYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01OSw3ICs1OSw2IEBACiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5jbHVk
ZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBA
IC01NzcsMjUgKzU3NiwxMyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVh
dGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQog
Ci1zdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2Fs
bGVlKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAvLyBUaGUgV2ViQXNzZW1ibHkg
LT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIHNpbmdsZXRvbiB3
aGljaCBsaXZlcyBvbiB0aGUgVk0uCi0gICAgcmV0dXJuIGNhbGxlZSA9PSB2bS53ZWJBc3NlbWJs
eVRvSlNDYWxsZWUuZ2V0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxlZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKLX0KLQotc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0p
CitzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQogewogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNo
YXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0
aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiBsb2FkV2FzbUNvbnRl
eHQodm0pLT5tb2R1bGUoKTsKKyAgICByZXR1cm4ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZSo+KGNhbGxlZSktPmluc3RhbmNlKCktPm1vZHVsZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQpAQCAtNjEyLDcgKzU5OSw3IEBAIHZvaWQgbGlua0ZvcigKICAgICBDb2RlQmxvY2sq
IGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKIAogICAgIC8vIFdl
YkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+
Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJD
b2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZv
LmlzTGlua2VkKCkpOwpAQCAtNzMyLDEwICs3MTksMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwog
ICAgIFZNJiB2bSA9IGNhbGxlckZyYW1lLT52bSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29k
ZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIGJvb2wgaXNXZWJBc3NlbWJs
eSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwor
ICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZy
YW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBo
YXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5
ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBv
d25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIENhbGxW
YXJpYW50TGlzdCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCmluZGV4IDA4NTdlMzRiZjFkMmIwNDZkN2FiY2E0ODkxMjFjMWYzOGM5MDIyZmMu
LjUyMTdiODI1ODZkZWU1ZTRmOWYwZGE0YzZiMDc4NTQ2MDI2MjQwMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCi0jaW5jbHVkZSAi
V2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAg
LTExNDgsMTYgKzExNDcsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9u
RnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgfQogCiAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0
LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cigpOwogCi0gICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6
RXhjZXB0aW9uVHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBl
IHR5cGUpIHsKKyAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNt
OjpFeGNlcHRpb25UeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUq
IGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3
YXNtQ29udGV4dCkgewogICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVj
dHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggOGI2MTVhMWEzYTUxNTEwNTk2
NzIwNjVkNDcyYjdlOGFlODU4Njk5YS4uMGFmZjEwODBhY2IyMDNiZTRlNDMwOWUzOGU1YTE0Mjhk
NTFmZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAg
LTE1NiwyMSArMTU2LDIxIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIAogICAgIFNUQVRJQ19BU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKICAgICBTVEFUSUNfQVNT
RVJUKFN5bWJvbFR5cGUgPT0gNyk7Ci0gICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIz
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNCk7Ci0gICAgU1RBVElD
X0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNik7Ci0gICAgU1RBVElDX0FTU0VSVChBcnJheVR5
cGUgPT0gMzQpOwotICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTMpOwotICAgIFNUQVRJQ19BU1NF
UlQoSW50OEFycmF5VHlwZSA9PSAzNik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlw
ZSA9PSAzNyk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOCk7Ci0gICAg
U1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAzOSk7Ci0gICAgU1RBVElDX0FTU0VSVChV
aW50OENsYW1wZWRBcnJheVR5cGUgPT0gNDApOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJy
YXlUeXBlID09IDQxKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Mik7
Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQzKTsKLSAgICBTVEFUSUNf
QVNTRVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0
VHlwZSA9PSAyNCk7CisgICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjUpOwor
ICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjcpOworICAgIFNUQVRJQ19BU1NF
UlQoQXJyYXlUeXBlID09IDM1KTsKKyAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUg
PT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDU0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzcpOworICAgIFNUQVRJQ19BU1NFUlQoSW50
MTZBcnJheVR5cGUgPT0gMzgpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0g
MzkpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gNDApOworICAgIFNUQVRJ
Q19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQxKTsKKyAgICBTVEFUSUNfQVNTRVJU
KFVpbnQxNkFycmF5VHlwZSA9PSA0Mik7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5
cGUgPT0gNDMpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0NCk7Cisg
ICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ1KTsKICAgICBTVEFUSUNfQVNT
RVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZThlMmRiOGNk
YWMyZTFlMTBkMmI4YTNmNWZmNzA2MTlmZGUwMWQ0Zi4uYWIzYzBjOGU3NzFmZWRhZTliNjVkYWNk
YjYyMjUxYTE4N2EzYzliZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzQ1LDI0ICszNDUsMjQgQEAgY29uc3QgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMHgwQwogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0
cmluZ1R5cGUgPSA2CiBjb25zdCBTeW1ib2xUeXBlID0gNwotY29uc3QgT2JqZWN0VHlwZSA9IDIz
Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNAotY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNgot
Y29uc3QgQXJyYXlUeXBlID0gMzQKLWNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNQotY29uc3Qg
UHJveHlPYmplY3RUeXBlID0gNTMKK2NvbnN0IE9iamVjdFR5cGUgPSAyNAorY29uc3QgRmluYWxP
YmplY3RUeXBlID0gMjUKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjcKK2NvbnN0IEFycmF5VHlw
ZSA9IDM1Citjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzYKK2NvbnN0IFByb3h5T2JqZWN0VHlw
ZSA9IDU0CiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4g
YSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dp
dGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgotY29uc3QgSW50OEFy
cmF5VHlwZSA9IDM2Ci1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDM3Ci1jb25zdCBJbnQzMkFycmF5
VHlwZSA9IDM4Ci1jb25zdCBVaW50OEFycmF5VHlwZSA9IDM5Ci1jb25zdCBVaW50OENsYW1wZWRB
cnJheVR5cGUgPSA0MAotY29uc3QgVWludDE2QXJyYXlUeXBlID0gNDEKLWNvbnN0IFVpbnQzMkFy
cmF5VHlwZSA9IDQyCi1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gNDMKLWNvbnN0IEZsb2F0NjRB
cnJheVR5cGUgPSA0NAorY29uc3QgSW50OEFycmF5VHlwZSA9IDM3Citjb25zdCBJbnQxNkFycmF5
VHlwZSA9IDM4Citjb25zdCBJbnQzMkFycmF5VHlwZSA9IDM5Citjb25zdCBVaW50OEFycmF5VHlw
ZSA9IDQwCitjb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSA0MQorY29uc3QgVWludDE2QXJy
YXlUeXBlID0gNDIKK2NvbnN0IFVpbnQzMkFycmF5VHlwZSA9IDQzCitjb25zdCBGbG9hdDMyQXJy
YXlUeXBlID0gNDQKK2NvbnN0IEZsb2F0NjRBcnJheVR5cGUgPSA0NQogCiBjb25zdCBGaXJzdEFy
cmF5VHlwZSA9IEludDhBcnJheVR5cGUKIGNvbnN0IExhc3RBcnJheVR5cGUgPSBGbG9hdDY0QXJy
YXlUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBhY2Rk
NGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzLi4zZGZjMjg1ZmU3OGMyZWM4NDgw
NTgzMmRmZjEwMjllZTgyNGNhZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6Z2V0UHJvdG90eXBl
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKikKIGJvb2wgSlNDZWxsOjppc0FueVdhc21DYWxsZWUoVk0m
IHZtKSBjb25zdAogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICByZXR1cm4gaW5oZXJp
dHModm0sIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaW5oZXJpdHModm0sIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6aW5mbygpKTsKKyAgICByZXR1cm4gaW5oZXJpdHModm0sIEpTV2Vi
QXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodGhpcyk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDZhOTgwYTgx
ODJjYWJiNjdlOGVmNjgxODhhZmJkZGFhMDk4NjAzZWMuLjk1MDkzNTZlYzZkZTU0ZTA5NmYwNjM5
ZDgzYjkwZGFlMWYzZGE4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTM0Niw0ICszNDYsOSBAQCBpbmxpbmUgSlNPYmplY3QqIEpTQ2Vs
bDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHJldHVybiB0b09iamVjdFNsb3coZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAoraW5s
aW5lIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY29uc3QgSlNDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBjZWxsLT50eXBlKCkgPT0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CmluZGV4IDRkN2VlNDk4MDYwOTcwMDhhZDM2NzI4MjFiMTMyMzEwNzdlYzNkZGUuLjYyZTM3NzJm
NDJiNDdhODk5YTQ4MDU2ZWRlOTQ1ZmRlN2U2OGZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAgICBKU1NjcmlwdEZldGNoZXJUeXBlLAogCisgICAg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwKKwogICAgIC8vIFRoZSBPYmplY3RUeXBlIHZhbHVl
IG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgSlNPYmpl
Y3QuCiAgICAgT2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4ZGMyN2E0
ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRhNWUxMDQ1
NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShW
TSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkg
eworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkp
KQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgICAgIGlm
IChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxhdGVk
RGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1wbCgp
OwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+
dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICB9
CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NTExNTQyYjc3ZGZjOGU2ZjJiZWFi
ZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVjODk0NGJkNDRmMTEyNWMxOWZlMTcy
NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDAsNyArMjQwLDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHdlYkFzc2Vt
Ymx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNhbGxlZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxl
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZS5zZXQoKnRoaXMs
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3NlbWJseVRvSlNDYWxs
ZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1ZjAyMzE4NDQ1OWNi
NjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNhM2QxM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcgKzMzNiw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDYWxsZWVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlOwot
ICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKICNlbmRpZgogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0ODksMTEgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2Fz
bUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihW
TSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0
aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAK
ICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjkxNmRk
ZTI2MDdjN2NiMGM5MjBkMWI3NzA0Nzg3NmExNzAxMTM3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0ZpeFNTQS5oIgogI2lu
Y2x1ZGUgIkIzR2VuZXJhdGUuaCIKKyNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNpbmNs
dWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFs
dWUuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCkBAIC00OSw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgotI2luY2x1ZGUgIldhc21D
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNt
RnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC0yMTksNiArMjE5
LDEwIEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogCiAgICAgdm9pZCBlbWl0Q2hlY2tzRm9yTW9k
T3JEaXYoQjM6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmln
aHQpOwogCisgICAgVmFsdWUqIG1hdGVyaWFsaXplV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFz
aWNCbG9jayopOworICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYsIEJhc2lj
QmxvY2sqLCBWYWx1ZSopOworICAgIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
Y29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYsIEJh
c2ljQmxvY2sqKTsKKwogICAgIFZNJiBtX3ZtOwogICAgIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBtX2luZm87CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CkBAIC0yMjcsMzUgKzIzMSw2NCBAQCBj
bGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4m
IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRo
ZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGgu
CiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BS
OworICAgIEdQUlJlZyBtX3dhc21Db250ZXh0R1BSOwogICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNb
bnVtVHlwZXNdOwogICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRo
aXMgbGF6eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9
OwogCi1zdGF0aWMgVmFsdWUqIGxvYWRXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2lj
QmxvY2sqIGJsb2NrKQorVmFsdWUqIEIzSVJHZW5lcmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICBpZiAodXNlRmFz
dFRMUygpKSB7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7
CisgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3Jh
dGNoUmVnaXN0ZXIoKSkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6Omxv
YWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAg
ICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIHJldHVybiBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwg
T3JpZ2luKCksIHBhdGNocG9pbnQpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBCZWNhdXNlIFdh
c21Ub1dhc20gY2FsbCBjbG9iYmVycyB3YXNtQ29udGV4dCByZWdpc3RlciBhbmQgZG9lcyBub3Qg
cmVzdG9yZSBpdCwgd2UgbmVlZCB0byByZXN0b3JlIGl0IGluIHRoZSBjYWxsZXIgc2lkZS4KKyAg
ICAvLyBUaGlzIHByZXZlbnRzIHVzIGZyb20gdXNpbmcgQXJndW1lbnRSZWcgdG8gdGhpcyAobG9n
aWNhbGx5KSBpbW11dGFibGUgcGlubmVkIHJlZ2lzdGVyLgogICAgIFBhdGNocG9pbnRWYWx1ZSog
cGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSk7Ci0gICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21Db250
ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQotICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSBmYWxzZTsKKyAgICBwYXRjaHBvaW50LT5lZmZlY3Rz
LnJlYWRzUGlubmVkID0gdHJ1ZTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJ
ZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFj
cm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KHBh
cmFtc1swXS5ncHIoKSk7CisgICAgICAgICAgICBqaXQubW92ZShtX3dhc21Db250ZXh0R1BSLCBw
YXJhbXNbMF0uZ3ByKCkpOwogICAgICAgICB9KTsKLQotICAgIHJldHVybiBibG9jay0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNocG9pbnQpOworICAgIHJl
dHVybiBwYXRjaHBvaW50OwogfQogCi1zdGF0aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFByb2Nl
ZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ssIFZhbHVlKiBhcmcpCit2b2lkIEIzSVJHZW5l
cmF0b3I6OnJlc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJs
b2NrLCBWYWx1ZSogYXJnKQogeworICAgIGlmICh1c2VGYXN0VExTKCkpIHsKKyAgICAgICAgUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFs
dWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6
OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCisgICAgICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywgVmFs
dWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CisgICAgICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6c3RvcmVXYXNt
Q29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICAgICAgaml0
LnN0b3JlV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IEJlY2F1c2UgV2FzbVRvV2FzbSBj
YWxsIGNsb2JiZXJzIHdhc21Db250ZXh0IHJlZ2lzdGVyIGFuZCBkb2VzIG5vdCByZXN0b3JlIGl0
LCB3ZSBuZWVkIHRvIHJlc3RvcmUgaXQgaW4gdGhlIGNhbGxlciBzaWRlLgorICAgIC8vIFRoaXMg
cHJldmVudHMgdXMgZnJvbSB1c2luZyBBcmd1bWVudFJlZyB0byB0aGlzIChsb2dpY2FsbHkpIGlt
bXV0YWJsZSBwaW5uZWQgcmVnaXN0ZXIuCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmln
aW4oKSk7Ci0gICAgaWYgKENDYWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNl
dDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25z
dHJhaW5lZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmVXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKKyAg
ICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7CisgICAgZWZmZWN0cy53cml0ZXNQ
aW5uZWQgPSB0cnVlOworICAgIGVmZmVjdHMucmVhZHMgPSBCMzo6SGVhcFJhbmdlOjp0b3AoKTsK
KyAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gZWZmZWN0czsKKyAgICBwYXRjaHBvaW50LT5jbG9i
YmVyTGF0ZShSZWdpc3RlclNldChtX3dhc21Db250ZXh0R1BSKSk7CisgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1faW5zdGFuY2VWYWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW0pIHsKKyAgICAgICAgaml0Lm1vdmUocGFyYW1bMF0u
Z3ByKCksIG1fd2FzbUNvbnRleHRHUFIpOworICAgIH0pOwogfQogCiBCM0lSR2VuZXJhdG9yOjpC
M0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2Nl
ZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlvbiogY29tcGlsYXRpb24sIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpCkBAIC0y
ODMsNyArMzE2LDEwIEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwCiAgICAgLy8gRklYTUUgd2Ug
ZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGluIHJlZ2lzdGVycyBoZXJlIGlmIHRoZXJlJ3Mgbm8gbWVt
b3J5LiBJdCBtYWtlcyB3YXNtIC0+IHdhc20gdGh1bmtzIHNpbXBsZXIgZm9yIG5vdy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjYyMwogICAgIGNvbnN0IFBpbm5l
ZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAg
ICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBt
X3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CiAgICAgbV9w
cm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7CisgICAgaWYgKCF1c2VGYXN0VExTKCkp
CisgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0R1BSKTsKICAgICBBU1NF
UlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBtX21lbW9y
eVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOwogICAg
IGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Mu
c2l6ZVJlZ2lzdGVycykKQEAgLTI5OSw3ICszMzUsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2Vu
ZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYg
cAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBGcmFtZUluUHJvbG9ndWUoJmNv
bXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0aW9uLCBtX3Byb2MsIE9yaWdpbigpLCBtX2N1
cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNlVmFsdWUgPSBsb2FkV2FzbUNvbnRleHQobV9w
cm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgbV9pbnN0YW5jZVZhbHVlID0gbWF0ZXJpYWxpemVX
YXNtQ29udGV4dChtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIH0KIAogc3RydWN0IE1lbW9yeUJh
c2VBbmRTaXplIHsKQEAgLTMwNywxMiArMzQzLDEyIEBAIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6
ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1zdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0
TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJv
YywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5
QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sq
IGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlPYmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2Us
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVt
b3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUobG9hZFdhc21Db250
ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNpemVvZih1aW50NjRfdCks
ICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihudWxscHRyKS0+
bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4g
cmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBl
KHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KG51bGxwdHIpLT5tZW1vcnkoKS0+
bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9u
IHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VBbmRTaXplIHJlc3VsdDsKICAgICByZXN1bHQu
YmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJU
eXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNl
dE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXplID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlW
YWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdpbigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNz
ZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsKQEAgLTMyMCw5ICszNTYsOSBAQCBzdGF0aWMg
TWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5z
dGFuY2UsIFByb2NlZHVyZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1v
cnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
K3ZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3Qg
TWVtb3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHBy
b2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAgIHN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxv
Y2ssIGluc3RhbmNlKTsKKyAgICByZXN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxvY2ssIGluc3Rh
bmNlKTsKIAogICAgIGlmICghIW1lbW9yeSkgewogICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3Rl
ckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTQxOSwx
MiArNDU1LDExIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9u
VHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewot
ICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhl
Y1N0YXRlKiBleGVjLCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgq
Z3Jvd01lbW9yeSkgKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMyX3Qp
ID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4
dCwgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAg
ICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZt
KTsKLSAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5t
ZW1vcnkoKTsKKyAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdhc21D
b250ZXh0LT5tZW1vcnkoKTsKIAogICAgICAgICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAg
cmV0dXJuIC0xOwpAQCAtNDQwLDcgKzQ3NSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jv
d01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAog
ICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9j
LCBJbnQzMiwgT3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29u
c3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4oKSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVt
b3J5KSksCi0gICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgZGVsdGEpOworICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBP
cmlnaW4oKSksIG1faW5zdGFuY2VWYWx1ZSwgZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1f
Y3VycmVudEJsb2NrKTsKIApAQCAtNDQ5LDcgKzQ4NCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0
TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVu
dEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9p
bnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1
aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAgICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBh
Z2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwgIlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBi
ZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAtMTAxNSw3ICsxMDUwLDYgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFNpZ25h
dHVyZUluZGV4IHMKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQg
PSB0cnVlOwogCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY2FsbGVlQ29kZSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0KICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVy
YXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwocGFy
YW1zW3JldHVyblR5cGUgPT0gVm9pZCA/IDAgOiAxXS5ncHIoKSk7CkBAIC0xMDgwLDExICsxMTE0
LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4
dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgKmxpbmtlZENhbGxlZU1vdmUg
PSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbGVlTW92ZUxvY2F0aW9uKTsKICAgICB9KTsKIAot
ICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZTsKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBp
bm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwotICAgIHRvU2F2ZS5zZXQocGlu
bmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgZm9yIChjb25zdCBQaW5uZWRTaXplUmVn
aXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzKQotICAgICAgICB0
b1NhdmUuc2V0KHJlZ0luZm8uc2l6ZVJlZ2lzdGVyKTsKKyAgICBSZWdpc3RlclNldCB0b1NhdmUg
PSBwaW5uZWRSZWdzLnRvU2F2ZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHVuc2ln
bmVkIHRvU2F2ZVNpemUgPSB0b1NhdmUubnVtYmVyT2ZTZXRHUFJzKCk7CkBAIC0xMTkxLDEwICsx
MjIyLDI0IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNv
bnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBGSVhNRTogSlNXZWJBc3NlbWJseUNhbGxlZSBzaG91bGQgaGF2ZSBhIHBvaW50ZXIgdG8g
SlNXZWJBc3NlbWJseUluc3RhbmNlIGluc3RlYWQuCisgICAgR1BSUmVnIHdhc21Db250ZXh0ID0g
cGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CisgICAgaWYgKCF1c2VGYXN0VExTKCkpIHsK
KyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpKSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQuYW5kUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgd2FzbUNvbnRl
eHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRl
eHQsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB3YXNtQ29udGV4dCk7CisgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dCwgVk06Ondhc21Db250
ZXh0T2Zmc2V0KCkpLCB3YXNtQ29udGV4dCk7CisgICAgfQorCiAgICAgaWYgKCEhaW5mby5tZW1v
cnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQ
b2ludGVyOwotICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwotICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisKKyAgICAgICAg
aWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Mod2FzbUNvbnRleHQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGppdC5sb2Fk
V2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIH0KICAgICAgICAgY29uc3QgYXV0byYg
c2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFTU0VSVChzaXpl
UmVncy5zaXplKCkgPj0gMSk7CiAgICAgICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0uc2l6ZU9mZnNl
dCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAsIGFuZCBjYWxj
dWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBmYjY3NjU3ZWE0MGNlY2Qw
Yjg2ODgwZWJiMjRjN2VhNzkxM2Y5YzMzLi5lMGNhYjFmNmQ0ZDc5ODFiYzhkYzcwOWFlMmFmZjhm
YjI2MDk0OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3Bw
CkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk5h
dGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24u
aCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC02Niw4ICs2NSw2IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExp
bmtJbmZvPiYgY2FsbExpbmtJbmZvcywKIAogICAgIGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OwogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTMyKDApLCBKSVQ6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsgLy8gRklYTUUgU3RvcCB1c2luZyAwIGFz
IGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUz
MjEKLSAgICBqaXQuc3RvcmVQdHIoSklUOjpUcnVzdGVkSW1tUHRyKHZtLT53ZWJBc3NlbWJseVRv
SlNDYWxsZWUuZ2V0KCkpLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkpKTsKLQogCiAgICAgewogICAgICAgICBib29sIGhhc0JhZEk2NFVzZSA9IGZhbHNlOwpAQCAt
OTMsMTYgKzkwLDIyIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0q
IHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAgaWYgKGhhc0Jh
ZEk2NFVzZSkgewogICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1FbnRyeUZyYW1l
Q2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAgICAgaml0Lmxv
YWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgICAgICAgICAvLyBT
dG9yZSBDYWxsZWUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9m
Q2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICAgICAgaml0LnN0b3Jl
UHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSk7CisKICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5jYWxsKCk7CiAg
ICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgICAgICAgICB2
b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYykgLT4g
dm9pZCB7CisgICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSosIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiB3YXNtQ29udGV4dCkgLT4gdm9pZCB7CiAgICAgICAgICAgICAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgKnZtLCBnbG9i
YWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIEFTQ0lJ
TGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3VtZW50IHRvIGFu
IGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjUyLDYg
KzI1NSwxMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwg
QmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBqaXQubG9hZFdhc21Db250ZXh0KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNXZWJB
c3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKSVQ6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRp
Y19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKwogICAgIEdQUlJlZyBpbXBvcnRKU0Nl
bGxHUFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1Qw
IGZvciBzbG93IHBhdGggYmVsb3cuCiAgICAgQVNTRVJUKCF3YXNtQ0MubV9jYWxsZWVTYXZlUmVn
aXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg0
Y2Q0ZjUyNjZhMzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Db250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2lu
Y2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250
ZXh0KFZNJiB2bSkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dB
U01fQ09OVEVYVF9LRVkpKTsKLSNlbmRpZgotICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUg
ZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTc3MwotICAgIHJldHVybiB2bS53YXNtQ29udGV4dDsKLX0KLQotdm9pZCBzdG9y
ZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKLXsK
LSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eUZhc3RUTFMoKSkKLSAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNN
X0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNlKSk7Ci0jZW5kaWYKLSAg
ICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICB2bS53YXNtQ29u
dGV4dCA9IGluc3RhbmNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzVlOGExOGQyYjA3NDgxZWU2MDBmOGI3
MDFlNTNjNjM5ZTVmY2M0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Ci1jbGFzcyBWTTsK
LQotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mKTsKLXZvaWQgc3Rv
cmVXYXNtQ29udGV4dChWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCmluZGV4IDhh
YzA4NjYyNzhiNTEzOTNiNjY5ZWEwOWE3YjU0OGQ2ZDlhNzZiMTQuLjk5ZTdkMmJjZDI5OTRkY2Jl
N2Y1NTg4OWFiMzdkZTcwZWZhNGQ3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcApAQCAtMzQsNDMgKzM0LDU3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKK3N0YXRpYyBWZWN0b3I8R1BSUmVn
PiBnZXRQaW5uZWRSZWdpc3RlcnModW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKQor
eworICAgIFZlY3RvcjxHUFJSZWc+IHJlZ2lzdGVyczsKKyAgICBqc2NDYWxsaW5nQ29udmVudGlv
bigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgeworICAgICAg
ICBpZiAoIXJlZy5pc0dQUigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBHUFJSZWcg
Z3ByID0gcmVnLmdwcigpOworICAgICAgICBpZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8
fCBSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnM7CisgICAgICAgIHJlZ2lz
dGVycy5hcHBlbmQoZ3ByKTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVnaXN0ZXJzOworfQorCiBj
b25zdCBQaW5uZWRSZWdpc3RlckluZm8mIFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkKIHsKICAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFBpbm5lZFJlZ2lzdGVySW5mbz4gc3RhdGljUGlu
bmVkUmVnaXN0ZXJJbmZvOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzdGF0aWNQaW5uZWRS
ZWdpc3RlckluZm9GbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHN0YXRpY1Bpbm5lZFJlZ2lzdGVy
SW5mb0ZsYWcsIFtdICgpIHsKICAgICAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+
IHNpemVSZWdpc3RlcnM7Ci0gICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAg
ICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgR1BS
UmVnIHdhc21Db250ZXh0UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CiAKICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIs
IGFuZCB3ZSBzaG91bGQgYWxsb3cgZGlmZmVyZW50CiAgICAgICAgIC8vICAgICAgICBXZWJBc3Nl
bWJseS5JbnN0YW5jZSB0byBoYXZlIGRpZmZlcmVudCBwaW5zLiBSaWdodCBub3cgd2UgdGFrZSBh
IHZlY3RvciB3aXRoIG9ubHkgb25lIGVudHJ5LgogICAgICAgICAvLyAgICAgICAgSWYgd2UgaGF2
ZSBtb3JlIHRoYW4gb25lIHNpemUgcmVnaXN0ZXIsIHdlIGNhbiBoYXZlIG9uZSBmb3IgZWFjaCBs
b2FkIHNpemUgY2xhc3MuCiAgICAgICAgIC8vICAgICAgICBzZWU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBw
aW5uZWRTaXplcyA9IHsgMCB9OwotICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdQaW5uZWRSZWdp
c3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOwotICAgICAgICBqc2NDYWxsaW5nQ29udmVu
dGlvbigpLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgewotICAg
ICAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBHUFJSZWcgZ3ByID0gcmVnLmdwcigpOwotICAgICAgICAgICAgaWYgKCFyZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJl
ZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycyA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIg
PSBncHI7Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzLS07Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzaXplUmVnaXN0ZXJzLmFwcGVuZCh7IGdw
ciwgcGlubmVkU2l6ZXNbLS1yZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgLSAxXSB9KTsKLSAgICAg
ICAgfSk7Ci0KLSAgICAgICAgQVNTRVJUKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpOwotICAg
ICAgICBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uY29uc3RydWN0KFdURk1vdmUoc2l6ZVJlZ2lz
dGVycyksIGJhc2VNZW1vcnlQb2ludGVyKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQaW5u
ZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAxOworICAgICAgICBpZiAoIXVzZUZh
c3RUTFMoKSkKKyAgICAgICAgICAgICsrbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnM7CisgICAgICAg
IFZlY3RvcjxHUFJSZWc+IHBpbm5lZFJlZ3MgPSBnZXRQaW5uZWRSZWdpc3RlcnMobnVtYmVyT2ZQ
aW5uZWRSZWdpc3RlcnMpOworCisgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gcGlubmVkUmVn
cy50YWtlTGFzdCgpOworICAgICAgICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgICAgIHdh
c21Db250ZXh0UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKKworICAgICAgICBBU1NF
UlQocGlubmVkU2l6ZXMuc2l6ZSgpID09IHBpbm5lZFJlZ3Muc2l6ZSgpKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpbm5lZFNpemVzLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBwaW5uZWRSZWdzW2ldLCBwaW5uZWRTaXplc1tpXSB9
KTsKKyAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNp
emVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlciwgd2FzbUNvbnRleHRQb2ludGVyKTsKICAg
ICB9KTsKIAogICAgIHJldHVybiBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm8uZ2V0KCk7CiB9CiAK
LVBpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcikK
K1Bpbm5lZFJlZ2lzdGVySW5mbzo6UGlubmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiYmIHNpemVSZWdpc3RlcnMsIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciwg
R1BSUmVnIHdhc21Db250ZXh0UG9pbnRlcikKICAgICA6IHNpemVSZWdpc3RlcnMoV1RGTW92ZShz
aXplUmVnaXN0ZXJzKSkKICAgICAsIGJhc2VNZW1vcnlQb2ludGVyKGJhc2VNZW1vcnlQb2ludGVy
KQorICAgICwgd2FzbUNvbnRleHRQb2ludGVyKHdhc21Db250ZXh0UG9pbnRlcikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
aAppbmRleCA2ZGUwNzBhMTA0NTJmZjZiYjNjNWMyNTA0MTFmMTBlOTEzODllNGEyLi4xMTc5YjVm
NzUwMmUxZjI2YjA2Y2FkNzk2MDhmZGExY2FlNDJhNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNs
dWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJX
YXNtUGFnZUNvdW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDMsOCArNDQsMjAgQEAg
c3RydWN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8gewogc3RydWN0IFBpbm5lZFJlZ2lzdGVySW5m
byB7CiAgICAgVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+IHNpemVSZWdpc3RlcnM7CiAg
ICAgR1BSUmVnIGJhc2VNZW1vcnlQb2ludGVyOworICAgIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50
ZXI7CiAgICAgc3RhdGljIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgZ2V0KCk7Ci0gICAgUGlu
bmVkUmVnaXN0ZXJJbmZvKFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiYmLCBHUFJSZWcp
OworICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4m
JiwgR1BSUmVnLCBHUFJSZWcpOworCisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0LnNldChiYXNl
TWVtb3J5UG9pbnRlcik7CisgICAgICAgIGlmICh3YXNtQ29udGV4dFBvaW50ZXIgIT0gSW52YWxp
ZEdQUlJlZykKKyAgICAgICAgICAgIHJlc3VsdC5zZXQod2FzbUNvbnRleHRQb2ludGVyKTsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBpbmZvIDogc2l6ZVJlZ2lzdGVycykKKyAgICAgICAgICAg
IHJlc3VsdC5zZXQoaW5mby5zaXplUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KIH07CiAKIGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKQEAgLTczLDYgKzg2LDE1IEBA
IGNsYXNzIE1lbW9yeUluZm9ybWF0aW9uIHsKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9
OwogfTsKIAoraW5saW5lIGJvb2wgdXNlRmFzdFRMUygpCit7CisjaWYgRU5BQkxFKEZBU1RfVExT
X0pJVCkKKyAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdBU00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCAxYzExYjBj
YTY1YzkxNzQyZjhlNDgxM2MyNGQ5NzVmNjVlZWJhYTE4Li4zYjdmN2I4NzQ2ZmY4ZDQyMTQwMTc4
Y2E3YjVlZWFlZDAzNDY5MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1i
bHlNZW1vcnkuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAi
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
LAogCiAgICAgbV9jb2RlQmxvY2suc2V0KHZtLCB0aGlzLCBtb2R1bGUtPmNvZGVCbG9jaygpKTsK
ICAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIG1vZHVsZU5hbWVzcGFj
ZU9iamVjdCk7CisgICAgbV9jYWxsZWUuc2V0KHZtLCB0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OmNyZWF0ZSh2bSwgdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpLCB0
aGlzKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4
cG9ydHMiKSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBOb25lKTsKIH0KIApAQCAtOTksNiArMTAx
LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9tZW1vcnkpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2aXNpdG9yLnJl
cG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tb2R1bGUoKS0+bW9kdWxlSW5mb3Jt
YXRpb24oKS5nbG9iYWxzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRo
aXNPYmplY3QtPm1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCp0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGUyMjg0
OTY5NjcyMDVhMzEzNmM4ODNiYmRlMzI2YWRiYzcxMTEzMGQuLjQyYWExYjM1ZDFiMmE2ZjkzOWI5
ZDMyOTY2YjVmMzdlNGVlNjQxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKIGNsYXNzIEpTV2Vi
QXNzZW1ibHlNb2R1bGU7CitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJs
aWM6CkBAIC05Nyw2ICs5OCw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
TWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwg
bV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV90YWJsZSk7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3Nl
bWJseUluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZklt
cG9ydEZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yo
V3JpdGVCYXJyaWVyPEpTQ2VsbD4pPihzaXplb2YoSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7IH0K
ICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1
bmN0aW9uTnVtKSB7IHJldHVybiBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpICsgaW1wb3J0RnVu
Y3Rpb25OdW0gKiBzaXplb2Yoc2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KSk7IH0KQEAgLTEx
Nyw2ICsxMTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVj
dD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlNZW1vcnk+IG1fbWVtb3J5OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+
IG1fdGFibGU7CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxs
ZWU7CiAgICAgTWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgdW5zaWduZWQgbV9u
dW1JbXBvcnRGdW5jdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkMWE4MDFjM2VjOTExYTE5ZjA2
YWI3OWY5OGEzMzkwMWY1YzU3YzUxLi41NjQzMzNiMzk5MjllNmY5MDlkNTc4NjUyYTU4MzlmYmUx
OTg1YWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMzksMTUgKzM5LDMzIEBACiAjaW5jbHVkZSAiTExJbnRU
aHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlZNLmgiCi0j
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVk
ZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+CiAjaW5jbHVkZSA8d3Rm
L1N5c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseUZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseUZ1bmN0
aW9uKSB9OwogCitzdGF0aWMgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQo
Vk0mIHZtKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9D
T05URVhUX0tFWSkpOworI2VuZGlmCisgICAgcmV0dXJuIHZtLndhc21Db250ZXh0OworfQorCitz
dGF0aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0YW5jZSkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lmaWNf
ZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGluc3RhbmNl
KSk7CisjZW5kaWYKKyAgICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNlOworfQorCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTEyMSw2ICsxMzks
OSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlG
dW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRy
LCB3YXNtRnVuY3Rpb24sIGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsK
IAogICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0aGlzIGVudGlyZSBmdW5jdGlvbiwgYW5kIG9u
bHkgdXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRlZCBieSBCMy4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4NgorICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtl
IHRvIG1ha2UgbG9hZFdhc21Db250ZXh0IGFuZCBzdG9yZVdhc21Db250ZXh0IG5vLW9wIGlmIHdl
IHVzZSBwaW5uZWQgcmVnaXN0ZXJzLgorICAgIC8vIEhvd2V2ZXIsIHdlIHVzZSBWTS53YXNtQ29u
dGV4dCBmaWVsZCB0byBwYXNzIGluc3RhbmNlIHRvIHdhc20gZnVuY3Rpb24ncyBKUyBnbHVlIGNv
ZGUuCisgICAgLy8gT25jZSB3ZSBzdGFydCB1c2luZyB1c3VhbCBXZWJBc3NlbWJseUZ1bmN0aW9u
IGFzIGNhbGxlZSwgd2UgY2FuIHJldHJpZXZlIGluc3RhbmNlIGZyb20gdGhhdC4KICAgICBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNv
bnRleHQodm0pOwogICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFu
Y2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CkBAIC0xNTMsNiAr
MTc0LDcgQEAgV2ViQXNzZW1ibHlGdW5jdGlvbiogV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
V2ViQXNzZW1ibHlGdW5jdGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCB3YXNtRW50cnlwb2ludCwgc2lnbmF0dXJlSW5kZXgpOwog
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1l
LCBpbnN0YW5jZSwganNFbnRyeXBvaW50LCB3YXNtRW50cnlwb2ludCk7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghZnVuY3Rpb24tPmlzTGFyZ2VBbGxvY2F0aW9uKCksICJXZWJBc3NlbWJseUZ1
bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQgbm90IGluIGxhcmdlIGFsbG9jYXRpb24gc2luY2Ug
aXQgaXMgSlNDYWxsZWUuIik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNw
cAppbmRleCA0ZTg5MWEwOWEyMGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFmLi42MjAzYWFk
Yzk2MjlhZGExYTg4ZDg5NDAzZTgzNTVhNzNjODM5MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKQEAgLTI5
LDIxICsyOSwyMiBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnNfaW5mbyA9
IHsgIldlYkFzc2VtYmx5VG9KU0NhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CitXZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UpCiB7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUodm0sIHN0cnVjdHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwgaW5zdGFuY2UpOwogICAgIHJldHVy
biBjYWxsZWU7CiB9CiAKIFN0cnVjdHVyZSogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKIH0KIAogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxs
ZWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxLDE1ICs1MiwxOSBAQCBXZWJB
c3NlbWJseVRvSlNDYWxsZWU6OldlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgbV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3Rh
bmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBXZWJBc3NlbWJseVRvSlNDYWxsZWUq
IHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsK
LSAgICB0aGlzT2JqZWN0LT5XZWJBc3NlbWJseVRvSlNDYWxsZWU6On5XZWJBc3NlbWJseVRvSlND
YWxsZWUoKTsKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnN0YW5jZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCA0OTZjODg1NzZjMzlmNzIzMjcyMzk4YTU2NjVj
OTA0Y2M1YzFiMTIzLi4wNGRlYWRkZGIxZWNjZDJjYWUyNDgyOTU3ODEzOGYzYWMwYmUyYWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlND
YWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRv
SlNDYWxsZWUuaApAQCAtMzEsMjEgKzMxLDI3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFz
cyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTsKKworY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBzdGF0aWMgV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOworCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworCisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSgpIHsgcmV0dXJu
IG1faW5zdGFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSopOwogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYsIFN0cnVjdHVyZSopOworCisgICAg
V3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VM
b2cgYi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA4YjkzZjg2M2M0MTBkMmNl
M2M3MTIwOGI4M2QwYWZkMjdjMTVmMDgxLi42NDU5NWU5ZWM3NjZkZDllM2VjM2YzMzI3MTEzMWFi
NjVjYzc5NzlmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZworKysg
Yi9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAz
LTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFdl
YkFzc2VtYmx5OiBhZGQgZmFsbGJhY2sgdG8gdXNlIHBpbm5lZCByZWdpc3RlciB0byBsb2FkL3N0
b3JlIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgQjMgZG9jdW1lbnQgYWJvdXQgaW1tdXRhYmxlIHBpbm5lZCByZWdpc3RlciBhbmQg
QXJndW1lbnRSZWcuCisKKyAgICAgICAgKiBkb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRh
dGlvbi5odG1sOgorCiAyMDE3LTAzLTExICBKb24gRGF2aXMgIDxqb25kQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgU3dpZnQgc3ludGF4IGhpZ2hsaWdodGluZyB0byB3ZWJraXQub3JnCmRpZmYg
LS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2Vu
dGF0aW9uLmh0bWwgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJl
cHJlc2VudGF0aW9uLmh0bWwKaW5kZXggMjBiNTliNWFlMWY2NTU5YWE1ODMwNmI5M2UyNmQxN2Iw
MzBhNzUxNS4uNTE1MGI1OThjNGQ5MmUyN2Q4OWM4NjRhZjhmMjUxODk0OTAyNDlkNCAxMDA2NDQK
LS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRh
dGlvbi5odG1sCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZG9jcy9iMy9pbnRlcm1lZGlhdGUt
cmVwcmVzZW50YXRpb24uaHRtbApAQCAtMjM3LDcgKzIzNyw4IEBACiAgICAgICA8ZHQ+SW50UHRy
fERvdWJsZSBBcmd1bWVudFJlZyglcmVnaXN0ZXIpPC9kdD4KICAgICAgIDxkZD5SZXR1cm5zIHRo
ZSB2YWx1ZSB0aGF0IHRoZSBnaXZlbiByZWdpc3RlciBoYWQgYXQgdGhlIHByb2xvZ3VlIG9mIHRo
ZSBwcm9jZWR1cmUuICBJdAogICAgICAgICByZXR1cm5zIEludFB0ciBmb3IgZ2VuZXJhbC1wdXJw
b3NlIHJlZ2lzdGVycyBhbmQgRG91YmxlIGZvciBGUFJzLiAgTXVzdCB1c2UgdGhlCi0gICAgICAg
IEFyZ3VtZW50UmVnVmFsdWUgY2xhc3MuPC9kZD4KKyAgICAgICAgQXJndW1lbnRSZWdWYWx1ZSBj
bGFzcy4gSXQgY2FuIGJlIHVzZWQgdG8gcmVhZCBhIHBpbm5lZCByZWdpc3RlciB3aGljaCBpcyBu
b3QgY2xvYmJlcmVkCisgICAgICAgIGluc2lkZSB0aGUgcHJvY2VkdXJlLjwvZGQ+CiAKICAgICAg
IDxkdD5JbnRQdHIgRnJhbWVQb2ludGVyKCk8L2R0PgogICAgICAgPGRkPlJldHVybnMgdGhlIHZh
bHVlIG9mIHRoZSBmcmFtZSBwb2ludGVyIHJlZ2lzdGVyLiAgQjMgcHJvY2VkdXJlcyBhbHdheSB1
c2UgYSBmcmFtZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305491</attachid>
            <date>2017-03-27 12:00:56 -0700</date>
            <delta_ts>2017-03-28 11:09:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170328040055.patch</filename>
            <type>text/plain</type>
            <size>66447</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YWJhNThmYjhiNzY2N2IyZTQwODY1YWRlYjdjNzQ3ODk5NDU4MGQwLi4wNzY1ZDk4YzA4NDNjMDli
ZjJmZTY1NWRlMDc0MTU1ODQ5NWZmMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRvIHVzZSBwaW5uZWQg
cmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IHBpbm5lZCByZWdpc3Rl
ciB0byBob2xkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwKKyAgICAgICAgd2hpY2ggaXMgdXNlZCB0
byByZXByZXNlbnQgdGhlIGNvbnRleHQgb2YgcnVubmluZyBXYXNtIGNvZGUuCisgICAgICAgIFdo
aWxlIHdlIHVzZSBmYXN0IFRMUyB0byBob2xkIHRoZSBjb250ZXh0IGluIG1hY09TLCB3ZSBkbyBu
b3QgaGF2ZQorICAgICAgICBhbnkgc3lzdGVtIHJlc2VydmVkIGZhc3QgVExTIHNsb3QgaW4gdGhl
IG90aGVyIHN5c3RlbXMuIFRoaXMgcGlubmVkCisgICAgICAgIHJlZ2lzdGVyIGFwcHJvYWNoIGlz
IHVzZWQgaW4gdGhlc2Ugc3lzdGVtcy4gVGhlc2UgY2hhbmdlcyBkZWNvdXBsZQorICAgICAgICBW
TSBmcm9tIFdhc20gbW9kdWxlIHRvIG1ha2UgV2FzbSBtb2R1bGUgcG9zaXRpb24gaW5kZXBlbmRl
bnQgY29kZS4KKworICAgICAgICBXaGlsZSB1c2luZyBmYXN0IFRMUyBjb3VsZCBiZSBiZW5lZmlj
aWFsIGluIHg2NCBzeXN0ZW1zIHdoaWNoIG51bWJlciBvZgorICAgICAgICByZWdpc3RlcnMgaXMg
cmVsYXRpdmVseSBzbWFsbCwgcGlubmVkIHJlZ2lzdGVyIGFwcHJvYWNoIGNvdWxkIGJlCisgICAg
ICAgIGJlbmVmaWNpYWwgaW4gQVJNNjQgd2hpY2ggaGFzIHBsZW50eSBvZiByZWdpc3RlcnMuIElu
IG1hY09TLCB3ZSBjYW4KKyAgICAgICAgc3dpdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiB3aXRoIHRo
ZSBydW50aW1lIGZsYWcuIFRodXMgbWFjT1MgcG9ydCBjYW4KKyAgICAgICAgY29tcGFyZSB0aGUg
cGVyZm9ybWFuY2UgYW5kIGRlY2lkZSB3aGljaCBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGFmdGVy
CisgICAgICAgIGxhbmRpbmcgdGhpcyBwYXRjaC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
b2Zmc2V0T2ZWTSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6
QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1i
bHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlPd25lcik6
CisgICAgICAgIChKU0M6OmxpbmtGb3IpOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBoaWND
YWxsKToKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd0V4
Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzQW55V2FzbUNhbGxlZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlzV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RhY2tGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrRnJhbWU6OmZ1bmN0
aW9uTmFtZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6d2FzbUNvbnRl
eHRPZmZzZXQpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6Oldhc206OmdldE1lbW9yeUJhc2VBbmRTaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjps
b2FkV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpzdG9yZVdhc21D
b250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzdG9yZVdlYkFzc2VtYmx5
R2xvYmFsU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUJpbmRpbmcuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9Kcyk6CisgICAgICAgICogd2FzbS9XYXNtQ29udGV4
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6Z2V0UGlubmVkUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlNDOjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86
OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUpOgor
ICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
Lmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNvbnRleHQpOgor
ICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldl
YkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoKKwogMjAxNy0wMy0y
NiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpmaXhTU0Eg
c2hvdWxkIGRvIGxpdmVuZXNzIHBydW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA1YWY3MTRlMDk1MDlmOGE1ZWNmMTY0YWFjM2FmOWE5NDBiMjEyNzZiLi4xM2JkM2Ew
MGIwOGFkNDdhMGQzZTAzM2M0YTRkNmQ3MjIzODMzMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC05MzQsNyArOTM0LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20vV2FzbUJpbmRpbmcu
Y3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCi0gICAgd2FzbS9XYXNtQ29u
dGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCiAgICAgd2FzbS9X
YXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGM1YmY1N2VhMjlmNDBiY2FkOTg1NmMyNmY1MTY2MGM5Y2VjODFmMy4u
MGEzNjIyYmEzMDc4ZWQ0MDE1ZjZlYWY0NDBhZmY0OTJiNTcxNDRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIwODcsOCArMjA4Nyw2IEBACiAJCUFEMkZDQzMwMURCODNENDkw
MEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2Vt
Ymx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8qIEpTV2ViQXNzZW1i
bHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZD
QzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07CiAJCUFEMkZDQzMz
MURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBXYXNt
Rm9ybWF0LmNwcCAqLzsgfTsKLQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250
ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
NDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi87IH07Ci0JCUFENDEy
QjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzIxRTdCMkU4QTAwOEFGMTU3IC8qIFdh
c21Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQUQ0MjUyNTExRTVEMEUxNDAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQyNTI1MDFFNUQwREVC
MDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLzsgfTsKIAkJQUQ0MjUyNTMxRTVEMEY0NzAw
OUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9y
aWdpbi5jcHAgKi87IH07CiAJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAvKiBBYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBRDQ5MzdDMTFEREJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
ICovOyB9OwpAQCAtNDY2MSw4ICs0NjU5LDYgQEAKIAkJQUQyRkNDMkUxREI4MzlGNzAwQjNFNzM2
IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEMkZD
QzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDQxMkIzNTFFN0I1N0Mw
MDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVEMERFQjAwOUQyQTk3
IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFENDI1MjUyMUU1
RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02MjY5LDggKzYyNjUsNiBAQAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUz
MiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBX
YXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3QUIxODcwMDMyODdE
MyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKLQkJCQlBRDQxMkIzMTFFN0IyRThBMDA4
QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAotCQkJCUFENDEyQjMyMUU3QjJFOEEwMDhBRjE1
NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIwMEI1MjZBQSAvKiBX
YXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMwMEIzRTczNiAvKiBX
YXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZv
cm1hdC5oICovLApAQCAtODU4Nyw3ICs4NTgxLDYgQEAKIAkJCQkwRkVBMEEwQzE3MDUxM0RCMDBC
QjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMkU1QTcxREE2NDRB
ODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25UYXJnZXQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRB
cmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0Y1
MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMDcyMiw3ICsxMDcxNSw2IEBACiAJCQkJQkNERTNCNDMwRTZDODMyRDAwMTQ1M0E3IC8q
IFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0
QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkFGNzM4MkMxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkgLyogU3RydWN0dXJl
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMwMDhGMzYzRSAvKiBT
dHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggMjJhN2JhNzBmNDdjNTAxNjMz
ODMyOTlkYTBlM2UzNGM1YmNkYzIyNy4uNTZkNWNiZWEyNDNkZWU0YTBiMWVlMmU1NzNlYzg2YThi
NjU0NjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCkBAIC0y
OTgsNiArMjk4LDExIEBAIGNsYXNzIE1hcmtlZEJsb2NrIHsKICAgICAKICAgICBib29sIGlzTWFy
a2VkUmF3KGNvbnN0IHZvaWQqIHApOwogICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorCisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZlZNKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTWFy
a2VkQmxvY2ssIG1fdm0pOworICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA3ODMyMDQ3OTIxOTI0NDVi
NWJlN2Y4Y2M1NGUyMWI2MTg4ZjliNzVkLi4yODA0NWNlNjIzYzQ4ZGY4ZjliMGM2MGU4OTk3MWE5
N2IzNTE3ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisjaW5jbHVkZSAi
V2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIEV4
ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKQEAgLTc2Niw2ICs3NzAsNDkgQEAgdm9pZCBBc3NlbWJseUhlbHBl
cnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBy
ZXN1bHQKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCit7Cisj
aWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlG
YXN0VExTKCkpIHsKKyAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShX
VEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5k
aWYKKyAgICBtb3ZlKFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkud2FzbUNvbnRleHRQ
b2ludGVyLCBkc3QpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4
dChHUFJSZWcgc3JjKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIHN0b3JlVG9UTFNQdHIoc3Jj
LCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBtb3ZlKHNyYywgV2FzbTo6UGlubmVkUmVnaXN0ZXJJ
bmZvOjpnZXQoKS53YXNtQ29udGV4dFBvaW50ZXIpOworfQorCitib29sIEFzc2VtYmx5SGVscGVy
czo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5B
QkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExT
KCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0
ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBl
cnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lz
dGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIzOWNlYjliMjA5NzI1NDQ2
ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIwNzQ5MjdkMmE0NjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTE2
MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1dEFuZFJlc3VsdCwg
R1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJS
ZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAgIGxvYWRGcm9tVExT
UHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpLCBkc3QpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgLy8gRklYTUU6IFNh
dmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIoJm1fdm0tPndhc21D
b250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29udGV4dChHUFJSZWcg
c3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RvcmVUb1RM
U1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKLSNl
bmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxv
dyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAg
ICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwotICAgIH0KLQotICAgIHN0
YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAg
IHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gc3Rv
cmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCk7CisgICAgdm9pZCBz
dG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0aWMgYm9vbCBzdG9yZVdh
c21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlmCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3ZtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZkY2ZjMWEzZDc3MWEwNjMx
MzczZGQyNTc5OWI1YS4uYmJkZDZhZWJjODU0NTYyYjBkNDk0Y2VjMjJkOTk4OWI3MWYzNGEzYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01OSw3ICs1OSw2IEBACiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCi0jaW5jbHVk
ZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBA
IC01NzcsMjUgKzU3NiwxMyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihWTSogdm0sIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRTbG93U3R1YihjcmVh
dGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwgdHJ1ZSkpOwogfQog
Ci1zdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIEpTQ2VsbCogY2Fs
bGVlKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAvLyBUaGUgV2ViQXNzZW1ibHkg
LT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBhIHNpbmdsZXRvbiB3
aGljaCBsaXZlcyBvbiB0aGUgVk0uCi0gICAgcmV0dXJuIGNhbGxlZSA9PSB2bS53ZWJBc3NlbWJs
eVRvSlNDYWxsZWUuZ2V0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxlZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKLX0KLQotc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihWTSYgdm0p
CitzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2FsbGVlKQogewogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHNo
YXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUsIHdoaWNoIGFyZSB0
aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiBsb2FkV2FzbUNvbnRl
eHQodm0pLT5tb2R1bGUoKTsKKyAgICByZXR1cm4ganNDYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZSo+KGNhbGxlZSktPmluc3RhbmNlKCktPm1vZHVsZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQpAQCAtNjEyLDcgKzU5OSw3IEBAIHZvaWQgbGlua0ZvcigKICAgICBDb2RlQmxvY2sq
IGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKIAogICAgIC8vIFdl
YkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+
Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJD
b2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZv
LmlzTGlua2VkKCkpOwpAQCAtNzMyLDEwICs3MTksMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwog
ICAgIFZNJiB2bSA9IGNhbGxlckZyYW1lLT52bSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29k
ZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIGJvb2wgaXNXZWJBc3NlbWJs
eSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwor
ICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZy
YW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBo
YXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5
ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBv
d25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIENhbGxW
YXJpYW50TGlzdCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCmluZGV4IDA4NTdlMzRiZjFkMmIwNDZkN2FiY2E0ODkxMjFjMWYzOGM5MDIyZmMu
LjUyMTdiODI1ODZkZWU1ZTRmOWYwZGE0YzZiMDc4NTQ2MDI2MjQwMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCi0jaW5jbHVkZSAi
V2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAg
LTExNDgsMTYgKzExNDcsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9u
RnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgfQogCiAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0
LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cigpOwogCi0gICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6
RXhjZXB0aW9uVHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBl
IHR5cGUpIHsKKyAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNt
OjpFeGNlcHRpb25UeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUq
IGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3
YXNtQ29udGV4dCkgewogICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVj
dHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggOGI2MTVhMWEzYTUxNTEwNTk2
NzIwNjVkNDcyYjdlOGFlODU4Njk5YS4uMGFmZjEwODBhY2IyMDNiZTRlNDMwOWUzOGU1YTE0Mjhk
NTFmZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAg
LTE1NiwyMSArMTU2LDIxIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIAogICAgIFNUQVRJQ19BU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKICAgICBTVEFUSUNfQVNT
RVJUKFN5bWJvbFR5cGUgPT0gNyk7Ci0gICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIz
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNCk7Ci0gICAgU1RBVElD
X0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNik7Ci0gICAgU1RBVElDX0FTU0VSVChBcnJheVR5
cGUgPT0gMzQpOwotICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTMpOwotICAgIFNUQVRJQ19BU1NF
UlQoSW50OEFycmF5VHlwZSA9PSAzNik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlw
ZSA9PSAzNyk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOCk7Ci0gICAg
U1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAzOSk7Ci0gICAgU1RBVElDX0FTU0VSVChV
aW50OENsYW1wZWRBcnJheVR5cGUgPT0gNDApOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJy
YXlUeXBlID09IDQxKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Mik7
Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQzKTsKLSAgICBTVEFUSUNf
QVNTRVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0
VHlwZSA9PSAyNCk7CisgICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjUpOwor
ICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjcpOworICAgIFNUQVRJQ19BU1NF
UlQoQXJyYXlUeXBlID09IDM1KTsKKyAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUg
PT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDU0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzcpOworICAgIFNUQVRJQ19BU1NFUlQoSW50
MTZBcnJheVR5cGUgPT0gMzgpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0g
MzkpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gNDApOworICAgIFNUQVRJ
Q19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQxKTsKKyAgICBTVEFUSUNfQVNTRVJU
KFVpbnQxNkFycmF5VHlwZSA9PSA0Mik7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5
cGUgPT0gNDMpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0NCk7Cisg
ICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ1KTsKICAgICBTVEFUSUNfQVNT
RVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZThlMmRiOGNk
YWMyZTFlMTBkMmI4YTNmNWZmNzA2MTlmZGUwMWQ0Zi4uYWIzYzBjOGU3NzFmZWRhZTliNjVkYWNk
YjYyMjUxYTE4N2EzYzliZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzQ1LDI0ICszNDUsMjQgQEAgY29uc3QgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMHgwQwogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0
cmluZ1R5cGUgPSA2CiBjb25zdCBTeW1ib2xUeXBlID0gNwotY29uc3QgT2JqZWN0VHlwZSA9IDIz
Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNAotY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNgot
Y29uc3QgQXJyYXlUeXBlID0gMzQKLWNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNQotY29uc3Qg
UHJveHlPYmplY3RUeXBlID0gNTMKK2NvbnN0IE9iamVjdFR5cGUgPSAyNAorY29uc3QgRmluYWxP
YmplY3RUeXBlID0gMjUKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjcKK2NvbnN0IEFycmF5VHlw
ZSA9IDM1Citjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzYKK2NvbnN0IFByb3h5T2JqZWN0VHlw
ZSA9IDU0CiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4g
YSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dp
dGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgotY29uc3QgSW50OEFy
cmF5VHlwZSA9IDM2Ci1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDM3Ci1jb25zdCBJbnQzMkFycmF5
VHlwZSA9IDM4Ci1jb25zdCBVaW50OEFycmF5VHlwZSA9IDM5Ci1jb25zdCBVaW50OENsYW1wZWRB
cnJheVR5cGUgPSA0MAotY29uc3QgVWludDE2QXJyYXlUeXBlID0gNDEKLWNvbnN0IFVpbnQzMkFy
cmF5VHlwZSA9IDQyCi1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gNDMKLWNvbnN0IEZsb2F0NjRB
cnJheVR5cGUgPSA0NAorY29uc3QgSW50OEFycmF5VHlwZSA9IDM3Citjb25zdCBJbnQxNkFycmF5
VHlwZSA9IDM4Citjb25zdCBJbnQzMkFycmF5VHlwZSA9IDM5Citjb25zdCBVaW50OEFycmF5VHlw
ZSA9IDQwCitjb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSA0MQorY29uc3QgVWludDE2QXJy
YXlUeXBlID0gNDIKK2NvbnN0IFVpbnQzMkFycmF5VHlwZSA9IDQzCitjb25zdCBGbG9hdDMyQXJy
YXlUeXBlID0gNDQKK2NvbnN0IEZsb2F0NjRBcnJheVR5cGUgPSA0NQogCiBjb25zdCBGaXJzdEFy
cmF5VHlwZSA9IEludDhBcnJheVR5cGUKIGNvbnN0IExhc3RBcnJheVR5cGUgPSBGbG9hdDY0QXJy
YXlUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBhY2Rk
NGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzLi4zZGZjMjg1ZmU3OGMyZWM4NDgw
NTgzMmRmZjEwMjllZTgyNGNhZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6Z2V0UHJvdG90eXBl
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKikKIGJvb2wgSlNDZWxsOjppc0FueVdhc21DYWxsZWUoVk0m
IHZtKSBjb25zdAogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICByZXR1cm4gaW5oZXJp
dHModm0sIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaW5oZXJpdHModm0sIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6aW5mbygpKTsKKyAgICByZXR1cm4gaW5oZXJpdHModm0sIEpTV2Vi
QXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodGhpcyk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDZhOTgwYTgx
ODJjYWJiNjdlOGVmNjgxODhhZmJkZGFhMDk4NjAzZWMuLjk1MDkzNTZlYzZkZTU0ZTA5NmYwNjM5
ZDgzYjkwZGFlMWYzZGE4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTM0Niw0ICszNDYsOSBAQCBpbmxpbmUgSlNPYmplY3QqIEpTQ2Vs
bDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHJldHVybiB0b09iamVjdFNsb3coZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAoraW5s
aW5lIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY29uc3QgSlNDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBjZWxsLT50eXBlKCkgPT0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CmluZGV4IDRkN2VlNDk4MDYwOTcwMDhhZDM2NzI4MjFiMTMyMzEwNzdlYzNkZGUuLjYyZTM3NzJm
NDJiNDdhODk5YTQ4MDU2ZWRlOTQ1ZmRlN2U2OGZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAgICBKU1NjcmlwdEZldGNoZXJUeXBlLAogCisgICAg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwKKwogICAgIC8vIFRoZSBPYmplY3RUeXBlIHZhbHVl
IG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgSlNPYmpl
Y3QuCiAgICAgT2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4ZGMyN2E0
ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRhNWUxMDQ1
NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShW
TSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkg
eworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkp
KQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgICAgIGlm
IChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxhdGVk
RGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1wbCgp
OwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+
dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICB9
CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NTExNTQyYjc3ZGZjOGU2ZjJiZWFi
ZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVjODk0NGJkNDRmMTEyNWMxOWZlMTcy
NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDAsNyArMjQwLDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHdlYkFzc2Vt
Ymx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNhbGxlZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxl
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZS5zZXQoKnRoaXMs
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3NlbWJseVRvSlNDYWxs
ZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1ZjAyMzE4NDQ1OWNi
NjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNhM2QxM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcgKzMzNiw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDYWxsZWVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlOwot
ICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKICNlbmRpZgogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0ODksMTEgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2Fz
bUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihW
TSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0
aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAK
ICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLjlhMTVj
ZmEwY2ZlZjQ3MTMyNTdmOTFhMGEyMGI3OTgyZmNiMmFiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0ZpeFNTQS5oIgogI2lu
Y2x1ZGUgIkIzR2VuZXJhdGUuaCIKKyNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNpbmNs
dWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFs
dWUuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCkBAIC00OSw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgotI2luY2x1ZGUgIldhc21D
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNt
RnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC0yMTksNiArMjE5
LDEwIEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogCiAgICAgdm9pZCBlbWl0Q2hlY2tzRm9yTW9k
T3JEaXYoQjM6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmln
aHQpOwogCisgICAgVmFsdWUqIG1hdGVyaWFsaXplV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFz
aWNCbG9jayopOworICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYsIEJhc2lj
QmxvY2sqLCBWYWx1ZSopOworICAgIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
Y29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYsIEJh
c2ljQmxvY2sqKTsKKwogICAgIFZNJiBtX3ZtOwogICAgIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBtX2luZm87CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CkBAIC0yMjcsMzUgKzIzMSw2MiBAQCBj
bGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4m
IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRo
ZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGgu
CiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BS
OworICAgIEdQUlJlZyBtX3dhc21Db250ZXh0R1BSOwogICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNb
bnVtVHlwZXNdOwogICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRo
aXMgbGF6eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9
OwogCi1zdGF0aWMgVmFsdWUqIGxvYWRXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2lj
QmxvY2sqIGJsb2NrKQorVmFsdWUqIEIzSVJHZW5lcmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVs
cGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAg
ICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7
CisgICAgaWYgKHVzZUZhc3RUTFMoKSkgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCkpOworICAgICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwg
Q0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkp
OworICAgICAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRjaHBvaW50KTsKKyAgICB9CiAKLSAgICByZXR1
cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigpLCBwYXRj
aHBvaW50KTsKLX0KKyAgICAvLyBGSVhNRTogQmVjYXVzZSBXYXNtVG9XYXNtIGNhbGwgY2xvYmJl
cnMgd2FzbUNvbnRleHQgcmVnaXN0ZXIgYW5kIGRvZXMgbm90IHJlc3RvcmUgaXQsIHdlIG5lZWQg
dG8gcmVzdG9yZSBpdCBpbiB0aGUgY2FsbGVyIHNpZGUuCisgICAgLy8gVGhpcyBwcmV2ZW50cyB1
cyBmcm9tIHVzaW5nIEFyZ3VtZW50UmVnIHRvIHRoaXMgKGxvZ2ljYWxseSkgaW1tdXRhYmxlIHBp
bm5lZCByZWdpc3Rlci4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+
YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkp
OworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gZmFsc2U7CisgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgcGF0Y2hwb2ludC0+cmVz
dWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcobV93YXNtQ29udGV4dEdQUik7CisgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFsmXSAoQ0NhbGxIZWxwZXJzJiwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJikgeyB9KTsKKyAgICByZXR1cm4gcGF0Y2hwb2ludDsKK30KKwordm9p
ZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNp
Y0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKK3sKKyAgICBpZiAodXNlRmFzdFRMUygpKSB7Cisg
ICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOworICAgICAgICBpZiAoQ0Nh
bGxIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQor
ICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1
ZShhcmcsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKAorICAgICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6
OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICAg
ICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0KHBhcmFtc1swXS5ncHIoKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotc3RhdGljIHZvaWQgc3RvcmVXYXNtQ29u
dGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrLCBWYWx1ZSogYXJnKQotewor
ICAgIC8vIEZJWE1FOiBCZWNhdXNlIFdhc21Ub1dhc20gY2FsbCBjbG9iYmVycyB3YXNtQ29udGV4
dCByZWdpc3RlciBhbmQgZG9lcyBub3QgcmVzdG9yZSBpdCwgd2UgbmVlZCB0byByZXN0b3JlIGl0
IGluIHRoZSBjYWxsZXIgc2lkZS4KKyAgICAvLyBUaGlzIHByZXZlbnRzIHVzIGZyb20gdXNpbmcg
QXJndW1lbnRSZWcgdG8gdGhpcyAobG9naWNhbGx5KSBpbW11dGFibGUgcGlubmVkIHJlZ2lzdGVy
LgogICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0
Y2hwb2ludFZhbHVlPihwcm9jLCBCMzo6Vm9pZCwgT3JpZ2luKCkpOwotICAgIGlmIChDQ2FsbEhl
bHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmQoQ29uc3RyYWluZWRWYWx1ZShhcmcsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCi0gICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJ
ZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKCkpOwotICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHQo
cGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7CisgICAgRWZmZWN0cyBlZmZlY3RzID0gRWZm
ZWN0czo6bm9uZSgpOworICAgIGVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICBlZmZl
Y3RzLnJlYWRzID0gQjM6OkhlYXBSYW5nZTo6dG9wKCk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cyA9IGVmZmVjdHM7CisgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQobV93
YXNtQ29udGV4dEdQUikpOworICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX2luc3RhbmNlVmFsdWUs
IFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihb
Jl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtKSB7CisgICAgICAgIGppdC5tb3ZlKHBhcmFtWzBdLmdwcigpLCBtX3dhc21Db250ZXh0R1BS
KTsKKyAgICB9KTsKIH0KIAogQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgV2FzbUlu
dGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKQpAQCAtMjgzLDcgKzMxNCwxMCBAQCBCM0lSR2Vu
ZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGlu
Zm8sIFByb2NlZHVyZSYgcAogICAgIC8vIEZJWE1FIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHBp
biByZWdpc3RlcnMgaGVyZSBpZiB0aGVyZSdzIG5vIG1lbW9yeS4gSXQgbWFrZXMgd2FzbSAtPiB3
YXNtIHRodW5rcyBzaW1wbGVyIGZvciBub3cuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjY2MjMKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJl
Z3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgIG1fbWVtb3J5QmFzZUdQUiA9IHBp
bm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgbV93YXNtQ29udGV4dEdQUiA9IHBpbm5l
ZFJlZ3Mud2FzbUNvbnRleHRQb2ludGVyOwogICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX21lbW9y
eUJhc2VHUFIpOworICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICBtX3Byb2MucGluUmVn
aXN0ZXIobV93YXNtQ29udGV4dEdQUik7CiAgICAgQVNTRVJUKCFwaW5uZWRSZWdzLnNpemVSZWdp
c3RlcnNbMF0uc2l6ZU9mZnNldCk7CiAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVncy5z
aXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3RlcjsKICAgICBmb3IgKGNvbnN0IFBpbm5lZFNpemVS
ZWdpc3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnMpCkBAIC0yOTks
NyArMzMzLDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKIAogICAgIHdhc21DYWxsaW5nQ29u
dmVudGlvbigpLnNldHVwRnJhbWVJblByb2xvZ3VlKCZjb21waWxhdGlvbi0+d2FzbUNhbGxlZU1v
dmVMb2NhdGlvbiwgbV9wcm9jLCBPcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOwogCi0gICAgbV9p
bnN0YW5jZVZhbHVlID0gbG9hZFdhc21Db250ZXh0KG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwor
ICAgIG1faW5zdGFuY2VWYWx1ZSA9IG1hdGVyaWFsaXplV2FzbUNvbnRleHQobV9wcm9jLCBtX2N1
cnJlbnRCbG9jayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBAIC0zMDcsMTIg
KzM0MSwxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZhbHVlKiBzaXplOwog
fTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2
bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQor
c3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBWYWx1ZSog
bWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwg
cG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUo
bG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0gc2l6
ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5tZW1v
cnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24gdGhp
cyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8
SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1v
cnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09IHNp
emVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKICAgICBNZW1v
cnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0LmJhc2UgPSBibG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgbWVtb3J5
T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSgpKTsKICAgICByZXN1
bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIEludDY0
LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZlNp
emUoKSk7CkBAIC0zMjAsOSArMzU0LDkgQEAgc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1l
bW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxT
dGF0ZShjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2UsIFBy
b2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCit2b2lkIEIzSVJHZW5lcmF0b3I6OnJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1v
cnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykK
IHsKLSAgICBzdG9yZVdhc21Db250ZXh0KHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CisgICAgcmVz
dG9yZVdhc21Db250ZXh0KHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CiAKICAgICBpZiAoISFtZW1v
cnkpIHsKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0gJlBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CkBAIC00MTksMTIgKzQ1MywxMSBAQCBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogCiBhdXRvIEIzSVJH
ZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBpbnQzMl90ICgqZ3Jvd01lbW9y
eSkgKEV4ZWNTdGF0ZSosIGludDMyX3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBk
ZWx0YSkgLT4gaW50MzJfdCB7CisgICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpIChFeGVjU3RhdGUq
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQsIGludDMyX3QgZGVsdGEpIC0+IGlu
dDMyX3QgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7Ci0gICAgICAgIEpTV2ViQXNzZW1i
bHlNZW1vcnkqIHdhc21NZW1vcnkgPSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAgIEpTV2Vi
QXNzZW1ibHlNZW1vcnkqIHdhc21NZW1vcnkgPSB3YXNtQ29udGV4dC0+bWVtb3J5KCk7CiAKICAg
ICAgICAgaWYgKGRlbHRhIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ0MCw3ICs0
NzMsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUg
ZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKICAgICByZXN1bHQgPSBtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIE9yaWdpbigpLAogICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJvYywgT3Jp
Z2luKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4oZ3Jvd01lbW9yeSkpLAotICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBP
cmlnaW4oKSksIGRlbHRhKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBtX2luc3RhbmNlVmFs
dWUsIGRlbHRhKTsKIAogICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1faW5mby5t
ZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CiAKQEAgLTQ0
OSw3ICs0ODIsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lv
blR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKIGF1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVz
dWx0CiB7Ci0gICAgYXV0byBtZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1fdm0s
IG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgYXV0byBtZW1v
cnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBt
X2N1cnJlbnRCbG9jayk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1ZSA9IDE2
OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxIDw8IHNoaWZ0VmFs
dWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVjdC4iKTsK
QEAgLTg5Miw2ICs5MjUsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3Qg
ZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsCiAgICAgICAgICAgICBb
Jl0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgewogICAgICAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBwYXRj
aHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwYXRj
aHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZSgpKTsK
ICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3VubGlua2VkV2FzbVRv
V2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbCgpOwpAQCAtOTA3LDYgKzk0
MSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4
LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgICAgIFsmXSAoUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy53cml0ZXNQaW5uZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVj
dHMucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKCkpOwogICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1
bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CkBAIC05MzUsNiArOTcwLDggQEAgYXV0byBC
M0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSogc2lnbmF0dXJlLAogICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQpIHsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5l
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5l
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgLy8gRG8gbm90IGNsb2JiZXIgcGlubmVkIHJlZ2lz
dGVycy4KKwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CkBAIC0x
MDEzLDkgKzEwNTAsOSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25z
dCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgU2lnbmF0dXJlSW5kZXggcwogICAgICAgICBbJl0gKFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgewogICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0
ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZSgpKTsKIAogICAgICAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotCiAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgICAgIGppdC5jYWxsKHBhcmFtc1tyZXR1cm5UeXBlID09IFZvaWQgPyAw
IDogMV0uZ3ByKCkpOwpAQCAtMTA4MCwxMSArMTExNyw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpT
VG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2Fz
bUluCiAgICAgICAgICpsaW5rZWRDYWxsZWVNb3ZlID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNh
bGxlZU1vdmVMb2NhdGlvbik7CiAgICAgfSk7CiAKLSAgICBSZWdpc3RlclNldCB0b1NhdmU7CiAg
ICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJ
bmZvOjpnZXQoKTsKLSAgICB0b1NhdmUuc2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXIp
OwotICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVycykKLSAgICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVSZWdp
c3Rlcik7CisgICAgUmVnaXN0ZXJTZXQgdG9TYXZlID0gcGlubmVkUmVncy50b1NhdmUoKTsKIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB1bnNpZ25lZCB0b1NhdmVTaXplID0gdG9TYXZlLm51
bWJlck9mU2V0R1BScygpOwpAQCAtMTE5MSwxMCArMTIyNSwyNCBAQCBzdGF0aWMgdm9pZCBjcmVh
dGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQs
IFdhc21JbgogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRklYTUU6IEpTV2ViQXNzZW1ibHlD
YWxsZWUgc2hvdWxkIGhhdmUgYSBwb2ludGVyIHRvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBpbnN0
ZWFkLgorICAgIEdQUlJlZyB3YXNtQ29udGV4dCA9IHBpbm5lZFJlZ3Mud2FzbUNvbnRleHRQb2lu
dGVyOworICAgIGlmICghdXNlRmFzdFRMUygpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHdhc21Db250
ZXh0KTsKKyAgICAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoTWFy
a2VkQmxvY2s6OmJsb2NrTWFzayksIHdhc21Db250ZXh0KTsKKyAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZW
TSgpKSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Mod2FzbUNvbnRleHQsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgd2FzbUNvbnRleHQp
OworICAgIH0KKwogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNl
TWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRX
YXNtQ29udGV4dChiYXNlTWVtb3J5KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOworCisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwor
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnks
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwor
ICAgICAgICB9CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXpl
UmVnaXN0ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwogICAgICAg
ICBBU1NFUlQoIXNpemVSZWdzWzBdLnNpemVPZmZzZXQpOyAvLyBUaGUgZm9sbG93aW5nIGNvZGUg
YXNzdW1lcyB3ZSBzdGFydCBhdCAwLCBhbmQgY2FsY3VsYXRlcyBzdWJzZXF1ZW50IHNpemUgcmVn
aXN0ZXJzIHJlbGF0aXZlIHRvIDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmlu
ZGluZy5jcHAKaW5kZXggZmI2NzY1N2VhNDBjZWNkMGI4Njg4MGViYjI0YzdlYTc5MTNmOWMzMy4u
ZTBjYWIxZjZkNGQ3OTgxYmM4ZGM3MDlhZTJhZmY4ZmIyNjA5NDhhNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQu
aCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewpAQCAtNjYsOCArNjUsNiBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAK
ICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmU2NChKSVQ6OlRy
dXN0ZWRJbW0zMigwKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpKSk7IC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0gICAgaml0LnN0b3JlUHRyKEpJVDo6
VHJ1c3RlZEltbVB0cih2bS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklUOjpBZGRy
ZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBz
dGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0KIAogICAgIHsKICAgICAgICAg
Ym9vbCBoYXNCYWRJNjRVc2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5MCwyMiBAQCBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNh
bGxMaW5rSW5mb3MsCiAgICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsKICAgICAgICAgICAgIGpp
dC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAgICAg
ICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKKworICAgICAgICAgICAgLy8gU3RvcmUgQ2FsbGVlLgorICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjphcmd1bWVudEdQUjIs
IEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOworCiAgICAgICAg
ICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbCgpOwogICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIoKTsKIAotICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3Rh
dGUqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMpIC0+IHZvaWQgeworICAgICAgICAgICAgdm9pZCAo
KnRocm93QmFkSTY0KShFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChF
eGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIC0+IHZv
aWQgewogICAgICAgICAgICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICAgICAg
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1
Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dlZCBh
cyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsKICAg
ICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3Ip
OwogICAgICAgICAgICAgICAgIH0KQEAgLTI1Miw2ICsyNTUsMTAgQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlu
a0luZm9zLAogICAgICAgICB9CiAgICAgfQogCisgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LnN0b3JlUHRyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpKSk7CisKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVnVDA7
IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93LgogICAg
IEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoaW1wb3J0SlNDZWxsR1BS
UmVnKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4NGNkNGY1MjY2YTM4ZTgyMTU0YTcxZDcwNTJi
YWFlZTQ4OTQyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCi0K
LSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLSNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgPG11
dGV4PgotI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1KU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCi17Ci0jaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKLSAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkp
Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0
aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYK
LSAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICByZXR1cm4g
dm0ud2FzbUNvbnRleHQ7Ci19Ci0KLXZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCi17Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkK
LSAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIF9wdGhy
ZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0
PHZvaWQqPihpbnN0YW5jZSkpOwotI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0
ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5NzczCi0gICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMWM1ZThhMThkMmIwNzQ4MWVlNjAwZjhiNzAxZTUzYzYzOWU1ZmNjNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOwotY2xhc3MgVk07Ci0KLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
bG9hZFdhc21Db250ZXh0KFZNJik7Ci12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqKTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA4YWMwODY2Mjc4YjUxMzkzYjY2OWVhMDlhN2I1
NDhkNmQ5YTc2YjE0Li45OWU3ZDJiY2QyOTk0ZGNiZTdmNTU4ODlhYjM3ZGU3MGVmYTRkNzBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1h
dGlvbi5jcHAKQEAgLTM0LDQzICszNCw1NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCitzdGF0aWMgVmVjdG9yPEdQUlJlZz4gZ2V0UGlubmVkUmVnaXN0ZXJzKHVuc2ln
bmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycykKK3sKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdp
c3RlcnM7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMu
Zm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAg
aWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0
ZXJzKCkuZ2V0KHJlZykpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC0tcmVtYWluaW5n
UGlubmVkUmVnaXN0ZXJzOworICAgICAgICByZWdpc3RlcnMuYXBwZW5kKGdwcik7CisgICAgfSk7
CisgICAgcmV0dXJuIHJlZ2lzdGVyczsKK30KKwogY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQ
aW5uZWRSZWdpc3RlckluZm86OmdldCgpCiB7CiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxQaW5uZWRSZWdpc3RlckluZm8+IHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mbzsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZzsKICAgICBzdGQ6
OmNhbGxfb25jZShzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnLCBbXSAoKSB7CiAgICAgICAg
IFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwotICAgICAgICBH
UFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRl
ciA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50ZXIgPSBJ
bnZhbGlkR1BSUmVnOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3Jl
IHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyLCBhbmQgd2Ugc2hvdWxkIGFsbG93IGRpZmZl
cmVudAogICAgICAgICAvLyAgICAgICAgV2ViQXNzZW1ibHkuSW5zdGFuY2UgdG8gaGF2ZSBkaWZm
ZXJlbnQgcGlucy4gUmlnaHQgbm93IHdlIHRha2UgYSB2ZWN0b3Igd2l0aCBvbmx5IG9uZSBlbnRy
eS4KICAgICAgICAgLy8gICAgICAgIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lz
dGVyLCB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVhY2ggbG9hZCBzaXplIGNsYXNzLgogICAgICAgICAv
LyAgICAgICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
OTUyCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKLSAgICAg
ICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgp
ICsgMTsKLSAgICAgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3Rl
cnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgIGlmICghcmVnLmlzR1BSKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5n
cHIoKTsKLSAgICAgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lz
dGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgewotICAg
ICAgICAgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOwotICAgICAgICAgICAgICAgIHJl
bWFpbmluZ1Bpbm5lZFJlZ2lzdGVycy0tOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWluaW5n
UGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIEFTU0VSVCgh
cmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJ
bmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlcik7
CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMu
c2l6ZSgpICsgMTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICArK251
bWJlck9mUGlubmVkUmVnaXN0ZXJzOworICAgICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdz
ID0gZ2V0UGlubmVkUmVnaXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0ZXJzKTsKKworICAgICAg
ICBiYXNlTWVtb3J5UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKKyAgICAgICAgaWYg
KCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICB3YXNtQ29udGV4dFBvaW50ZXIgPSBwaW5uZWRS
ZWdzLnRha2VMYXN0KCk7CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNpemVzLnNpemUoKSA9PSBw
aW5uZWRSZWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaW5u
ZWRTaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdpc3RlcnMuYXBwZW5kKHsg
cGlubmVkUmVnc1tpXSwgcGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJl
Z2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBv
aW50ZXIsIHdhc21Db250ZXh0UG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGlj
UGlubmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5l
ZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0
ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5l
ZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0
ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50ZXIp
CiAgICAgOiBzaXplUmVnaXN0ZXJzKFdURk1vdmUoc2l6ZVJlZ2lzdGVycykpCiAgICAgLCBiYXNl
TWVtb3J5UG9pbnRlcihiYXNlTWVtb3J5UG9pbnRlcikKKyAgICAsIHdhc21Db250ZXh0UG9pbnRl
cih3YXNtQ29udGV4dFBvaW50ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKaW5kZXggNmRlMDcwYTEwNDUyZmY2YmIz
YzVjMjUwNDExZjEwZTkxMzg5ZTRhMi4uMTE3OWI1Zjc1MDJlMWYyNmIwNmNhZDc5NjA4ZmRhMWNh
ZTQyYTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CiAKICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNs
dWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VDb3VudC5oIgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KQEAgLTQzLDggKzQ0LDIwIEBAIHN0cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJ
bmZvIHsKIHN0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8gewogICAgIFZlY3RvcjxQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwogICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRl
cjsKKyAgICBHUFJSZWcgd2FzbUNvbnRleHRQb2ludGVyOwogICAgIHN0YXRpYyBjb25zdCBQaW5u
ZWRSZWdpc3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlu
bmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5uZWRSZWdpc3RlckluZm8o
VmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywgR1BSUmVnKTsKKworICAg
IFJlZ2lzdGVyU2V0IHRvU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICBSZWdpc3RlclNldCBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5zZXQoYmFzZU1lbW9yeVBvaW50ZXIpOworICAgICAgICBp
ZiAod2FzbUNvbnRleHRQb2ludGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXN1
bHQuc2V0KHdhc21Db250ZXh0UG9pbnRlcik7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5m
byA6IHNpemVSZWdpc3RlcnMpCisgICAgICAgICAgICByZXN1bHQuc2V0KGluZm8uc2l6ZVJlZ2lz
dGVyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiB9OwogCiBjbGFzcyBNZW1vcnlJ
bmZvcm1hdGlvbiB7CkBAIC03Myw2ICs4NiwxNSBAQCBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7
CiAgICAgYm9vbCBtX2lzSW1wb3J0IHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSBib29sIHVzZUZh
c3RUTFMoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgcmV0dXJuIE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShX
QVNNKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggMWMxMWIwY2E2NWM5MTc0MmY4ZTQ4MTNjMjRkOTc1ZjY1
ZWViYWExOC4uM2I3ZjdiODc0NmZmOGQ0MjE0MDE3OGNhN2I1ZWVhZWQwMzQ2OTJjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04MSw2
ICs4Miw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKIAogICAgIG1fY29kZUJsb2NrLnNldCh2
bSwgdGhpcywgbW9kdWxlLT5jb2RlQmxvY2soKSk7CiAgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3Quc2V0KHZtLCB0aGlzLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIG1fY2FsbGVlLnNl
dCh2bSwgdGhpcywgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUodm0sIHZtLndlYkFzc2Vt
Ymx5VG9KU0NhbGxlZVN0cnVjdHVyZS5nZXQoKSwgdGhpcykpOwogICAgIHB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBvcnRzIiksIG1vZHVsZU5hbWVzcGFjZU9i
amVjdCwgTm9uZSk7CiB9CiAKQEAgLTk5LDYgKzEwMSw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3Qp
OwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbWVtb3J5KTsKICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhp
c09iamVjdC0+bW9kdWxlKCktPm1vZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX251bUltcG9ydEZ1bmN0
aW9uczsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW1wb3J0RnVu
Y3Rpb24oaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBlMjI4NDk2OTY3MjA1YTMxMzZjODgzYmJkZTMyNmFk
YmM3MTExMzBkLi40MmFhMWIzNWQxYjJhNmY5MzliOWQzMjk2NmI1ZjM3ZTRlZTY0MWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlOworY2xhc3MgV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOwogCiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgpAQCAtOTcsNiArOTgsNyBAQCBjbGFz
cyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9yeSgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fbWVtb3J5KTsgfQogICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZUYWJsZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFz
c2VtYmx5SW5zdGFuY2UsIG1fdGFibGUpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkNhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2Us
IG1fY2FsbGVlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxzKCkgeyBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9nbG9iYWxzKTsg
fQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbnMoKSB7IHJldHVybiBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KT4oc2l6
ZW9mKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRP
ZkltcG9ydEZ1bmN0aW9uKHNpemVfdCBpbXBvcnRGdW5jdGlvbk51bSkgeyByZXR1cm4gb2Zmc2V0
T2ZJbXBvcnRGdW5jdGlvbnMoKSArIGltcG9ydEZ1bmN0aW9uTnVtICogc2l6ZW9mKHNpemVvZihX
cml0ZUJhcnJpZXI8SlNDZWxsPikpOyB9CkBAIC0xMTcsNiArMTE5LDcgQEAgY2xhc3MgSlNXZWJB
c3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBXcml0
ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TWVtb3J5PiBtX21lbW9yeTsKICAgICBX
cml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPiBtX3RhYmxlOworICAgIFdyaXRlQmFycmll
cjxXZWJBc3NlbWJseVRvSlNDYWxsZWU+IG1fY2FsbGVlOwogICAgIE1hbGxvY1B0cjx1aW50NjRf
dD4gbV9nbG9iYWxzOwogICAgIHVuc2lnbmVkIG1fbnVtSW1wb3J0RnVuY3Rpb25zOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKaW5kZXggZDFhODAxYzNlYzkxMWExOWYwNmFiNzlmOThhMzM5MDFmNWM1N2M1MS4uNTY0
MzMzYjM5OTI5ZTZmOTA5ZDU3ODY1MmE1ODM5ZmJlMTk4NWFkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTM5
LDE1ICszOSwzMyBAQAogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiUHJvdG9D
YWxsRnJhbWUuaCIKICNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAj
aW5jbHVkZSAiV2FzbUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRl
IDx3dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlGdW5jdGlvbjo6c19pbmZv
ID0geyAiV2ViQXNzZW1ibHlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlGdW5jdGlvbikgfTsKIAorc3RhdGljIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJiB2bSkKK3sKKyNpZiBFTkFCTEUoRkFT
VF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU1dlYkFzc2VtYmx5SW5zdGFuY2UqPihfcHRocmVh
ZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyNlbmRpZgorICAg
IHJldHVybiB2bS53YXNtQ29udGV4dDsKK30KKworc3RhdGljIHZvaWQgc3RvcmVXYXNtQ29udGV4
dChWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit7CisjaWYgRU5BQkxF
KEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkp
CisgICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tF
WSwgYml0d2lzZV9jYXN0PHZvaWQqPihpbnN0YW5jZSkpOworI2VuZGlmCisgICAgdm0ud2FzbUNv
bnRleHQgPSBpbnN0YW5jZTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMjEsNiArMTM5LDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3Vt
ZW50LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdp
dGggdGhpcyBlbnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5l
cmF0ZWQgYnkgQjMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0
ODYKKyAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byBtYWtlIGxvYWRXYXNtQ29udGV4dCBh
bmQgc3RvcmVXYXNtQ29udGV4dCBuby1vcCBpZiB3ZSB1c2UgcGlubmVkIHJlZ2lzdGVycy4KKyAg
ICAvLyBIb3dldmVyLCB3ZSB1c2UgVk0ud2FzbUNvbnRleHQgZmllbGQgdG8gcGFzcyBpbnN0YW5j
ZSB0byB3YXNtIGZ1bmN0aW9uJ3MgSlMgZ2x1ZSBjb2RlLgorICAgIC8vIE9uY2Ugd2Ugc3RhcnQg
dXNpbmcgdXN1YWwgV2ViQXNzZW1ibHlGdW5jdGlvbiBhcyBjYWxsZWUsIHdlIGNhbiByZXRyaWV2
ZSBpbnN0YW5jZSBmcm9tIHRoYXQuCiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNX
ZWJBc3NlbWJseUluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKICAgICBzdG9yZVdhc21D
b250ZXh0KHZtLCB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOwogICAgIEFTU0VSVCh3YXNtRnVu
Y3Rpb24tPmluc3RhbmNlKCkpOwpAQCAtMTUzLDYgKzE3NCw3IEBAIFdlYkFzc2VtYmx5RnVuY3Rp
b24qIFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPndlYkFzc2Vt
Ymx5RnVuY3Rpb25TdHJ1Y3R1cmUoKTsKICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5RnVuY3Rpb24+KHZtLmhl
YXApKSBXZWJBc3NlbWJseUZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgd2Fz
bUVudHJ5cG9pbnQsIHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRp
b24odm0sIGV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSwgaW5zdGFuY2UsIGpzRW50cnlwb2ludCwg
d2FzbUVudHJ5cG9pbnQpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWZ1bmN0aW9uLT5pc0xh
cmdlQWxsb2NhdGlvbigpLCAiV2ViQXNzZW1ibHlGdW5jdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVk
IG5vdCBpbiBsYXJnZSBhbGxvY2F0aW9uIHNpbmNlIGl0IGlzIEpTQ2FsbGVlLiIpOwogICAgIHJl
dHVybiBmdW5jdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKaW5kZXggNGU4OTFhMDlhMjBlZmEyZjk4
OTg1ZDk3OWNhOWY1ZDRlODEzMDJhZi4uNjIwM2FhZGM5NjI5YWRhMWE4OGQ4OTQwM2U4MzU1YTcz
YzgzOTI0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCkBAIC0yOSwyMSArMjksMjIgQEAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseUluc3RhbmNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUi
LCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkg
fTsKIAotV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBX
ZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQogewogICAgIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZSogY2FsbGVlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlU
b0pTQ2FsbGVlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBzdHJ1Y3R1cmUp
OwotICAgIGNhbGxlZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGNhbGxlZS0+ZmluaXNoQ3Jl
YXRpb24odm0sIGluc3RhbmNlKTsKICAgICByZXR1cm4gY2FsbGVlOwogfQogCiBTdHJ1Y3R1cmUq
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhXZWJBc3NlbWJseVRv
SlNDYWxsZWVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZTo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCkBAIC01MSwxNSArNTIsMTkgQEAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3Nl
bWJseVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9p
ZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IG1faW5zdGFuY2Uuc2V0KHZtLCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+V2ViQXNzZW1i
bHlUb0pTQ2FsbGVlOjp+V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKCk7CisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1faW5zdGFuY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKaW5k
ZXggNDk2Yzg4NTc2YzM5ZjcyMzI3MjM5OGE1NjY1YzkwNGNjNWMxYjEyMy4uMDRkZWFkZGRiMWVj
Y2QyY2FlMjQ4Mjk1NzgxMzhmM2FjMGJlMmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKQEAgLTMxLDIxICszMSwy
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlIDog
cHVibGljIEpTQ2VsbCB7CitjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisKK2NsYXNzIFdl
YkFzc2VtYmx5VG9KU0NhbGxlZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAg
IHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0g
ICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRy
dWU7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogaW5zdGFuY2UoKSB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAgICBXZWJBc3NlbWJseVRvSlND
YWxsZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKKworICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9D
aGFuZ2VMb2cKaW5kZXggOGI5M2Y4NjNjNDEwZDJjZTNjNzEyMDhiODNkMGFmZDI3YzE1ZjA4MS4u
NjQ1OTVlOWVjNzY2ZGQ5ZTNlYzNmMzMyNzExMzFhYjY1Y2M3OTc5ZiAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogYWRkIGZhbGxiYWNrIHRv
IHVzZSBwaW5uZWQgcmVnaXN0ZXIgdG8gbG9hZC9zdG9yZSBzdGF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEIzIGRvY3VtZW50IGFib3V0
IGltbXV0YWJsZSBwaW5uZWQgcmVnaXN0ZXIgYW5kIEFyZ3VtZW50UmVnLgorCisgICAgICAgICog
ZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbDoKKwogMjAxNy0wMy0xMSAg
Sm9uIERhdmlzICA8am9uZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFN3aWZ0IHN5bnRheCBo
aWdobGlnaHRpbmcgdG8gd2Via2l0Lm9yZwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9y
Zy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sIGIvV2Vic2l0ZXMvd2Vi
a2l0Lm9yZy9kb2NzL2IzL2ludGVybWVkaWF0ZS1yZXByZXNlbnRhdGlvbi5odG1sCmluZGV4IDIw
YjU5YjVhZTFmNjU1OWFhNTgzMDZiOTNlMjZkMTdiMDMwYTc1MTUuLjUxNTBiNTk4YzRkOTJlMjdk
ODljODY0YWY4ZjI1MTg5NDkwMjQ5ZDQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcv
ZG9jcy9iMy9pbnRlcm1lZGlhdGUtcmVwcmVzZW50YXRpb24uaHRtbAorKysgYi9XZWJzaXRlcy93
ZWJraXQub3JnL2RvY3MvYjMvaW50ZXJtZWRpYXRlLXJlcHJlc2VudGF0aW9uLmh0bWwKQEAgLTIz
Nyw3ICsyMzcsOCBAQAogICAgICAgPGR0PkludFB0cnxEb3VibGUgQXJndW1lbnRSZWcoJXJlZ2lz
dGVyKTwvZHQ+CiAgICAgICA8ZGQ+UmV0dXJucyB0aGUgdmFsdWUgdGhhdCB0aGUgZ2l2ZW4gcmVn
aXN0ZXIgaGFkIGF0IHRoZSBwcm9sb2d1ZSBvZiB0aGUgcHJvY2VkdXJlLiAgSXQKICAgICAgICAg
cmV0dXJucyBJbnRQdHIgZm9yIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgYW5kIERvdWJsZSBm
b3IgRlBScy4gIE11c3QgdXNlIHRoZQotICAgICAgICBBcmd1bWVudFJlZ1ZhbHVlIGNsYXNzLjwv
ZGQ+CisgICAgICAgIEFyZ3VtZW50UmVnVmFsdWUgY2xhc3MuIEl0IGNhbiBiZSB1c2VkIHRvIHJl
YWQgYSBwaW5uZWQgcmVnaXN0ZXIgd2hpY2ggaXMgbm90IGNsb2JiZXJlZAorICAgICAgICBpbnNp
ZGUgdGhlIHByb2NlZHVyZS48L2RkPgogCiAgICAgICA8ZHQ+SW50UHRyIEZyYW1lUG9pbnRlcigp
PC9kdD4KICAgICAgIDxkZD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZnJhbWUgcG9pbnRlciBy
ZWdpc3Rlci4gIEIzIHByb2NlZHVyZXMgYWx3YXkgdXNlIGEgZnJhbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305604</attachid>
            <date>2017-03-28 10:55:08 -0700</date>
            <delta_ts>2017-03-28 11:09:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170329025507.patch</filename>
            <type>text/plain</type>
            <size>69337</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
M2FkNDRiNDBiOGJjOTA5NmVjZmI1NzRhNDc2ODk5N2E4NjdhNDUyLi41YjM5MGFiZWRjZjE2M2My
YmJlZDczMThmOWJhZmUwMDdmYzIyNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IGFkZCBmYWxsYmFjayB0byB1c2UgcGlubmVk
IHJlZ2lzdGVyIHRvIGxvYWQvc3RvcmUgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBwaW5uZWQgcmVnaXN0
ZXIgdG8gaG9sZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UsCisgICAgICAgIHdoaWNoIGlzIHVzZWQg
dG8gcmVwcmVzZW50IHRoZSBjb250ZXh0IG9mIHJ1bm5pbmcgV2FzbSBjb2RlLgorICAgICAgICBX
aGlsZSB3ZSB1c2UgZmFzdCBUTFMgdG8gaG9sZCB0aGUgY29udGV4dCBpbiBtYWNPUywgd2UgZG8g
bm90IGhhdmUKKyAgICAgICAgYW55IHN5c3RlbSByZXNlcnZlZCBmYXN0IFRMUyBzbG90IGluIHRo
ZSBvdGhlciBzeXN0ZW1zLiBUaGlzIHBpbm5lZAorICAgICAgICByZWdpc3RlciBhcHByb2FjaCBp
cyB1c2VkIGluIHRoZXNlIHN5c3RlbXMuIFRoZXNlIGNoYW5nZXMgZGVjb3VwbGUKKyAgICAgICAg
Vk0gZnJvbSBXYXNtIG1vZHVsZSB0byBtYWtlIFdhc20gbW9kdWxlIHBvc2l0aW9uIGluZGVwZW5k
ZW50IGNvZGUuCisKKyAgICAgICAgV2hpbGUgdXNpbmcgZmFzdCBUTFMgY291bGQgYmUgYmVuZWZp
Y2lhbCBpbiB4NjQgc3lzdGVtcyB3aGljaCBudW1iZXIgb2YKKyAgICAgICAgcmVnaXN0ZXJzIGlz
IHJlbGF0aXZlbHkgc21hbGwsIHBpbm5lZCByZWdpc3RlciBhcHByb2FjaCBjb3VsZCBiZQorICAg
ICAgICBiZW5lZmljaWFsIGluIEFSTTY0IHdoaWNoIGhhcyBwbGVudHkgb2YgcmVnaXN0ZXJzLiBJ
biBtYWNPUywgd2UgY2FuCisgICAgICAgIHN3aXRjaCB0aGUgaW1wbGVtZW50YXRpb24gd2l0aCB0
aGUgcnVudGltZSBmbGFnLiBUaHVzIG1hY09TIHBvcnQgY2FuCisgICAgICAgIGNvbXBhcmUgdGhl
IHBlcmZvcm1hbmNlIGFuZCBkZWNpZGUgd2hpY2ggaW1wbGVtZW50YXRpb24gaXMgdXNlZCBhZnRl
cgorICAgICAgICBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
Om9mZnNldE9mVk0pOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcik6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5T3duZXIp
OgorICAgICAgICAoSlNDOjpsaW5rRm9yKToKKyAgICAgICAgKEpTQzo6bGlua1BvbHltb3JwaGlj
Q2FsbCk6CisgICAgICAgIChKU0M6OmlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dF
eGNlcHRpb25Gcm9tV2FzbVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FueVdhc21DYWxsZWUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1dlYkFz
c2VtYmx5VG9KU0NhbGxlZSk6CisgICAgICAgICogcnVudGltZS9KU1R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5j
dGlvbk5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06Ondhc21Db250
ZXh0T2Zmc2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6bWF0ZXJpYWxpemVXYXNtQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXYXNtQ29udGV4dCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpXYXNtOjpnZXRNZW1vcnlCYXNlQW5kU2l6ZSk6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
bG9hZFdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6c3RvcmVXYXNt
Q29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OnJlc3RvcmVXZWJBc3NlbWJs
eUdsb2JhbFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21CaW5kaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSnMpOgorICAgICAgICAqIHdhc20vV2FzbUNvbnRl
eHQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdhc20vV2FzbUNvbnRleHQuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OmdldFBpbm5lZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJl
Z2lzdGVySW5mbzo6Z2V0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZv
OjpQaW5uZWRSZWdpc3RlckluZm8pOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6dG9TYXZlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6dXNlRmFzdFRMUyk6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNl
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mQ2FsbGVl
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHlNb2R1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5oOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxl
OjpjYWxsZWUpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OmxvYWRXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNv
bnRleHQpOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveSk6
IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoKKwog
MjAxNy0wMy0yNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQXNzZW1ibHk6IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBiZWxvbmdzIGluIEphdmFTY3Jp
cHRDb3JlL3dhc20vanMgbm90IEphdmFTY3JpcHRDb3JlL3dhc20KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA1YWY3MTRlMDk1MDlmOGE1ZWNmMTY0YWFjM2FmOWE5NDBiMjEy
NzZiLi4xM2JkM2EwMGIwOGFkNDdhMGQzZTAzM2M0YTRkNmQ3MjIzODMzMTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzQsNyArOTM0LDYgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAogICAgIHdhc20v
V2FzbUJpbmRpbmcuY3BwCiAgICAgd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwCi0gICAg
d2FzbS9XYXNtQ29udGV4dC5jcHAKICAgICB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3Bw
CiAgICAgd2FzbS9XYXNtRm9ybWF0LmNwcAogICAgIHdhc20vV2FzbU1lbW9yeS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmVjYTVmZmRjM2EwMDY0M2QzMmE5NDgxMWMzNDE3
MTdlNWIxMDQ2YS4uMzM0NGViNzI4YjYyMzMyM2QyZjc3NzlmMmE1YTEyMDU0N2E0YTVhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwODYsOCArMjA4Niw2IEBACiAJCUFEMkZD
QzMwMURCODNENDkwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzJFMURCODM5RjcwMEIzRTczNiAv
KiBKU1dlYkFzc2VtYmx5LmNwcCAqLzsgfTsKIAkJQUQyRkNDMzExREI4M0Q0OTAwQjNFNzM2IC8q
IEpTV2ViQXNzZW1ibHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi87IH07
CiAJCUFEMkZDQzMzMURDNDA0NTQwMEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZDQzMyMURDNDA0NTMwMEIz
RTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLzsgfTsKLQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3
IC8qIFdhc21Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5jcHAgKi87
IH07Ci0JCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ0MTJCMzIxRTdCMkU4QTAw
OEFGMTU3IC8qIFdhc21Db250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQUQ0MjUyNTExRTVEMEUxNDAwOUQyQTk3IC8qIEZ1bGxDb2RlT3Jp
Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDQy
NTI1MDFFNUQwREVCMDA5RDJBOTcgLyogRnVsbENvZGVPcmlnaW4uaCAqLzsgfTsKIAkJQUQ0MjUy
NTMxRTVEMEY0NzAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAv
KiBGdWxsQ29kZU9yaWdpbi5jcHAgKi87IH07CiAJCUFENDkzN0MzMUREQkU2MTQwMDc3QzgwNyAv
KiBBYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRDQ5MzdDMTFEREJFNjBBMDA3N0M4MDcgLyogQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwICovOyB9OwpAQCAtNDY2MCw4ICs0NjU4LDYgQEAKIAkJQUQyRkNDMkUxREI4
MzlGNzAwQjNFNzM2IC8qIEpTV2ViQXNzZW1ibHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNXZWJBc3NlbWJseS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUFEMkZDQzJGMURCODM5RjcwMEIzRTczNiAvKiBKU1dlYkFzc2VtYmx5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViQXNzZW1ibHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUQyRkNDMzIxREM0MDQ1MzAwQjNFNzM2IC8qIFdhc21Gb3JtYXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbUZvcm1hdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMxMUU3QjJFOEEwMDhBRjE1NyAv
KiBXYXNtQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
YXNtQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFENDEyQjMyMUU3
QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBRDQx
MkIzNTFFN0I1N0MwMDA4QUYxNTcgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlSWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUQ0MjUyNTAxRTVE
MERFQjAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bGxDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFENDI1MjUyMUU1RDBGMjIwMDlEMkE5NyAvKiBGdWxsQ29kZU9yaWdpbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsQ29kZU9yaWdpbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjY5LDggKzYyNjUsNiBAQAogCQkJCUFENEIxREY4MURG
MjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oICovLAogCQkJCTUzRkQwNEQxMUQ3QUIxODcw
MDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovLAogCQkJCTUzRkQwNEQyMUQ3
QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLywKLQkJCQlBRDQxMkIz
MTFFN0IyRThBMDA4QUYxNTcgLyogV2FzbUNvbnRleHQuY3BwICovLAotCQkJCUFENDEyQjMyMUU3
QjJFOEEwMDhBRjE1NyAvKiBXYXNtQ29udGV4dC5oICovLAogCQkJCTc5REFFMjc5MUUwM0M4MjIw
MEI1MjZBQSAvKiBXYXNtRXhjZXB0aW9uVHlwZS5oICovLAogCQkJCUFEMkZDQzMyMURDNDA0NTMw
MEIzRTczNiAvKiBXYXNtRm9ybWF0LmNwcCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlC
NTggLyogV2FzbUZvcm1hdC5oICovLApAQCAtODU4Nyw3ICs4NTgxLDYgQEAKIAkJCQkwRkVBMEEw
QzE3MDUxM0RCMDBCQjcyMkMgLyogRlRMQ29tcGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMy
MkU1QTcxREE2NDRBODAwNkU3NzA5IC8qIEZUTERPTUpJVFBhdGNocG9pbnRQYXJhbXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOUQ0QzBEMUMzRTFDMTEwMDZDRDk4NCAvKiBGVExFeGNlcHRpb25U
YXJnZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUFENDEyQjM0MUU3QjJFOUUwMDhBRjE1NyAvKiBX
YXNtQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDQxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTEV4aXRBcmd1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRDYxNzE3OEUx
QzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI5Q0Y1MTlEMEJBQzEwMEIxRDFCNSAvKiBGVExFeGl0UHJvcGVydHlWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDcyMiw3ICsxMDcxNSw2IEBACiAJCQkJQkNERTNCNDMwRTZDODMy
RDAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTRFRTcwRjBF
QkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQUQ0MTJCMzMxRTdCMkU5OTAwOEFGMTU3IC8qIFdhc21Db250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMyRjBGMkQxMTZCQUVFRTkwMDE4N0MxOSAvKiBTdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI0MzhBMzE5MjcwQjFEMDBFMUZCQzkg
LyogU3RydWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDM4MTVBRTRBMUMw
MDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKaW5kZXggMjJhN2Jh
NzBmNDdjNTAxNjMzODMyOTlkYTBlM2UzNGM1YmNkYzIyNy4uNTZkNWNiZWEyNDNkZWU0YTBiMWVl
MmU1NzNlYzg2YThiNjU0NjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oCkBAIC0yOTgsNiArMjk4LDExIEBAIGNsYXNzIE1hcmtlZEJsb2NrIHsKICAgICAKICAg
ICBib29sIGlzTWFya2VkUmF3KGNvbnN0IHZvaWQqIHApOwogICAgIEhlYXBWZXJzaW9uIG1hcmtp
bmdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZlZNKCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoTWFya2VkQmxvY2ssIG1fdm0pOworICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA3ODMy
MDQ3OTIxOTI0NDViNWJlN2Y4Y2M1NGUyMWI2MTg4ZjliNzVkLi4yODA0NWNlNjIzYzQ4ZGY4Zjli
MGM2MGU4OTk3MWE5N2IzNTE3ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
CisjaW5jbHVkZSAiV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IEpTQyB7CiAKIEV4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3Io
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKQEAgLTc2Niw2ICs3NzAsNDkgQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmVtaXRDb252ZXJ0VmFsdWVUb0Jvb2xlYW4oSlNWYWx1ZVJlZ3MgdmFs
dWUsIEdQUlJlZyByZXN1bHQKICAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCit2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KEdQUlJl
ZyBkc3QpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09m
ZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKyAgICBtb3ZlKFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCku
d2FzbUNvbnRleHRQb2ludGVyLCBkc3QpOworfQorCit2b2lkIEFzc2VtYmx5SGVscGVyczo6c3Rv
cmVXYXNtQ29udGV4dChHUFJSZWcgc3JjKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisg
ICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7CisgICAgICAgIHN0b3Jl
VG9UTFNQdHIoc3JjLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBtb3ZlKHNyYywgV2FzbTo6UGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS53YXNtQ29udGV4dFBvaW50ZXIpOworfQorCitib29sIEFz
c2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
Cit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlGYXN0VExTKCkpCisgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9T
Y3JhdGNoUmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
c3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJB
c3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJOZWVkc01hY3Jv
U2NyYXRjaFJlZ2lzdGVyKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCA1MDBkNjg4MjIzOWNl
YjliMjA5NzI1NDQ2ZDNjY2Q4ODliZGExODI4Li5hNzhjYzY5ZjlhNzk1MTY1MjQzNTIyYmI2MjIw
NzQ5MjdkMmE0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTE2MzYsNDUgKzE2MzYsMTIgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVi
bGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICB2b2lkIHdhbmdzSW50NjRIYXNoKEdQUlJlZyBpbnB1
dEFuZFJlc3VsdCwgR1BSUmVnIHNjcmF0Y2gpOwogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWRXYXNt
Q29udGV4dChHUFJSZWcgZHN0KQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKLSAgICAgICAgICAg
IGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkp
LCBkc3QpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAg
Ly8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIGxvYWRQdHIo
Jm1fdm0tPndhc21Db250ZXh0LCBkc3QpOwotICAgIH0KLQotICAgIHZvaWQgc3RvcmVXYXNtQ29u
dGV4dChHUFJSZWcgc3JjKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1
cm4gc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVY
VF9LRVkpKTsKLSNlbmRpZgotICAgICAgICAvLyBGSVhNRTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3
aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk3NzMKLSAgICAgICAgc3RvcmVQdHIoc3JjLCAmbV92bS0+d2FzbUNvbnRleHQpOwotICAg
IH0KLQotICAgIHN0YXRpYyBib29sIGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVn
aXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAgICByZXR1cm4gbG9hZEZy
b21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Ci0jZW5kaWYKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4dE5lZWRz
TWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQotICAgIHsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQot
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgICAg
ICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCisgICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCk7
CisgICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQUlJlZyBzcmMpOworICAgIHN0YXRpYyBib29s
IGxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKKyAgICBzdGF0aWMg
Ym9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwogI2VuZGlm
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KIAogcHJvdGVjdGVkOgogICAgIFZNKiBtX3Zt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggN2RkYzZiYWUwMDZkY2Zj
MWEzZDc3MWEwNjMxMzczZGQyNTc5OWI1YS4uMTk3ODQ4MGFkY2MxODRlZWU0OGQ5YjViYWU4NzU3
ZWJkMGM5MmFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01OSw3
ICs1OSw2IEBACiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3Jz
LmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CkBAIC01NzcsMjUgKzU3NiwxMyBAQCBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcihW
TSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogICAgIGNhbGxMaW5rSW5mby5zZXRT
bG93U3R1YihjcmVhdGVKSVRTdHViUm91dGluZSh2aXJ0dWFsVGh1bmssICp2bSwgbnVsbHB0ciwg
dHJ1ZSkpOwogfQogCi1zdGF0aWMgYm9vbCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0s
IEpTQ2VsbCogY2FsbGVlKQotewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAvLyBUaGUg
V2ViQXNzZW1ibHkgLT4gSlMgc3R1YiBzZXRzIGl0IGNhbGxlciBmcmFtZSdzIGNhbGxlZSB0byBh
IHNpbmdsZXRvbiB3aGljaCBsaXZlcyBvbiB0aGUgVk0uCi0gICAgcmV0dXJuIGNhbGxlZSA9PSB2
bS53ZWJBc3NlbWJseVRvSlNDYWxsZWUuZ2V0KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2
bSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxlZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKLX0KLQotc3RhdGljIEpTQ2VsbCogd2ViQXNzZW1ibHlP
d25lcihWTSYgdm0pCitzdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKEpTQ2VsbCogY2Fs
bGVlKQogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAvLyBFYWNoIFdlYkFzc2VtYmx5
Lkluc3RhbmNlIHNoYXJlcyB0aGUgc3R1YnMgZnJvbSB0aGVpciBXZWJBc3NlbWJseS5Nb2R1bGUs
IHdoaWNoIGFyZSB0aGVyZWZvcmUgdGhlIGFwcHJvcHJpYXRlIG93bmVyLgotICAgIHJldHVybiBs
b2FkV2FzbUNvbnRleHQodm0pLT5tb2R1bGUoKTsKKyAgICByZXR1cm4ganNDYXN0PFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZSo+KGNhbGxlZSktPm1vZHVsZSgpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIFVOVVNFRF9QQVJBTShjYWxsZWUpOwogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQpAQCAtNjEyLDcgKzU5OSw3IEBAIHZvaWQgbGlua0ZvcigKICAgICBDb2RlQmxvY2sq
IGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKIAogICAgIC8vIFdl
YkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2YWxpZCBDb2RlQmxvY2suCi0gICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+
Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAg
SlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxsZWUoKSkgOiBjYWxsZXJD
b2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIEFTU0VSVCghY2FsbExpbmtJbmZv
LmlzTGlua2VkKCkpOwpAQCAtNzMyLDEwICs3MTksMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWND
YWxsKAogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwog
ICAgIFZNJiB2bSA9IGNhbGxlckZyYW1lLT52bSgpOwogICAgIENvZGVCbG9jayogY2FsbGVyQ29k
ZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIGJvb2wgaXNXZWJBc3NlbWJs
eSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHZtLCBjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwor
ICAgIGJvb2wgaXNXZWJBc3NlbWJseSA9IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKGNhbGxlckZy
YW1lLT5jYWxsZWUoKSk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVicyBkb24ndCBo
YXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5
ID8gd2ViQXNzZW1ibHlPd25lcih2bSkgOiBjYWxsZXJDb2RlQmxvY2s7CisgICAgSlNDZWxsKiBv
d25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJBc3NlbWJseU93bmVyKGNhbGxlckZyYW1lLT5jYWxs
ZWUoKSkgOiBjYWxsZXJDb2RlQmxvY2s7CiAgICAgQVNTRVJUKG93bmVyKTsKIAogICAgIENhbGxW
YXJpYW50TGlzdCBsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCmluZGV4IDA4NTdlMzRiZjFkMmIwNDZkN2FiY2E0ODkxMjFjMWYzOGM5MDIyZmMu
LjUyMTdiODI1ODZkZWU1ZTRmOWYwZGE0YzZiMDc4NTQ2MDI2MjQwMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAK
ICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTcGVjaWFsaXplZFRodW5rSklULmgiCi0jaW5jbHVkZSAi
V2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAg
LTExNDgsMTYgKzExNDcsMTcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHRocm93RXhjZXB0aW9u
RnJvbVdhc21UaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgfQogCiAgICAgaml0Lm1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0
LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgIENDYWxsSGVscGVy
czo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cigpOwogCi0gICAgdm9pZCAoKnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6
RXhjZXB0aW9uVHlwZSkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRpb25UeXBl
IHR5cGUpIHsKKyAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNt
OjpFeGNlcHRpb25UeXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUq
IGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiB3
YXNtQ29udGV4dCkgewogICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29udGV4dCgqdm0p
LT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIEpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IqIGVycm9yID0gSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcjo6Y3Jl
YXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVj
dHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VGb3JFeGNlcHRpb25UeXBlKHR5cGUpKTsKICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggOGI2MTVhMWEzYTUxNTEwNTk2
NzIwNjVkNDcyYjdlOGFlODU4Njk5YS4uMGFmZjEwODBhY2IyMDNiZTRlNDMwOWUzOGU1YTE0Mjhk
NTFmZTRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAg
LTE1NiwyMSArMTU2LDIxIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQog
ICAgIAogICAgIFNUQVRJQ19BU1NFUlQoU3RyaW5nVHlwZSA9PSA2KTsKICAgICBTVEFUSUNfQVNT
RVJUKFN5bWJvbFR5cGUgPT0gNyk7Ci0gICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09IDIz
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNCk7Ci0gICAgU1RBVElD
X0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNik7Ci0gICAgU1RBVElDX0FTU0VSVChBcnJheVR5
cGUgPT0gMzQpOwotICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTMpOwotICAgIFNUQVRJQ19BU1NF
UlQoSW50OEFycmF5VHlwZSA9PSAzNik7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5VHlw
ZSA9PSAzNyk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOCk7Ci0gICAg
U1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSAzOSk7Ci0gICAgU1RBVElDX0FTU0VSVChV
aW50OENsYW1wZWRBcnJheVR5cGUgPT0gNDApOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDE2QXJy
YXlUeXBlID09IDQxKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0Mik7
Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQzKTsKLSAgICBTVEFUSUNf
QVNTRVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0
VHlwZSA9PSAyNCk7CisgICAgU1RBVElDX0FTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMjUpOwor
ICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5cGUgPT0gMjcpOworICAgIFNUQVRJQ19BU1NF
UlQoQXJyYXlUeXBlID09IDM1KTsKKyAgICBTVEFUSUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUg
PT0gMzYpOworICAgIFNUQVRJQ19BU1NFUlQoUHJveHlPYmplY3RUeXBlID09IDU0KTsKKyAgICBT
VEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0gMzcpOworICAgIFNUQVRJQ19BU1NFUlQoSW50
MTZBcnJheVR5cGUgPT0gMzgpOworICAgIFNUQVRJQ19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0g
MzkpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDhBcnJheVR5cGUgPT0gNDApOworICAgIFNUQVRJ
Q19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBlID09IDQxKTsKKyAgICBTVEFUSUNfQVNTRVJU
KFVpbnQxNkFycmF5VHlwZSA9PSA0Mik7CisgICAgU1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5
cGUgPT0gNDMpOworICAgIFNUQVRJQ19BU1NFUlQoRmxvYXQzMkFycmF5VHlwZSA9PSA0NCk7Cisg
ICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlUeXBlID09IDQ1KTsKICAgICBTVEFUSUNfQVNT
RVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgU1RBVElDX0FTU0VSVChJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID09IDIpOwogICAgIFNUQVRJQ19BU1NFUlQoRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAwMDAwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZThlMmRiOGNk
YWMyZTFlMTBkMmI4YTNmNWZmNzA2MTlmZGUwMWQ0Zi4uYWIzYzBjOGU3NzFmZWRhZTliNjVkYWNk
YjYyMjUxYTE4N2EzYzliZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMzQ1LDI0ICszNDUsMjQgQEAgY29uc3QgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMHgwQwogIyBUeXBlIGNvbnN0YW50cy4KIGNvbnN0IFN0
cmluZ1R5cGUgPSA2CiBjb25zdCBTeW1ib2xUeXBlID0gNwotY29uc3QgT2JqZWN0VHlwZSA9IDIz
Ci1jb25zdCBGaW5hbE9iamVjdFR5cGUgPSAyNAotY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNgot
Y29uc3QgQXJyYXlUeXBlID0gMzQKLWNvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNQotY29uc3Qg
UHJveHlPYmplY3RUeXBlID0gNTMKK2NvbnN0IE9iamVjdFR5cGUgPSAyNAorY29uc3QgRmluYWxP
YmplY3RUeXBlID0gMjUKK2NvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjcKK2NvbnN0IEFycmF5VHlw
ZSA9IDM1Citjb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzYKK2NvbnN0IFByb3h5T2JqZWN0VHlw
ZSA9IDU0CiAKICMgVGhlIHR5cGVkIGFycmF5IHR5cGVzIG5lZWQgdG8gYmUgbnVtYmVyZWQgaW4g
YSBwYXJ0aWN1bGFyIG9yZGVyIGJlY2F1c2Ugb2YgdGhlIG1hbnVhbGx5IHdyaXR0ZW4KICMgc3dp
dGNoIHN0YXRlbWVudCBpbiBnZXRfYnlfdmFsIGFuZCBwdXRfYnlfdmFsLgotY29uc3QgSW50OEFy
cmF5VHlwZSA9IDM2Ci1jb25zdCBJbnQxNkFycmF5VHlwZSA9IDM3Ci1jb25zdCBJbnQzMkFycmF5
VHlwZSA9IDM4Ci1jb25zdCBVaW50OEFycmF5VHlwZSA9IDM5Ci1jb25zdCBVaW50OENsYW1wZWRB
cnJheVR5cGUgPSA0MAotY29uc3QgVWludDE2QXJyYXlUeXBlID0gNDEKLWNvbnN0IFVpbnQzMkFy
cmF5VHlwZSA9IDQyCi1jb25zdCBGbG9hdDMyQXJyYXlUeXBlID0gNDMKLWNvbnN0IEZsb2F0NjRB
cnJheVR5cGUgPSA0NAorY29uc3QgSW50OEFycmF5VHlwZSA9IDM3Citjb25zdCBJbnQxNkFycmF5
VHlwZSA9IDM4Citjb25zdCBJbnQzMkFycmF5VHlwZSA9IDM5Citjb25zdCBVaW50OEFycmF5VHlw
ZSA9IDQwCitjb25zdCBVaW50OENsYW1wZWRBcnJheVR5cGUgPSA0MQorY29uc3QgVWludDE2QXJy
YXlUeXBlID0gNDIKK2NvbnN0IFVpbnQzMkFycmF5VHlwZSA9IDQzCitjb25zdCBGbG9hdDMyQXJy
YXlUeXBlID0gNDQKK2NvbnN0IEZsb2F0NjRBcnJheVR5cGUgPSA0NQogCiBjb25zdCBGaXJzdEFy
cmF5VHlwZSA9IEludDhBcnJheVR5cGUKIGNvbnN0IExhc3RBcnJheVR5cGUgPSBGbG9hdDY0QXJy
YXlUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCBhY2Rk
NGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzLi4zZGZjMjg1ZmU3OGMyZWM4NDgw
NTgzMmRmZjEwMjllZTgyNGNhZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCBKU1ZhbHVlIEpTQ2VsbDo6Z2V0UHJvdG90eXBl
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKikKIGJvb2wgSlNDZWxsOjppc0FueVdhc21DYWxsZWUoVk0m
IHZtKSBjb25zdAogewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICByZXR1cm4gaW5oZXJp
dHModm0sIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaW5oZXJpdHModm0sIFdlYkFz
c2VtYmx5VG9KU0NhbGxlZTo6aW5mbygpKTsKKyAgICByZXR1cm4gaW5oZXJpdHModm0sIEpTV2Vi
QXNzZW1ibHlDYWxsZWU6OmluZm8oKSkgfHwgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodGhpcyk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDZhOTgwYTgx
ODJjYWJiNjdlOGVmNjgxODhhZmJkZGFhMDk4NjAzZWMuLjk1MDkzNTZlYzZkZTU0ZTA5NmYwNjM5
ZDgzYjkwZGFlMWYzZGE4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgKQEAgLTM0Niw0ICszNDYsOSBAQCBpbmxpbmUgSlNPYmplY3QqIEpTQ2Vs
bDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIHJldHVybiB0b09iamVjdFNsb3coZXhlYywgZ2xvYmFsT2JqZWN0KTsKIH0KIAoraW5s
aW5lIGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY29uc3QgSlNDZWxsKiBjZWxsKQorewor
ICAgIHJldHVybiBjZWxsLT50eXBlKCkgPT0gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5o
CmluZGV4IDRkN2VlNDk4MDYwOTcwMDhhZDM2NzI4MjFiMTMyMzEwNzdlYzNkZGUuLjYyZTM3NzJm
NDJiNDdhODk5YTQ4MDU2ZWRlOTQ1ZmRlN2U2OGZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgSlNTb3VyY2VDb2RlVHlwZSwKICAgICBKU1NjcmlwdEZldGNoZXJUeXBlLAogCisgICAg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlVHlwZSwKKwogICAgIC8vIFRoZSBPYmplY3RUeXBlIHZhbHVl
IG11c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgSlNPYmpl
Y3QuCiAgICAgT2JqZWN0VHlwZSwKICAgICBGaW5hbE9iamVjdFR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZkNDc4NjRjOTc4ZGMyN2E0
ZTM3NTA3ZDIyNmRkNTdhOWEwY2NjZTIuLjE2NGM0ZjU3YmNkNGIyYzRiZjdmYzA3NjRhNWUxMDQ1
NGRhN2EyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNr
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCkBAIC03MiwxMCArNzIsMTAgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShW
TSYgdm0pIGNvbnN0CiAgICAgfQogICAgIFN0cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkg
eworICAgICAgICBpZiAobV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkp
KQorICAgICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgICAgIGlm
IChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxhdGVk
RGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1wbCgp
OwotICAgICAgICBlbHNlIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+
dm0oKSkpCi0gICAgICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICB9
CiAgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmFtZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4NTExNTQyYjc3ZGZjOGU2ZjJiZWFi
ZjFmODkzYzc3MzlhYjc0YjM4Li5kMTA4MTUzZjY4NGUxOWVjODk0NGJkNDRmMTEyNWMxOWZlMTcy
NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDAsNyArMjQwLDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHdlYkFzc2Vt
Ymx5Q2FsbGVlU3RydWN0dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNhbGxlZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxl
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHdlYkFzc2VtYmx5VG9KU0NhbGxlZS5zZXQoKnRoaXMs
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKCp0aGlzLCB3ZWJBc3NlbWJseVRvSlNDYWxs
ZWVTdHJ1Y3R1cmUuZ2V0KCkpKTsKICNlbmRpZgogICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDlkODZhYTE5YTkzM2NlYTM4YWI1ZjAyMzE4NDQ1OWNi
NjAxMGYzYjcuLjE1OGU2OThiYTQ4NzEyOTE1NTU1NThkZDI2ZDVmYWEwOWNhM2QxM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzM2LDcgKzMzNiw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3RO
b2RlPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDYWxsZWVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlOwot
ICAgIFN0cm9uZzxKU0NlbGw+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZTsKICNlbmRpZgogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IHJlZ0V4cFN0cnVjdHVyZTsKQEAgLTQ5MCw2ICs0ODksMTEgQEAgY2xh
c3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8Vk0+IHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWTSwgdGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3cpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgd2Fz
bUNvbnRleHRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihW
TSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAgIHZvaWQgcmVzdG9yZVByZXZpb3VzRXhjZXB0
aW9uKEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHNldEV4Y2VwdGlvbihleGNlcHRpb24pOyB9CiAK
ICAgICB2b2lkIGNsZWFyTGFzdEV4Y2VwdGlvbigpIHsgbV9sYXN0RXhjZXB0aW9uID0gbnVsbHB0
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCmluZGV4IGZhYzU3YWRkYWYwNzRlOWE4Y2ZlNjA2MzMzNWYzMGRhMmU5NmQzYTIuLmI4NTNj
ZDRlNzljNmY4NzZmMTM0ZTBlZDUyODM2ZGIyOTEyYmMyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJCM0NvbnN0UHRyVmFsdWUuaCIKICNpbmNsdWRlICJCM0ZpeFNTQS5oIgogI2lu
Y2x1ZGUgIkIzR2VuZXJhdGUuaCIKKyNpbmNsdWRlICJCM1Nsb3RCYXNlVmFsdWUuaCIKICNpbmNs
dWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFs
dWUuaCIKICNpbmNsdWRlICJCM1ZhbGlkYXRlLmgiCkBAIC00OSw3ICs1MCw2IEBACiAjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgotI2luY2x1ZGUgIldhc21D
b250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNt
RnVuY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC0yMTksNiArMjE5
LDEwIEBAIGNsYXNzIEIzSVJHZW5lcmF0b3IgewogCiAgICAgdm9pZCBlbWl0Q2hlY2tzRm9yTW9k
T3JEaXYoQjM6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgbGVmdCwgRXhwcmVzc2lvblR5cGUgcmln
aHQpOwogCisgICAgVmFsdWUqIG1hdGVyaWFsaXplV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFz
aWNCbG9jayopOworICAgIHZvaWQgcmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYsIEJhc2lj
QmxvY2sqLCBWYWx1ZSopOworICAgIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUo
Y29uc3QgTWVtb3J5SW5mb3JtYXRpb24mLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYsIEJh
c2ljQmxvY2sqKTsKKwogICAgIFZNJiBtX3ZtOwogICAgIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
JiBtX2luZm87CiAgICAgUHJvY2VkdXJlJiBtX3Byb2M7CkBAIC0yMjcsMzUgKzIzMSw2MyBAQCBj
bGFzcyBCM0lSR2VuZXJhdG9yIHsKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4m
IG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7IC8vIExpc3QgZWFjaCBjYWxsIHNpdGUgYW5kIHRo
ZSBmdW5jdGlvbiBpbmRleCB3aG9zZSBhZGRyZXNzIGl0IHNob3VsZCBiZSBwYXRjaGVkIHdpdGgu
CiAgICAgR1BSUmVnIG1fbWVtb3J5QmFzZUdQUjsKICAgICBHUFJSZWcgbV9tZW1vcnlTaXplR1BS
OworICAgIEdQUlJlZyBtX3dhc21Db250ZXh0R1BSOwogICAgIFZhbHVlKiBtX3plcm9WYWx1ZXNb
bnVtVHlwZXNdOwogICAgIFZhbHVlKiBtX2luc3RhbmNlVmFsdWU7IC8vIEZJWE1FOiBtYWtlIHRo
aXMgbGF6eSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzkyCiB9
OwogCi1zdGF0aWMgVmFsdWUqIGxvYWRXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2lj
QmxvY2sqIGJsb2NrKQorVmFsdWUqIEIzSVJHZW5lcmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKLSAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCkpOwotICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKLSAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwotICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVs
cGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAg
ICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKLSAgICAgICAgfSk7
CisgICAgaWYgKHVzZUZhc3RUTFMoKSkgeworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5
cGUoKSwgT3JpZ2luKCkpOworICAgICAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwg
Q0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkp
OworICAgICAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKKyAgICB9CiAKLSAg
ICByZXR1cm4gYmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSWRlbnRpdHksIE9yaWdpbigp
LCBwYXRjaHBvaW50KTsKLX0KKyAgICAvLyBGSVhNRTogQmVjYXVzZSBXYXNtVG9XYXNtIGNhbGwg
Y2xvYmJlcnMgd2FzbUNvbnRleHQgcmVnaXN0ZXIgYW5kIGRvZXMgbm90IHJlc3RvcmUgaXQsIHdl
IG5lZWQgdG8gcmVzdG9yZSBpdCBpbiB0aGUgY2FsbGVyIHNpZGUuCisgICAgLy8gVGhpcyBwcmV2
ZW50cyB1cyBmcm9tIHVzaW5nIEFyZ3VtZW50UmVnIHRvIHRoaXMgKGxvZ2ljYWxseSkgaW1tdXRh
YmxlIHBpbm5lZCByZWdpc3Rlci4KKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBi
bG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcG9pbnRlclR5cGUoKSwgT3Jp
Z2luKCkpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gZmFsc2U7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgcGF0Y2hwb2lu
dC0+cmVzdWx0Q29uc3RyYWludCA9IFZhbHVlUmVwOjpyZWcobV93YXNtQ29udGV4dEdQUik7Cisg
ICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmKSB7IH0pOworICAgIHJldHVybiBwYXRjaHBvaW50OworfQor
Cit2b2lkIEIzSVJHZW5lcmF0b3I6OnJlc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2Ms
IEJhc2ljQmxvY2sqIGJsb2NrLCBWYWx1ZSogYXJnKQoreworICAgIGlmICh1c2VGYXN0VExTKCkp
IHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIGlm
IChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVs
cGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi1zdGF0aWMgdm9pZCBzdG9yZVdh
c21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ssIFZhbHVlKiBhcmcp
Ci17CisgICAgLy8gRklYTUU6IEJlY2F1c2UgV2FzbVRvV2FzbSBjYWxsIGNsb2JiZXJzIHdhc21D
b250ZXh0IHJlZ2lzdGVyIGFuZCBkb2VzIG5vdCByZXN0b3JlIGl0LCB3ZSBuZWVkIHRvIHJlc3Rv
cmUgaXQgaW4gdGhlIGNhbGxlciBzaWRlLgorICAgIC8vIFRoaXMgcHJldmVudHMgdXMgZnJvbSB1
c2luZyBBcmd1bWVudFJlZyB0byB0aGlzIChsb2dpY2FsbHkpIGltbXV0YWJsZSBwaW5uZWQgcmVn
aXN0ZXIuCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7Ci0gICAgaWYgKEND
YWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkK
LSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
LSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29u
dGV4dChwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKKyAgICBFZmZlY3RzIGVmZmVjdHMg
PSBFZmZlY3RzOjpub25lKCk7CisgICAgZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAg
IGVmZmVjdHMucmVhZHMgPSBCMzo6SGVhcFJhbmdlOjp0b3AoKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3RzID0gZWZmZWN0czsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNl
dChtX3dhc21Db250ZXh0R1BSKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1faW5zdGFuY2VW
YWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgR1BSUmVnIHdhc21Db250ZXh0R1BS
ID0gbV93YXNtQ29udGV4dEdQUjsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbSkg
eworICAgICAgICBqaXQubW92ZShwYXJhbVswXS5ncHIoKSwgd2FzbUNvbnRleHRHUFIpOworICAg
IH0pOwogfQogCiBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxG
dW5jdGlvbiogY29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHMpCkBAIC0yODMsNyArMzE1LDEwIEBAIEIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJv
Y2VkdXJlJiBwCiAgICAgLy8gRklYTUUgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGluIHJlZ2lz
dGVycyBoZXJlIGlmIHRoZXJlJ3Mgbm8gbWVtb3J5LiBJdCBtYWtlcyB3YXNtIC0+IHdhc20gdGh1
bmtzIHNpbXBsZXIgZm9yIG5vdy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NjYyMwogICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVn
cy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBtX3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53
YXNtQ29udGV4dFBvaW50ZXI7CiAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQ
Uik7CisgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgIG1fcHJvYy5waW5SZWdpc3Rlciht
X3dhc21Db250ZXh0R1BSKTsKICAgICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1sw
XS5zaXplT2Zmc2V0KTsKICAgICBtX21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdp
c3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOwogICAgIGZvciAoY29uc3QgUGlubmVkU2l6ZVJlZ2lzdGVy
SW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykKQEAgLTI5OSw3ICszMzQs
NyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9kdWxlSW5m
b3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcAogCiAgICAgd2FzbUNhbGxpbmdDb252ZW50aW9u
KCkuc2V0dXBGcmFtZUluUHJvbG9ndWUoJmNvbXBpbGF0aW9uLT53YXNtQ2FsbGVlTW92ZUxvY2F0
aW9uLCBtX3Byb2MsIE9yaWdpbigpLCBtX2N1cnJlbnRCbG9jayk7CiAKLSAgICBtX2luc3RhbmNl
VmFsdWUgPSBsb2FkV2FzbUNvbnRleHQobV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgbV9p
bnN0YW5jZVZhbHVlID0gbWF0ZXJpYWxpemVXYXNtQ29udGV4dChtX3Byb2MsIG1fY3VycmVudEJs
b2NrKTsKIH0KIAogc3RydWN0IE1lbW9yeUJhc2VBbmRTaXplIHsKQEAgLTMwNywxMiArMzQyLDEy
IEBAIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CiAgICAgVmFsdWUqIHNpemU7CiB9OwogCi1z
dGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVk0mIHZtLCBWYWx1
ZSogaW5zdGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCitzdGF0aWMg
TWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFzZUFuZFNpemUoVmFsdWUqIGluc3RhbmNlLCBQ
cm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIFZhbHVlKiBtZW1vcnlP
YmplY3QgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBPcmlnaW4oKSwgaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZNZW1vcnkoKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShsb2FkV2Fz
bUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXplb2Yodm9p
ZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7Ci0gICAgc3RhdGljX2Fzc2VydChz
aXplb2YoZGVjbHR5cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNp
emUoKSkpID09IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkg
PT0gc2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJbnN0
YW5jZSo+KG51bGxwdHIpLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkgPT0gc2l6ZW9mKHVp
bnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwogICAgIE1lbW9yeUJhc2VB
bmRTaXplIHJlc3VsdDsKICAgICByZXN1bHQuYmFzZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdpbigpLCBtZW1vcnlPYmplY3Qs
IEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mTWVtb3J5KCkpOwogICAgIHJlc3VsdC5zaXpl
ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgSW50NjQsIE9yaWdp
bigpLCBtZW1vcnlPYmplY3QsIEpTV2ViQXNzZW1ibHlNZW1vcnk6Om9mZnNldE9mU2l6ZSgpKTsK
QEAgLTMyMCw5ICszNTUsOSBAQCBzdGF0aWMgTWVtb3J5QmFzZUFuZFNpemUgZ2V0TWVtb3J5QmFz
ZUFuZFNpemUoVk0mIHZtLCBWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVyZQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNv
bnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJl
JiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK3ZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdl
YkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFs
dWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAg
IHN0b3JlV2FzbUNvbnRleHQocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKKyAgICByZXN0b3JlV2Fz
bUNvbnRleHQocHJvYywgYmxvY2ssIGluc3RhbmNlKTsKIAogICAgIGlmICghIW1lbW9yeSkgewog
ICAgICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8qIHBpbm5lZFJlZ3MgPSAmUGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQoKTsKQEAgLTM5Miw3ICs0MjcsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSkgLT4gUGFydGlhbFJlc3Vs
dAogCiAgICAgbV9sb2NhbHMuZ3JvdyhzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAg
d2FzbUNhbGxpbmdDb252ZW50aW9uKCkubG9hZEFyZ3VtZW50cyhzaWduYXR1cmUsIG1fcHJvYywg
bV9jdXJyZW50QmxvY2ssIE9yaWdpbigpLAotICAgICAgICBbJl0gKEV4cHJlc3Npb25UeXBlIGFy
Z3VtZW50LCB1bnNpZ25lZCBpKSB7CisgICAgICAgIFs9XSAoRXhwcmVzc2lvblR5cGUgYXJndW1l
bnQsIHVuc2lnbmVkIGkpIHsKICAgICAgICAgICAgIFZhcmlhYmxlKiBhcmd1bWVudFZhcmlhYmxl
ID0gbV9wcm9jLmFkZFZhcmlhYmxlKGFyZ3VtZW50LT50eXBlKCkpOwogICAgICAgICAgICAgbV9s
b2NhbHNbaV0gPSBhcmd1bWVudFZhcmlhYmxlOwogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxWYXJpYWJsZVZhbHVlPihtX3Byb2MsIFNldCwgT3JpZ2luKCksIGFyZ3VtZW50
VmFyaWFibGUsIGFyZ3VtZW50KTsKQEAgLTQxOSwxMiArNDU0LDExIEBAIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkVW5yZWFjaGFibGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKIGF1dG8gQjNJUkdlbmVy
YXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAo
RXhlY1N0YXRlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGRlbHRh
KSAtPiBpbnQzMl90IHsKKyAgICBpbnQzMl90ICgqZ3Jvd01lbW9yeSkgKEV4ZWNTdGF0ZSosIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSosIGludDMyX3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCwgaW50MzJfdCBkZWx0YSkgLT4gaW50MzJf
dCB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
IGluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAgICAgICAgSlNXZWJBc3NlbWJseU1l
bW9yeSogd2FzbU1lbW9yeSA9IGluc3RhbmNlLT5tZW1vcnkoKTsKKyAgICAgICAgSlNXZWJBc3Nl
bWJseU1lbW9yeSogd2FzbU1lbW9yeSA9IHdhc21Db250ZXh0LT5tZW1vcnkoKTsKIAogICAgICAg
ICBpZiAoZGVsdGEgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDQwLDcgKzQ3NCw3
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0
YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgT3JpZ2luKCksCiAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmlnaW4o
KSwgYml0d2lzZV9jYXN0PHZvaWQqPihncm93TWVtb3J5KSksCi0gICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdp
bigpKSwgZGVsdGEpOworICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBPcmlnaW4oKSksIG1faW5zdGFuY2VWYWx1ZSwg
ZGVsdGEpOwogCiAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUobV9pbmZvLm1lbW9y
eSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKIApAQCAtNDQ5LDcg
KzQ4Myw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlw
ZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIAogYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRDdXJyZW50TWVtb3J5KEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQK
IHsKLSAgICBhdXRvIG1lbW9yeVZhbHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV92bSwgbV9p
bnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICBhdXRvIG1lbW9yeVZh
bHVlID0gZ2V0TWVtb3J5QmFzZUFuZFNpemUobV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIG1fY3Vy
cmVudEJsb2NrKTsKIAogICAgIGNvbnN0ZXhwciB1aW50MzJfdCBzaGlmdFZhbHVlID0gMTY7CiAg
ICAgc3RhdGljX2Fzc2VydChQYWdlQ291bnQ6OnBhZ2VTaXplID09IDEgPDwgc2hpZnRWYWx1ZSwg
IlRoaXMgbXVzdCBob2xkIGZvciB0aGUgY29kZSBiZWxvdyB0byBiZSBjb3JyZWN0LiIpOwpAQCAt
ODg5LDkgKzkyMywxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsCiAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBPcmlnaW4o
KSwgaXNXYXNtQ2FsbCwgRnJlcXVlbnRlZEJsb2NrKGlzV2FzbUJsb2NrKSwgRnJlcXVlbnRlZEJs
b2NrKGlzSlNCbG9jaykpOwogCiAgICAgICAgIFZhbHVlKiB3YXNtQ2FsbFJlc3VsdCA9IHdhc21D
YWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIGlzV2FzbUJsb2NrLCBPcmlnaW4o
KSwgYXJncywgdG9CM1R5cGUocmV0dXJuVHlwZSksCi0gICAgICAgICAgICBbJl0gKFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCkgeworICAgICAgICAgICAgWz1dIChQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQpIHsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFk
c1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoKSk7CiAgICAgICAgICAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rpb25J
bmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJikgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKQEAgLTkwNCw5ICs5MzksMTAgQEAgYXV0byBCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSog
c2lnbmF0dXJlLAogICAgICAgICBpc1dhc21CbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1f
cHJvYywgSnVtcCwgT3JpZ2luKCksIGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgVmFsdWUqIGpz
Q2FsbFJlc3VsdCA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIGlz
SlNCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAotICAgICAgICAg
ICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKKyAgICAgICAgICAgIFs9XSAo
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKCkpOwogICAg
ICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNt
Q2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CkBAIC05MzIsOSArOTY4LDEw
IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBj
b25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xv
YmFsU3RhdGUobV9pbmZvLm1lbW9yeSwgbV9pbnN0YW5jZVZhbHVlLCBtX3Byb2MsIGNvbnRpbnVh
dGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gd2FzbUNhbGxpbmdDb252ZW50
aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgbV9jdXJyZW50QmxvY2ssIE9yaWdpbigpLCBhcmdzLCB0
b0IzVHlwZShyZXR1cm5UeXBlKSwKLSAgICAgICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50KSB7CisgICAgICAgICAgICBbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCkgewogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0g
dHJ1ZTsKKwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICAgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CkBAIC0x
MDEwLDEyICsxMDQ3LDEyIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KGNv
bnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBTaWduYXR1cmVJbmRleCBzCiAKICAgICBUeXBlIHJl
dHVyblR5cGUgPSBzaWduYXR1cmUtPnJldHVyblR5cGUoKTsKICAgICByZXN1bHQgPSB3YXNtQ2Fs
bGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2lu
KCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAotICAgICAgICBbJl0gKFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCkgeworICAgICAgICBbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCkgewogICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0
cnVlOwogICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7
CisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpLnRvU2F2ZSgpKTsKIAogICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxl
ZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotCiAgICAgICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgIGpp
dC5jYWxsKHBhcmFtc1tyZXR1cm5UeXBlID09IFZvaWQgPyAwIDogMV0uZ3ByKCkpOwpAQCAtMTA4
MCwxMSArMTExNyw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxh
dGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgICAgICpsaW5rZWRD
YWxsZWVNb3ZlID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGNhbGxlZU1vdmVMb2NhdGlvbik7CiAg
ICAgfSk7CiAKLSAgICBSZWdpc3RlclNldCB0b1NhdmU7CiAgICAgY29uc3QgUGlubmVkUmVnaXN0
ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKLSAgICB0b1Nh
dmUuc2V0KHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXIpOwotICAgIGZvciAoY29uc3QgUGlu
bmVkU2l6ZVJlZ2lzdGVySW5mbyYgcmVnSW5mbyA6IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVycykK
LSAgICAgICAgdG9TYXZlLnNldChyZWdJbmZvLnNpemVSZWdpc3Rlcik7CisgICAgUmVnaXN0ZXJT
ZXQgdG9TYXZlID0gcGlubmVkUmVncy50b1NhdmUoKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICB1bnNpZ25lZCB0b1NhdmVTaXplID0gdG9TYXZlLm51bWJlck9mU2V0R1BScygpOwpAQCAt
MTE5MSwxMCArMTIyNSwyNSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29t
cGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAgICAgICB9CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IEpTdG9XYXNtIHdyYXBwZXIgc2hvdWxkIHRha2UgSlNXZWJB
c3NlbWJseUluc3RhbmNlIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQgZGlyZWN0bHkuCisgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4MgorICAgIEdQUlJl
ZyB3YXNtQ29udGV4dCA9IHBpbm5lZFJlZ3Mud2FzbUNvbnRleHRQb2ludGVyOworICAgIGlmICgh
dXNlRmFzdFRMUygpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHdhc21Db250ZXh0KTsKKyAgICAgICAg
aml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoTWFya2VkQmxvY2s6OmJsb2Nr
TWFzayksIHdhc21Db250ZXh0KTsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHdhc21Db250ZXh0LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSgpKSwgd2FzbUNvbnRl
eHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRl
eHQsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgd2FzbUNvbnRleHQpOworICAgIH0KKwogICAg
IGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVk
UmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNl
TWVtb3J5KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VN
ZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1v
cnkpOworCisgICAgICAgIGlmICghdXNlRmFzdFRMUygpKQorICAgICAgICAgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICB9CiAgICAg
ICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzOwogICAg
ICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgpID49IDEpOwogICAgICAgICBBU1NFUlQoIXNpemVS
ZWdzWzBdLnNpemVPZmZzZXQpOyAvLyBUaGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB3ZSBzdGFy
dCBhdCAwLCBhbmQgY2FsY3VsYXRlcyBzdWJzZXF1ZW50IHNpemUgcmVnaXN0ZXJzIHJlbGF0aXZl
IHRvIDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXgg
ZmI2NzY1N2VhNDBjZWNkMGI4Njg4MGViYjI0YzdlYTc5MTNmOWMzMy4uZTBjYWIxZjZkNGQ3OTgx
YmM4ZGM3MDlhZTJhZmY4ZmIyNjA5NDhhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CaW5kaW5nLmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJX
YXNtRXhjZXB0aW9uVHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewpA
QCAtNjYsOCArNjUsNiBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZN
KiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAKICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0ZWRJbW0zMigwKSwg
SklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7IC8vIEZJWE1F
IFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0gICAgaml0LnN0b3JlUHRyKEpJVDo6VHJ1c3RlZEltbVB0cih2
bS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdldCgpKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7Ci0KIAogICAgIHsKICAgICAgICAgYm9vbCBoYXNCYWRJNjRV
c2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5MCwyMiBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAg
ICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsKICAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2
ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKCk7CiAgICAgICAgICAgICBqaXQubW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKwor
ICAgICAgICAgICAgLy8gU3RvcmUgQ2FsbGVlLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAg
ICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEpJVDo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOworCiAgICAgICAgICAgICBhdXRvIGNhbGwg
PSBqaXQuY2FsbCgpOwogICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsK
IAotICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3RhdGUqKSA9IFtdIChFeGVj
U3RhdGUqIGV4ZWMpIC0+IHZvaWQgeworICAgICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShF
eGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIC0+IHZvaWQgewogICAgICAgICAg
ICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7
Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2Fk
V2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0
cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBv
ciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBmdW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTI1Miw2ICsyNTUsMTAgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3
YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlua0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgICAg
ICB9CiAgICAgfQogCisgICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1
bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUoKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisKICAgICBH
UFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0gR1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVk
cyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBwYXRoIGJlbG93LgogICAgIEFTU0VSVCghd2FzbUND
Lm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQoaW1wb3J0SlNDZWxsR1BSUmVnKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjQ4NGNkNGY1MjY2YTM4ZTgyMTU0YTcxZDcwNTJiYWFlZTQ4OTQyNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCi0KLSNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCi0KLSNpbmNsdWRlICJWTS5oIgotI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUg
PHd0Zi9GYXN0VExTLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIGxvYWRXYXNtQ29udGV4dChWTSYgdm0pCi17Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkK
LSAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJlYWRfZ2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYKLSAgICAvLyBGSVhNRTog
U2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICByZXR1cm4gdm0ud2FzbUNvbnRleHQ7
Ci19Ci0KLXZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdGFuY2UpCi17Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBpZiAoT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmlj
X2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihpbnN0YW5j
ZSkpOwotI2VuZGlmCi0gICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8g
YWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzcz
Ci0gICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNvbnRleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1ZThhMThk
MmIwNzQ4MWVlNjAwZjhiNzAxZTUzYzYzOWU1ZmNjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29u
dGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOwotY2xhc3MgVk07Ci0KLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0
KFZNJik7Ci12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2Uq
KTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3Jt
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmNwcAppbmRleCA4YWMwODY2Mjc4YjUxMzkzYjY2OWVhMDlhN2I1NDhkNmQ5YTc2YjE0Li45
OWU3ZDJiY2QyOTk0ZGNiZTdmNTU4ODlhYjM3ZGU3MGVmYTRkNzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKQEAgLTM0
LDQzICszNCw1NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCitzdGF0
aWMgVmVjdG9yPEdQUlJlZz4gZ2V0UGlubmVkUmVnaXN0ZXJzKHVuc2lnbmVkIHJlbWFpbmluZ1Bp
bm5lZFJlZ2lzdGVycykKK3sKKyAgICBWZWN0b3I8R1BSUmVnPiByZWdpc3RlcnM7CisgICAganNj
Q2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJl
ZyByZWcpIHsKKyAgICAgICAgaWYgKCFyZWcuaXNHUFIoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKKyAgICAgICAgaWYgKCFyZW1haW5pbmdQ
aW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJTZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJz
OworICAgICAgICByZWdpc3RlcnMuYXBwZW5kKGdwcik7CisgICAgfSk7CisgICAgcmV0dXJuIHJl
Z2lzdGVyczsKK30KKwogY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3Rlcklu
Zm86OmdldCgpCiB7CiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxQaW5uZWRSZWdpc3Rl
ckluZm8+IHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mbzsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShzdGF0
aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnLCBbXSAoKSB7CiAgICAgICAgIFZlY3RvcjxQaW5uZWRT
aXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwotICAgICAgICBHUFJSZWcgYmFzZU1lbW9y
eVBvaW50ZXI7CisgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlciA9IEludmFsaWRHUFJS
ZWc7CisgICAgICAgIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50ZXIgPSBJbnZhbGlkR1BSUmVnOwog
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9y
eSBzaXplIHJlZ2lzdGVyLCBhbmQgd2Ugc2hvdWxkIGFsbG93IGRpZmZlcmVudAogICAgICAgICAv
LyAgICAgICAgV2ViQXNzZW1ibHkuSW5zdGFuY2UgdG8gaGF2ZSBkaWZmZXJlbnQgcGlucy4gUmln
aHQgbm93IHdlIHRha2UgYSB2ZWN0b3Igd2l0aCBvbmx5IG9uZSBlbnRyeS4KICAgICAgICAgLy8g
ICAgICAgIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBzaXplIHJlZ2lzdGVyLCB3ZSBjYW4gaGF2
ZSBvbmUgZm9yIGVhY2ggbG9hZCBzaXplIGNsYXNzLgogICAgICAgICAvLyAgICAgICAgc2VlOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKLSAgICAgICAgdW5zaWduZWQgcmVt
YWluaW5nUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKLSAgICAgICAg
anNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0g
KFJlZyByZWcpIHsKLSAgICAgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5ncHIoKTsKLSAgICAgICAg
ICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpLmdldChyZWcpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgPT0gMSkgewotICAgICAgICAgICAgICAgIGJh
c2VNZW1vcnlQb2ludGVyID0gZ3ByOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJl
Z2lzdGVycy0tOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc2l6ZVJlZ2lz
dGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNpemVzWy0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJz
IC0gMV0gfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIEFTU0VSVCghcmVtYWluaW5nUGlubmVk
UmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChX
VEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNlTWVtb3J5UG9pbnRlcik7CisgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKKyAg
ICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICArK251bWJlck9mUGlubmVkUmVn
aXN0ZXJzOworICAgICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdzID0gZ2V0UGlubmVkUmVn
aXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0ZXJzKTsKKworICAgICAgICBiYXNlTWVtb3J5UG9p
bnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkp
CisgICAgICAgICAgICB3YXNtQ29udGV4dFBvaW50ZXIgPSBwaW5uZWRSZWdzLnRha2VMYXN0KCk7
CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNpemVzLnNpemUoKSA9PSBwaW5uZWRSZWdzLnNpemUo
KSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaW5uZWRTaXplcy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdpc3RlcnMuYXBwZW5kKHsgcGlubmVkUmVnc1tpXSwg
cGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25z
dHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250
ZXh0UG9pbnRlcik7CiAgICAgfSk7CiAKICAgICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJ
bmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhW
ZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFz
ZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhW
ZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFz
ZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNtQ29udGV4dFBvaW50ZXIpCiAgICAgOiBzaXplUmVn
aXN0ZXJzKFdURk1vdmUoc2l6ZVJlZ2lzdGVycykpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihi
YXNlTWVtb3J5UG9pbnRlcikKKyAgICAsIHdhc21Db250ZXh0UG9pbnRlcih3YXNtQ29udGV4dFBv
aW50ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeUluZm9ybWF0aW9uLmgKaW5kZXggNmRlMDcwYTEwNDUyZmY2YmIzYzVjMjUwNDExZjEwZTkx
Mzg5ZTRhMi4uMTE3OWI1Zjc1MDJlMWYyNmIwNmNhZDc5NjA4ZmRhMWNhZTQyYTRmOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJH
UFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5
LmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VDb3VudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAg
LTQzLDggKzQ0LDIwIEBAIHN0cnVjdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvIHsKIHN0cnVjdCBQ
aW5uZWRSZWdpc3RlckluZm8gewogICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBz
aXplUmVnaXN0ZXJzOwogICAgIEdQUlJlZyBiYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBHUFJSZWcg
d2FzbUNvbnRleHRQb2ludGVyOwogICAgIHN0YXRpYyBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8m
IGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVy
SW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5uZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNp
emVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywgR1BSUmVnKTsKKworICAgIFJlZ2lzdGVyU2V0IHRv
U2F2ZSgpIGNvbnN0CisgICAgeworICAgICAgICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC5zZXQoYmFzZU1lbW9yeVBvaW50ZXIpOworICAgICAgICBpZiAod2FzbUNvbnRleHRQ
b2ludGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250
ZXh0UG9pbnRlcik7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgaW5mbyA6IHNpemVSZWdpc3Rl
cnMpCisgICAgICAgICAgICByZXN1bHQuc2V0KGluZm8uc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CiB9OwogCiBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7CkBA
IC03Myw2ICs4NiwxNSBAQCBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7CiAgICAgYm9vbCBtX2lz
SW1wb3J0IHsgZmFsc2UgfTsKIH07CiAKK2lubGluZSBib29sIHVzZUZhc3RUTFMoKQoreworI2lm
IEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXQVNNKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5j
cHAKaW5kZXggMWMxMWIwY2E2NWM5MTc0MmY4ZTQ4MTNjMjRkOTc1ZjY1ZWViYWExOC4uZTNiZDc0
MDI4ZTI4MmYyODU2YzM0YjllNTA3MzZiNmI1ODc0ZThmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVs
ZS5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5VG9KU0NhbGxlZS5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04MSw2ICs4Miw3IEBAIHZvaWQg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG1vZHVsZSwKIAogICAgIG1fY29kZUJsb2NrLnNldCh2bSwgdGhpcywgbW9kdWxl
LT5jb2RlQmxvY2soKSk7CiAgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KHZtLCB0aGlz
LCBtb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIG1fY2FsbGVlLnNldCh2bSwgdGhpcywgbW9k
dWxlLT5jYWxsZWUoKSk7CiAgICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgImV4cG9ydHMiKSwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0LCBOb25lKTsKIH0KIApAQCAt
OTksNiArMTAxLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9tZW1vcnkpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
dGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2
aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tb2R1bGUoKS0+bW9k
dWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRoaXNPYmplY3QtPm1fbnVtSW1wb3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmlu
ZGV4IGUyMjg0OTY5NjcyMDVhMzEzNmM4ODNiYmRlMzI2YWRiYzcxMTEzMGQuLjQyYWExYjM1ZDFi
MmE2ZjkzOWI5ZDMyOTY2YjVmMzdlNGVlNjQxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCkBAIC0zNyw2ICszNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKIGNs
YXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAK
IGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiBwdWJsaWM6CkBAIC05Nyw2ICs5OCw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxl
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV90YWJs
ZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQ2FsbGVlKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2dsb2JhbHMpOyB9CiAgICAgc3RhdGljIHNpemVfdCBv
ZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpTQ2VsbD4pPihzaXplb2YoSlNXZWJBc3NlbWJseUluc3Rh
bmNlKSk7IH0KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90
IGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJldHVybiBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpICsg
aW1wb3J0RnVuY3Rpb25OdW0gKiBzaXplb2Yoc2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KSk7
IH0KQEAgLTExNyw2ICsxMTksNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVz
cGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpT
V2ViQXNzZW1ibHlNZW1vcnk+IG1fbWVtb3J5OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2Vt
Ymx5VGFibGU+IG1fdGFibGU7CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZT4gbV9jYWxsZWU7CiAgICAgTWFsbG9jUHRyPHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgdW5z
aWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAppbmRleCBmNDE0NjdmNGZh
YWU5ZGFhMDgxNjc0ZTdmMjA1NzhkNGM1ZWI2ZjNjLi45Mzk0MzdlNDM5Yzg1YTU5MmIxOTg1NGE3
MTQyM2M4ZGFkYjM1Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
Ildhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVBs
YW4uaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTMyLDYgKzEzMyw3IEBAIHZv
aWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIHVpbnQ4X3QqIHNvdXJjCiAgICAgbV9zb3VyY2VCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHNvdXJjZSwgYnl0ZVNpemUpOwogICAgIG1fbW9kdWxlSW5mb3JtYXRpb24gPSBwbGFu
LnRha2VNb2R1bGVJbmZvcm1hdGlvbigpOwogICAgIG1fZXhwb3J0U3ltYm9sVGFibGUuc2V0KHZt
LCB0aGlzLCBleHBvcnRTeW1ib2xUYWJsZSk7CisgICAgbV9jYWxsZWUuc2V0KHZtLCB0aGlzLCBX
ZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZSh2bSwgdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVl
U3RydWN0dXJlLmdldCgpLCB0aGlzKSk7CiAgICAgY29kZUJsb2NrRm9yKGNvZGVCbG9jay0+bW9k
ZSgpKS5zZXQodm0sIHRoaXMsIGNvZGVCbG9jayk7CiB9CiAKQEAgLTE0Nyw2ICsxNDksNyBAQCB2
b2lkIEpTV2ViQXNzZW1ibHlNb2R1bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9leHBvcnRTeW1ib2xU
YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBXYXNtOjpOdW1iZXJPZk1lbW9yeU1vZGVzOyArK2kpCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29kZUJsb2Nrc1tpXSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9k
dWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmgKaW5kZXggMzg5ZTYzYTMzNWMxYzExN2I2OTc2OTcxMGM2M2JkN2Y4MzRlODZlNC4uMDQxNDEw
NGJjNjg2NzgzMTI1OTk3MTljMjEzOGM2ODg5MjIyMjI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApAQCAtNDMsNiArNDMs
NyBAQCBjbGFzcyBQbGFuOwogCiBjbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNzIEpTV2ViQXNzZW1i
bHlNZW1vcnk7CitjbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpTV2ViQXNz
ZW1ibHlNb2R1bGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgpAQCAt
NjAsNiArNjEsNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlIDogcHVibGljIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IHsKICAgICB7CiAgICAgICAgIHJldHVybiBtX21vZHVsZUluZm9ybWF0aW9u
LT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNl
KTsKICAgICB9CisgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxlZS5nZXQoKTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgY29kZSBibG9jayB0
aGF0IHRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGNvbXBpbGVkIGV4cGVjdGluZyB0byB1c2Uu
IFRoaXMgd29uJ3QgbmVlZCB0byByZWNvbXBpbGUuCiAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9j
ayogY29kZUJsb2NrKCkgeyByZXR1cm4gY29kZUJsb2NrRm9yKG1fbW9kdWxlSW5mb3JtYXRpb24t
Pm1lbW9yeS5tb2RlKCkpLmdldCgpOyB9CkBAIC03OSw2ICs4MSw3IEBAIGNsYXNzIEpTV2ViQXNz
ZW1ibHlNb2R1bGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbj4gbV9tb2R1bGVJbmZvcm1hdGlvbjsKICAg
ICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fZXhwb3J0U3ltYm9sVGFibGU7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2Nrc1tXYXNtOjpOdW1i
ZXJPZk1lbW9yeU1vZGVzXTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVl
PiBtX2NhbGxlZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkMWE4
MDFjM2VjOTExYTE5ZjA2YWI3OWY5OGEzMzkwMWY1YzU3YzUxLi5iZGIxZjExN2Y3YWM2OWFiYWVm
Yjg4MmY0MDc5ZjBiMmVmZDdlMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMzksMTUgKzM5LDMzIEBACiAj
aW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2lu
Y2x1ZGUgIlZNLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRm9y
bWF0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0VExTLmg+
CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNv
bnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJs
eUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShX
ZWJBc3NlbWJseUZ1bmN0aW9uKSB9OwogCitzdGF0aWMgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBs
b2FkV2FzbUNvbnRleHQoVk0mIHZtKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAg
aWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2Rp
cmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworI2VuZGlmCisgICAgcmV0dXJuIHZtLndhc21D
b250ZXh0OworfQorCitzdGF0aWMgdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQor
ICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKKyAgICAgICAgX3B0aHJl
YWRfc2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KGluc3RhbmNlKSk7CisjZW5kaWYKKyAgICB2bS53YXNtQ29udGV4dCA9IGluc3RhbmNl
OworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1i
bHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
QEAgLTEyMSw2ICsxMzksMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50LCBhcmdDb3VudCwg
cmVtYWluaW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGggdGhpcyBlbnRpcmUg
ZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0ZWQgYnkgQjMuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYKKyAgICAvLyBGSVhN
RTogV2Ugd291bGQgbGlrZSB0byBtYWtlIGxvYWRXYXNtQ29udGV4dCBhbmQgc3RvcmVXYXNtQ29u
dGV4dCBuby1vcCBpZiB3ZSB1c2UgcGlubmVkIHJlZ2lzdGVycy4KKyAgICAvLyBIb3dldmVyLCB3
ZSB1c2UgVk0ud2FzbUNvbnRleHQgZmllbGQgdG8gcGFzcyBpbnN0YW5jZSB0byB3YXNtIGZ1bmN0
aW9uJ3MgSlMgZ2x1ZSBjb2RlLgorICAgIC8vIFdlIHNob3VsZCBwYXNzIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSBkaXJlY3RseSB0byB2bUVudHJ5VG9XYXNtLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxODIKICAgICBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwogICAg
IHN0b3JlV2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CiAgICAgQVNT
RVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CkBAIC0xNTMsNiArMTc1LDcgQEAgV2ViQXNz
ZW1ibHlGdW5jdGlvbiogV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE8KICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpOwogICAgIFdlYkFzc2VtYmx5RnVuY3Rp
b24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlGdW5j
dGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCB3YXNtRW50cnlwb2ludCwgc2lnbmF0dXJlSW5kZXgpOwogICAgIGZ1bmN0aW9uLT5m
aW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lLCBpbnN0YW5jZSwganNF
bnRyeXBvaW50LCB3YXNtRW50cnlwb2ludCk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZnVu
Y3Rpb24tPmlzTGFyZ2VBbGxvY2F0aW9uKCksICJXZWJBc3NlbWJseUZ1bmN0aW9uIHNob3VsZCBi
ZSBhbGxvY2F0ZWQgbm90IGluIGxhcmdlIGFsbG9jYXRpb24gc2luY2UgaXQgaXMgSlNDYWxsZWUu
Iik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcAppbmRleCA0ZTg5MWEw
OWEyMGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFmLi40YjljODZmZDQ5OWYzZGM5NmE1MjY3
OTEyNGYyNDg3YjQ2YjA5MzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKQEAgLTI5LDIxICsyOSwyMiBAQAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBD
bGFzc0luZm8gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVRv
SlNDYWxsZWUiLCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdlYkFzc2VtYmx5VG9K
U0NhbGxlZSkgfTsKIAotV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUpCiB7CiAgICAgV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3Nl
bWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIHN0cnVj
dHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgY2FsbGVlLT5maW5p
c2hDcmVhdGlvbih2bSwgbW9kdWxlKTsKICAgICByZXR1cm4gY2FsbGVlOwogfQogCiBTdHJ1Y3R1
cmUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
Q2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhXZWJBc3NlbWJs
eVRvSlNDYWxsZWVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZTo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCkBAIC01MSwxNSArNTIsMTkgQEAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJB
c3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAot
dm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQg
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1i
bHlNb2R1bGUqIG1vZHVsZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
bV9tb2R1bGUuc2V0KHZtLCB0aGlzLCBtb2R1bGUpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit2b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PFdlYkFz
c2VtYmx5VG9KU0NhbGxlZSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPldlYkFzc2VtYmx5VG9K
U0NhbGxlZTo6fldlYkFzc2VtYmx5VG9KU0NhbGxlZSgpOworICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX21vZHVsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAppbmRleCA0OTZj
ODg1NzZjMzlmNzIzMjcyMzk4YTU2NjVjOTA0Y2M1YzFiMTIzLi4xOWY0Nzk1YmMyODM0ZjNiODdm
YTMwM2ZiYzEwNDZmYTVmYjliODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaApAQCAtMzEsMjEgKzMxLDI3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWUgOiBwdWJsaWMg
SlNDZWxsIHsKK2NsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7CisKK2NsYXNzIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYg
SlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGlj
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3Rh
dGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNXZWJB
c3NlbWJseU1vZHVsZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBt
b2R1bGUoKSB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNXZWJB
c3NlbWJseU1vZHVsZSopOwogICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYsIFN0cnVjdHVy
ZSopOworCisgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305607</attachid>
            <date>2017-03-28 11:09:37 -0700</date>
            <delta_ts>2017-03-28 11:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170329030935.patch</filename>
            <type>text/plain</type>
            <size>60339</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
M2FkNDRiNDBiOGJjOTA5NmVjZmI1NzRhNDc2ODk5N2E4NjdhNDUyLi41ZjcyNTRjODY0NjU0Zjg0
ZTk2ZWZkNDJmMzZkNzRlM2Y5YWI2M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IGFkZCBmYWxsYmFjayB0byB1c2UgcGlubmVk
IHJlZ2lzdGVyIHRvIGxvYWQvc3RvcmUgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBwaW5uZWQgcmVnaXN0
ZXIgdG8gaG9sZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UsCisgICAgICAgIHdoaWNoIGlzIHVzZWQg
dG8gcmVwcmVzZW50IHRoZSBjb250ZXh0IG9mIHJ1bm5pbmcgV2FzbSBjb2RlLgorICAgICAgICBX
aGlsZSB3ZSB1c2UgZmFzdCBUTFMgdG8gaG9sZCB0aGUgY29udGV4dCBpbiBtYWNPUywgd2UgZG8g
bm90IGhhdmUKKyAgICAgICAgYW55IHN5c3RlbSByZXNlcnZlZCBmYXN0IFRMUyBzbG90IGluIHRo
ZSBvdGhlciBzeXN0ZW1zLiBUaGlzIHBpbm5lZAorICAgICAgICByZWdpc3RlciBhcHByb2FjaCBp
cyB1c2VkIGluIHRoZXNlIHN5c3RlbXMuIFRoZXNlIGNoYW5nZXMgZGVjb3VwbGUKKyAgICAgICAg
Vk0gZnJvbSBXYXNtIG1vZHVsZSB0byBtYWtlIFdhc20gbW9kdWxlIHBvc2l0aW9uIGluZGVwZW5k
ZW50IGNvZGUuCisKKyAgICAgICAgV2hpbGUgdXNpbmcgZmFzdCBUTFMgY291bGQgYmUgYmVuZWZp
Y2lhbCBpbiB4NjQgc3lzdGVtcyB3aGljaCBudW1iZXIgb2YKKyAgICAgICAgcmVnaXN0ZXJzIGlz
IHJlbGF0aXZlbHkgc21hbGwsIHBpbm5lZCByZWdpc3RlciBhcHByb2FjaCBjb3VsZCBiZQorICAg
ICAgICBiZW5lZmljaWFsIGluIEFSTTY0IHdoaWNoIGhhcyBwbGVudHkgb2YgcmVnaXN0ZXJzLiBJ
biBtYWNPUywgd2UgY2FuCisgICAgICAgIHN3aXRjaCB0aGUgaW1wbGVtZW50YXRpb24gd2l0aCB0
aGUgcnVudGltZSBmbGFnLiBUaHVzIG1hY09TIHBvcnQgY2FuCisgICAgICAgIGNvbXBhcmUgdGhl
IHBlcmZvcm1hbmNlIGFuZCBkZWNpZGUgd2hpY2ggaW1wbGVtZW50YXRpb24gaXMgdXNlZCBhZnRl
cgorICAgICAgICBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
Ojpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3Jl
V2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAg
ICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6bG9hZFdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpzdG9yZVdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3Bw
OgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU93bmVyKToKKyAgICAgICAgKEpTQzo6bGlua0Zv
cik6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAoSlNDOjpp
c1dlYkFzc2VtYmx5VG9KU0NhbGxlZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNBbnlXYXNtQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9TdGFja0ZyYW1lLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6CisgICAgICAgICog
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5
QmFzZUFuZFNpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpyZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9X
YXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206OnN0b3JlV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6
bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAg
ICAgICogd2FzbS9XYXNtQ29udGV4dC5oOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0UGlubmVkUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlND
OjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAg
ICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlu
bmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUpOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExT
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHA6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6b2Zmc2V0T2ZDYWxsZWUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseU1vZHVsZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisgICAgICAg
IChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OmNhbGxlZSk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJs
eVRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRv
SlNDYWxsZWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRvSlND
YWxsZWU6OmRlc3Ryb3kpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlLmg6CisKIDIwMTctMDMtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYmVs
b25ncyBpbiBKYXZhU2NyaXB0Q29yZS93YXNtL2pzIG5vdCBKYXZhU2NyaXB0Q29yZS93YXNtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAppbmRleCAyMmE3YmE3MGY0N2M1
MDE2MzM4MzI5OWRhMGUzZTM0YzViY2RjMjI3Li41NmQ1Y2JlYTI0M2RlZTRhMGIxZWUyZTU3M2Vj
ODZhOGI2NTQ2OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgK
QEAgLTI5OCw2ICsyOTgsMTEgQEAgY2xhc3MgTWFya2VkQmxvY2sgewogICAgIAogICAgIGJvb2wg
aXNNYXJrZWRSYXcoY29uc3Qgdm9pZCogcCk7CiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9uOyB9CisKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mVk0oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihNYXJrZWRCbG9jaywgbV92bSk7CisgICAgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDc4MzIwNDc5MjE5
MjQ0NWI1YmU3ZjhjYzU0ZTIxYjYxODhmOWI3NWQuLjI4MDQ1Y2U2MjNjNDhkZjhmOWIwYzYwZTg5
OTcxYTk3YjM1MTc4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyNpbmNs
dWRlICJXYXNtTWVtb3J5SW5mb3JtYXRpb24uaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsK
IAogRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luKQpAQCAtNzY2LDYgKzc3MCw0OSBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbihKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHJlc3VsdAogICAgIGRvbmUubGluayh0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkK
K3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RUTFMoKSkgeworICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zmc2V0Rm9y
S2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorICAgIG1vdmUoV2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS53YXNtQ29u
dGV4dFBvaW50ZXIsIGRzdCk7Cit9CisKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21D
b250ZXh0KEdQUlJlZyBzcmMpCit7CisjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKKyAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpIHsKKyAgICAgICAgc3RvcmVUb1RMU1B0
cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIG1vdmUoc3JjLCBXYXNtOjpQaW5uZWRSZWdp
c3RlckluZm86OmdldCgpLndhc21Db250ZXh0UG9pbnRlcik7Cit9CisKK2Jvb2wgQXNzZW1ibHlI
ZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKK3sKKyNp
ZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZh
c3RUTFMoKSkKKyAgICAgICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hS
ZWdpc3RlcigpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFzc2VtYmx5
SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQorewor
I2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKQorICAgICAgICByZXR1cm4gc3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNo
UmVnaXN0ZXIoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDUwMGQ2ODgyMjM5Y2ViOWIyMDk3
MjU0NDZkM2NjZDg4OWJkYTE4MjguLmE3OGNjNjlmOWE3OTUxNjUyNDM1MjJiYjYyMjA3NDkyN2Qy
YTQ2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApA
QCAtMTYzNiw0NSArMTYzNiwxMiBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFj
cm9Bc3NlbWJsZXIgewogICAgIHZvaWQgd2FuZ3NJbnQ2NEhhc2goR1BSUmVnIGlucHV0QW5kUmVz
dWx0LCBHUFJSZWcgc2NyYXRjaCk7CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZFdhc21Db250ZXh0
KEdQUlJlZyBkc3QpCi0gICAgewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkgewotICAgICAgICAgICAgbG9hZEZy
b21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICAvLyBGSVhN
RTogU2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKLSAgICAgICAgbG9hZFB0cigmbV92bS0+
d2FzbUNvbnRleHQsIGRzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBzdG9yZVdhc21Db250ZXh0KEdQ
UlJlZyBzcmMpCi0gICAgewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChP
cHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBzdG9y
ZVRvVExTUHRyKHNyYywgZmFzdFRMU09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSkp
OwotI2VuZGlmCi0gICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRv
IGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3
MwotICAgICAgICBzdG9yZVB0cihzcmMsICZtX3ZtLT53YXNtQ29udGV4dCk7Ci0gICAgfQotCi0g
ICAgc3RhdGljIGJvb2wgbG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
Ci0gICAgewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAgIGlmIChPcHRpb25zOjp1
c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0
ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3RlcigpCi0gICAgewotI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgICAg
IGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKLSAgICAgICAgICAgIHJldHVy
biBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKKyAgICB2b2lkIGxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KTsKKyAgICB2
b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYyk7CisgICAgc3RhdGljIGJvb2wgbG9hZFdh
c21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOworICAgIHN0YXRpYyBib29sIHN0
b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVk0qIG1fdm07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA3ZGRjNmJhZTAwNmRjZmMxYTNkNzcx
YTA2MzEzNzNkZDI1Nzk5YjVhLi4xOTc4NDgwYWRjYzE4NGVlZTQ4ZDliNWJhZTg3NTdlYmQwYzky
YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTU5LDcgKzU5LDYg
QEAKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKLSNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0u
aD4KQEAgLTU3NywyNSArNTc2LDEzIEBAIHN0YXRpYyB2b2lkIGxpbmtTbG93Rm9yKFZNKiB2bSwg
Q2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8pCiAgICAgY2FsbExpbmtJbmZvLnNldFNsb3dTdHVi
KGNyZWF0ZUpJVFN0dWJSb3V0aW5lKHZpcnR1YWxUaHVuaywgKnZtLCBudWxscHRyLCB0cnVlKSk7
CiB9CiAKLXN0YXRpYyBib29sIGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiB2bSwgSlNDZWxs
KiBjYWxsZWUpCi17Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIC8vIFRoZSBXZWJBc3Nl
bWJseSAtPiBKUyBzdHViIHNldHMgaXQgY2FsbGVyIGZyYW1lJ3MgY2FsbGVlIHRvIGEgc2luZ2xl
dG9uIHdoaWNoIGxpdmVzIG9uIHRoZSBWTS4KLSAgICByZXR1cm4gY2FsbGVlID09IHZtLndlYkFz
c2VtYmx5VG9KU0NhbGxlZS5nZXQoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAg
ICBVTlVTRURfUEFSQU0oY2FsbGVlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQotfQotCi1zdGF0aWMgSlNDZWxsKiB3ZWJBc3NlbWJseU93bmVyKFZN
JiB2bSkKK3N0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoSlNDZWxsKiBjYWxsZWUpCiB7
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIC8vIEVhY2ggV2ViQXNzZW1ibHkuSW5zdGFu
Y2Ugc2hhcmVzIHRoZSBzdHVicyBmcm9tIHRoZWlyIFdlYkFzc2VtYmx5Lk1vZHVsZSwgd2hpY2gg
YXJlIHRoZXJlZm9yZSB0aGUgYXBwcm9wcmlhdGUgb3duZXIuCi0gICAgcmV0dXJuIGxvYWRXYXNt
Q29udGV4dCh2bSktPm1vZHVsZSgpOworICAgIHJldHVybiBqc0Nhc3Q8V2ViQXNzZW1ibHlUb0pT
Q2FsbGVlKj4oY2FsbGVlKS0+bW9kdWxlKCk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKGNhbGxlZSk7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkp
CkBAIC02MTIsNyArNTk5LDcgQEAgdm9pZCBsaW5rRm9yKAogICAgIENvZGVCbG9jayogY2FsbGVy
Q29kZUJsb2NrID0gY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpOwogCiAgICAgLy8gV2ViQXNzZW1i
bHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9jay4KLSAgICBKU0NlbGwq
IG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUo
KSkgPyB3ZWJBc3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwq
IG93bmVyID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/
IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6IGNhbGxlckNvZGVCbG9j
azsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQVNTRVJUKCFjYWxsTGlua0luZm8uaXNMaW5r
ZWQoKSk7CkBAIC03MzIsMTAgKzcxOSwxMCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0m
IHZtID0gY2FsbGVyRnJhbWUtPnZtKCk7CiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sg
PSBjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgYm9vbCBpc1dlYkFzc2VtYmx5ID0gaXNX
ZWJBc3NlbWJseVRvSlNDYWxsZWUodm0sIGNhbGxlckZyYW1lLT5jYWxsZWUoKSk7CisgICAgYm9v
bCBpc1dlYkFzc2VtYmx5ID0gaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoY2FsbGVyRnJhbWUtPmNh
bGxlZSgpKTsKIAogICAgIC8vIFdlYkFzc2VtYmx5IC0+IEpTIHN0dWJzIGRvbid0IGhhdmUgYSB2
YWxpZCBDb2RlQmxvY2suCi0gICAgSlNDZWxsKiBvd25lciA9IGlzV2ViQXNzZW1ibHkgPyB3ZWJB
c3NlbWJseU93bmVyKHZtKSA6IGNhbGxlckNvZGVCbG9jazsKKyAgICBKU0NlbGwqIG93bmVyID0g
aXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIoY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA6
IGNhbGxlckNvZGVCbG9jazsKICAgICBBU1NFUlQob3duZXIpOwogCiAgICAgQ2FsbFZhcmlhbnRM
aXN0IGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKaW5kZXggMDg1N2UzNGJmMWQyYjA0NmQ3YWJjYTQ4OTEyMWMxZjM4YzkwMjJmYy4uNTIxN2I4
MjU4NmRlZTVlNGY5ZjBkYTRjNmIwNzg1NDYwMjYyNDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1
ZGUgIk1hdGhDb21tb24uaCIKICNpbmNsdWRlICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bC5oIgogI2luY2x1ZGUgIlNwZWNpYWxpemVkVGh1bmtKSVQuaCIKLSNpbmNsdWRlICJXYXNtQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0lu
bGluZUFTTS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtMTE0OCwx
NiArMTE0NywxNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdGhyb3dFeGNlcHRpb25Gcm9tV2Fz
bVRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICB9CiAKICAgICBqaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubG9hZFdh
c21Db250ZXh0KEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IGNhbGwgPSBqaXQuY2FsbCgpOwogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7CiAK
LSAgICB2b2lkICgqdGhyb3dXYXNtRXhjZXB0aW9uKShFeGVjU3RhdGUqLCBXYXNtOjpFeGNlcHRp
b25UeXBlKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSkg
eworICAgIHZvaWQgKCp0aHJvd1dhc21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2Vw
dGlvblR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywg
V2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHdhc21Db250
ZXh0KSB7CiAgICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbG9hZFdhc21Db250ZXh0KCp2bSktPmdsb2Jh
bE9iamVjdCgpOworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHdh
c21Db250ZXh0LT5nbG9iYWxPYmplY3QoKTsKIAogICAgICAgICAgICAgSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvciogZXJyb3IgPSBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yOjpjcmVhdGUoZXhl
YywgKnZtLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5UnVudGltZUVycm9yU3RydWN0dXJlKCks
IFdhc206OmVycm9yTWVzc2FnZUZvckV4Y2VwdGlvblR5cGUodHlwZSkpOwogICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCA4YjYxNWExYTNhNTE1MTA1OTY3MjA2NWQ0
NzJiN2U4YWU4NTg2OTlhLi4wYWZmMTA4MGFjYjIwM2JlNGU0MzA5ZTM4ZTVhMTQyOGQ1MWZlNGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTU2LDIx
ICsxNTYsMjEgQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgCiAg
ICAgU1RBVElDX0FTU0VSVChTdHJpbmdUeXBlID09IDYpOwogICAgIFNUQVRJQ19BU1NFUlQoU3lt
Ym9sVHlwZSA9PSA3KTsKLSAgICBTVEFUSUNfQVNTRVJUKE9iamVjdFR5cGUgPT0gMjMpOwotICAg
IFNUQVRJQ19BU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDI0KTsKLSAgICBTVEFUSUNfQVNTRVJU
KEpTRnVuY3Rpb25UeXBlID09IDI2KTsKLSAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAz
NCk7Ci0gICAgU1RBVElDX0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09IDM1KTsKLSAgICBTVEFU
SUNfQVNTRVJUKFByb3h5T2JqZWN0VHlwZSA9PSA1Myk7Ci0gICAgU1RBVElDX0FTU0VSVChJbnQ4
QXJyYXlUeXBlID09IDM2KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM3
KTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDMyQXJyYXlUeXBlID09IDM4KTsKLSAgICBTVEFUSUNf
QVNTRVJUKFVpbnQ4QXJyYXlUeXBlID09IDM5KTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xh
bXBlZEFycmF5VHlwZSA9PSA0MCk7Ci0gICAgU1RBVElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUg
PT0gNDEpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDMyQXJyYXlUeXBlID09IDQyKTsKLSAgICBT
VEFUSUNfQVNTRVJUKEZsb2F0MzJBcnJheVR5cGUgPT0gNDMpOwotICAgIFNUQVRJQ19BU1NFUlQo
RmxvYXQ2NEFycmF5VHlwZSA9PSA0NCk7CisgICAgU1RBVElDX0FTU0VSVChPYmplY3RUeXBlID09
IDI0KTsKKyAgICBTVEFUSUNfQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9PSAyNSk7CisgICAgU1RB
VElDX0FTU0VSVChKU0Z1bmN0aW9uVHlwZSA9PSAyNyk7CisgICAgU1RBVElDX0FTU0VSVChBcnJh
eVR5cGUgPT0gMzUpOworICAgIFNUQVRJQ19BU1NFUlQoRGVyaXZlZEFycmF5VHlwZSA9PSAzNik7
CisgICAgU1RBVElDX0FTU0VSVChQcm94eU9iamVjdFR5cGUgPT0gNTQpOworICAgIFNUQVRJQ19B
U1NFUlQoSW50OEFycmF5VHlwZSA9PSAzNyk7CisgICAgU1RBVElDX0FTU0VSVChJbnQxNkFycmF5
VHlwZSA9PSAzOCk7CisgICAgU1RBVElDX0FTU0VSVChJbnQzMkFycmF5VHlwZSA9PSAzOSk7Cisg
ICAgU1RBVElDX0FTU0VSVChVaW50OEFycmF5VHlwZSA9PSA0MCk7CisgICAgU1RBVElDX0FTU0VS
VChVaW50OENsYW1wZWRBcnJheVR5cGUgPT0gNDEpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDE2
QXJyYXlUeXBlID09IDQyKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQzMkFycmF5VHlwZSA9PSA0
Myk7CisgICAgU1RBVElDX0FTU0VSVChGbG9hdDMyQXJyYXlUeXBlID09IDQ0KTsKKyAgICBTVEFU
SUNfQVNTRVJUKEZsb2F0NjRBcnJheVR5cGUgPT0gNDUpOwogICAgIFNUQVRJQ19BU1NFUlQoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsKICAgICBTVEFUSUNfQVNTRVJUKEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UgPT0gMik7CiAgICAgU1RBVElDX0FTU0VSVChGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCA9PSAweDQwMDAwMDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBlOGUyZGI4Y2RhYzJlMWUx
MGQyYjhhM2Y1ZmY3MDYxOWZkZTAxZDRmLi5hYjNjMGM4ZTc3MWZlZGFlOWI2NWRhY2RiNjIyNTFh
MTg3YTNjOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0zNDUsMjQgKzM0NSwyNCBAQCBjb25zdCBTbG93UHV0QXJy
YXlTdG9yYWdlU2hhcGUgPSAweDBDCiAjIFR5cGUgY29uc3RhbnRzLgogY29uc3QgU3RyaW5nVHlw
ZSA9IDYKIGNvbnN0IFN5bWJvbFR5cGUgPSA3Ci1jb25zdCBPYmplY3RUeXBlID0gMjMKLWNvbnN0
IEZpbmFsT2JqZWN0VHlwZSA9IDI0Ci1jb25zdCBKU0Z1bmN0aW9uVHlwZSA9IDI2Ci1jb25zdCBB
cnJheVR5cGUgPSAzNAotY29uc3QgRGVyaXZlZEFycmF5VHlwZSA9IDM1Ci1jb25zdCBQcm94eU9i
amVjdFR5cGUgPSA1MworY29uc3QgT2JqZWN0VHlwZSA9IDI0Citjb25zdCBGaW5hbE9iamVjdFR5
cGUgPSAyNQorY29uc3QgSlNGdW5jdGlvblR5cGUgPSAyNworY29uc3QgQXJyYXlUeXBlID0gMzUK
K2NvbnN0IERlcml2ZWRBcnJheVR5cGUgPSAzNgorY29uc3QgUHJveHlPYmplY3RUeXBlID0gNTQK
IAogIyBUaGUgdHlwZWQgYXJyYXkgdHlwZXMgbmVlZCB0byBiZSBudW1iZXJlZCBpbiBhIHBhcnRp
Y3VsYXIgb3JkZXIgYmVjYXVzZSBvZiB0aGUgbWFudWFsbHkgd3JpdHRlbgogIyBzd2l0Y2ggc3Rh
dGVtZW50IGluIGdldF9ieV92YWwgYW5kIHB1dF9ieV92YWwuCi1jb25zdCBJbnQ4QXJyYXlUeXBl
ID0gMzYKLWNvbnN0IEludDE2QXJyYXlUeXBlID0gMzcKLWNvbnN0IEludDMyQXJyYXlUeXBlID0g
MzgKLWNvbnN0IFVpbnQ4QXJyYXlUeXBlID0gMzkKLWNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlw
ZSA9IDQwCi1jb25zdCBVaW50MTZBcnJheVR5cGUgPSA0MQotY29uc3QgVWludDMyQXJyYXlUeXBl
ID0gNDIKLWNvbnN0IEZsb2F0MzJBcnJheVR5cGUgPSA0MwotY29uc3QgRmxvYXQ2NEFycmF5VHlw
ZSA9IDQ0Citjb25zdCBJbnQ4QXJyYXlUeXBlID0gMzcKK2NvbnN0IEludDE2QXJyYXlUeXBlID0g
MzgKK2NvbnN0IEludDMyQXJyYXlUeXBlID0gMzkKK2NvbnN0IFVpbnQ4QXJyYXlUeXBlID0gNDAK
K2NvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSA9IDQxCitjb25zdCBVaW50MTZBcnJheVR5cGUg
PSA0MgorY29uc3QgVWludDMyQXJyYXlUeXBlID0gNDMKK2NvbnN0IEZsb2F0MzJBcnJheVR5cGUg
PSA0NAorY29uc3QgRmxvYXQ2NEFycmF5VHlwZSA9IDQ1CiAKIGNvbnN0IEZpcnN0QXJyYXlUeXBl
ID0gSW50OEFycmF5VHlwZQogY29uc3QgTGFzdEFycmF5VHlwZSA9IEZsb2F0NjRBcnJheVR5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IGFjZGQ0ZTg4YzBh
ZjE0YTA5Zjc2YmUyYTNhYTVhMTkwZWE2YjgwZTMuLjNkZmMyODVmZTc4YzJlYzg0ODA1ODMyZGZm
MTAyOWVlODI0Y2FkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cApAQCAtMjk4LDcgKzI5OCw3IEBAIEpTVmFsdWUgSlNDZWxsOjpnZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqKQogYm9vbCBKU0NlbGw6OmlzQW55V2FzbUNhbGxlZShWTSYgdm0pIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHJldHVybiBpbmhlcml0cyh2bSwg
SlNXZWJBc3NlbWJseUNhbGxlZTo6aW5mbygpKSB8fCBpbmhlcml0cyh2bSwgV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlOjppbmZvKCkpOworICAgIHJldHVybiBpbmhlcml0cyh2bSwgSlNXZWJBc3NlbWJs
eUNhbGxlZTo6aW5mbygpKSB8fCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZSh0aGlzKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKaW5kZXggNmE5ODBhODE4MmNhYmI2
N2U4ZWY2ODE4OGFmYmRkYWEwOTg2MDNlYy4uOTUwOTM1NmVjNmRlNTRlMDk2ZjA2MzlkODNiOTBk
YWUxZjNkYTg1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElu
bGluZXMuaApAQCAtMzQ2LDQgKzM0Niw5IEBAIGlubGluZSBKU09iamVjdCogSlNDZWxsOjp0b09i
amVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
cmV0dXJuIHRvT2JqZWN0U2xvdyhleGVjLCBnbG9iYWxPYmplY3QpOwogfQogCitpbmxpbmUgYm9v
bCBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShjb25zdCBKU0NlbGwqIGNlbGwpCit7CisgICAgcmV0
dXJuIGNlbGwtPnR5cGUoKSA9PSBXZWJBc3NlbWJseVRvSlNDYWxsZWVUeXBlOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKaW5kZXgg
NGQ3ZWU0OTgwNjA5NzAwOGFkMzY3MjgyMWIxMzIzMTA3N2VjM2RkZS4uNjJlMzc3MmY0MmI0N2E4
OTlhNDgwNTZlZGU5NDVmZGU3ZTY4ZmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlLmgKQEAgLTUzLDYgKzUzLDggQEAgZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBK
U1NvdXJjZUNvZGVUeXBlLAogICAgIEpTU2NyaXB0RmV0Y2hlclR5cGUsCiAKKyAgICBXZWJBc3Nl
bWJseVRvSlNDYWxsZWVUeXBlLAorCiAgICAgLy8gVGhlIE9iamVjdFR5cGUgdmFsdWUgbXVzdCBj
b21lIGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgaXMgYSBzdWJjbGFzcyBvZiBKU09iamVjdC4KICAg
ICBPYmplY3RUeXBlLAogICAgIEZpbmFsT2JqZWN0VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKaW5kZXggNmQ0Nzg2NGM5NzhkYzI3YTRlMzc1MDdk
MjI2ZGQ1N2E5YTBjY2NlMi4uMTY0YzRmNTdiY2Q0YjJjNGJmN2ZjMDc2NGE1ZTEwNDU0ZGE3YTJl
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKQEAg
LTcyLDEwICs3MiwxMCBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkg
Y29uc3QKICAgICB9CiAgICAgU3RyaW5nIG5hbWU7CiAgICAgaWYgKG1fY2FsbGVlKSB7CisgICAg
ICAgIGlmIChtX2NhbGxlZS0+aXNBbnlXYXNtQ2FsbGVlKCptX2NhbGxlZS0+dm0oKSkpCisgICAg
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCI8d2FzbT4iKTsKICAgICAgICAgaWYgKG1fY2Fs
bGVlLT5pc09iamVjdCgpKQogICAgICAgICAgICAgbmFtZSA9IGdldENhbGN1bGF0ZWREaXNwbGF5
TmFtZSh2bSwganNDYXN0PEpTT2JqZWN0Kj4obV9jYWxsZWUuZ2V0KCkpKS5pbXBsKCk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1fY2FsbGVlLT5pc0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgpKSkK
LSAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIjx3YXNtPiIpOwogICAgIH0KICAgICBy
ZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDg1MTE1NDJiNzdkZmM4ZTZmMmJlYWJmMWY4OTNj
NzczOWFiNzRiMzguLmQxMDgxNTNmNjg0ZTE5ZWM4OTQ0YmQ0NGYxMTI1YzE5ZmUxNzI2MDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0MCw3ICsyNDAsNiBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgd2ViQXNzZW1ibHlDYWxs
ZWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0
dXJlLnNldCgqdGhpcywgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7Ci0gICAgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlLnNldCgqdGhpcywgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGUoKnRoaXMsIHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVj
dHVyZS5nZXQoKSkpOwogI2VuZGlmCiAgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMsIFJlZ0V4
cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKaW5kZXggOWQ4NmFhMTlhOTMzY2VhMzhhYjVmMDIzMTg0NDU5Y2I2MDEwZjNi
Ny4uMTU4ZTY5OGJhNDg3MTI5MTU1NTU1OGRkMjZkNWZhYTA5Y2EzZDEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCkBAIC0zMzYsNyArMzM2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+
IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmU7Ci0gICAgU3Ry
b25nPEpTQ2VsbD4gd2ViQXNzZW1ibHlUb0pTQ2FsbGVlOwogI2VuZGlmCiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwpAQCAtNDkwLDYgKzQ4OSwxMSBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxWTT4gewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB0YXJnZXRNYWNo
aW5lUENGb3JUaHJvdyk7CiAgICAgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCB3YXNtQ29udGV4
dE9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB3YXNt
Q29udGV4dCk7CisgICAgfQorCiAgICAgdm9pZCByZXN0b3JlUHJldmlvdXNFeGNlcHRpb24oRXhj
ZXB0aW9uKiBleGNlcHRpb24pIHsgc2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7IH0KIAogICAgIHZv
aWQgY2xlYXJMYXN0RXhjZXB0aW9uKCkgeyBtX2xhc3RFeGNlcHRpb24gPSBudWxscHRyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5k
ZXggZmFjNTdhZGRhZjA3NGU5YThjZmU2MDYzMzM1ZjMwZGEyZTk2ZDNhMi4uYjg1M2NkNGU3OWM2
Zjg3NmYxMzRlMGVkNTI4MzZkYjI5MTJiYzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkIzQ29uc3RQdHJWYWx1ZS5oIgogI2luY2x1ZGUgIkIzRml4U1NBLmgiCiAjaW5jbHVkZSAi
QjNHZW5lcmF0ZS5oIgorI2luY2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIz
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzVmFsaWRhdGUuaCIKQEAgLTQ5LDcgKzUwLDYgQEAKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAj
aW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCi0jaW5jbHVkZSAiV2FzbUNvbnRleHQu
aCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21GdW5jdGlv
blBhcnNlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKQEAgLTIxOSw2ICsyMTksMTAgQEAg
Y2xhc3MgQjNJUkdlbmVyYXRvciB7CiAKICAgICB2b2lkIGVtaXRDaGVja3NGb3JNb2RPckRpdihC
Mzo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSBsZWZ0LCBFeHByZXNzaW9uVHlwZSByaWdodCk7CiAK
KyAgICBWYWx1ZSogbWF0ZXJpYWxpemVXYXNtQ29udGV4dChQcm9jZWR1cmUmLCBCYXNpY0Jsb2Nr
Kik7CisgICAgdm9pZCByZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiwgQmFzaWNCbG9jayos
IFZhbHVlKik7CisgICAgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShjb25zdCBN
ZW1vcnlJbmZvcm1hdGlvbiYsIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiwgQmFzaWNCbG9j
ayopOworCiAgICAgVk0mIG1fdm07CiAgICAgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIG1faW5m
bzsKICAgICBQcm9jZWR1cmUmIG1fcHJvYzsKQEAgLTIyNywzNSArMjMxLDYzIEBAIGNsYXNzIEIz
SVJHZW5lcmF0b3IgewogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgbV91bmxp
bmtlZFdhc21Ub1dhc21DYWxsczsgLy8gTGlzdCBlYWNoIGNhbGwgc2l0ZSBhbmQgdGhlIGZ1bmN0
aW9uIGluZGV4IHdob3NlIGFkZHJlc3MgaXQgc2hvdWxkIGJlIHBhdGNoZWQgd2l0aC4KICAgICBH
UFJSZWcgbV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CisgICAg
R1BSUmVnIG1fd2FzbUNvbnRleHRHUFI7CiAgICAgVmFsdWUqIG1femVyb1ZhbHVlc1tudW1UeXBl
c107CiAgICAgVmFsdWUqIG1faW5zdGFuY2VWYWx1ZTsgLy8gRklYTUU6IG1ha2UgdGhpcyBsYXp5
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3OTIKIH07CiAKLXN0
YXRpYyBWYWx1ZSogbG9hZFdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayog
YmxvY2spCitWYWx1ZSogQjNJUkdlbmVyYXRvcjo6bWF0ZXJpYWxpemVXYXNtQ29udGV4dChQcm9j
ZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewotICAgIFBhdGNocG9pbnRWYWx1ZSog
cGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2lu
dGVyVHlwZSgpLCBPcmlnaW4oKSk7Ci0gICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21Db250
ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQotICAgICAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAotICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjps
b2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpOwotICAgICAgICAgICAg
aml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKKyAgICBp
ZiAodXNlRmFzdFRMUygpKSB7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9
IGJsb2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBP
cmlnaW4oKSk7CisgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRz
TWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIo
UmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhl
bHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0KIAotICAgIHJldHVy
biBibG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNo
cG9pbnQpOwotfQorICAgIC8vIEZJWE1FOiBCZWNhdXNlIFdhc21Ub1dhc20gY2FsbCBjbG9iYmVy
cyB3YXNtQ29udGV4dCByZWdpc3RlciBhbmQgZG9lcyBub3QgcmVzdG9yZSBpdCwgd2UgbmVlZCB0
byByZXN0b3JlIGl0IGluIHRoZSBjYWxsZXIgc2lkZS4KKyAgICAvLyBUaGlzIHByZXZlbnRzIHVz
IGZyb20gdXNpbmcgQXJndW1lbnRSZWcgdG8gdGhpcyAobG9naWNhbGx5KSBpbW11dGFibGUgcGlu
bmVkIHJlZ2lzdGVyLgorICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7
CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSBmYWxzZTsKKyAgICBwYXRj
aHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICBwYXRjaHBvaW50LT5yZXN1
bHRDb25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhtX3dhc21Db250ZXh0R1BSKTsKKyAgICBwYXRj
aHBvaW50LT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsgfSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7Cit9CisKK3ZvaWQg
QjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNC
bG9jayogYmxvY2ssIFZhbHVlKiBhcmcpCit7CisgICAgaWYgKHVzZUZhc3RUTFMoKSkgeworICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKKyAgICAgICAgaWYgKENDYWxs
SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKKyAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJl
Z2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUo
YXJnLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcigKKyAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpz
dG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgICAg
ICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLXN0YXRpYyB2b2lkIHN0b3JlV2FzbUNvbnRl
eHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKLXsKKyAg
ICAvLyBGSVhNRTogQmVjYXVzZSBXYXNtVG9XYXNtIGNhbGwgY2xvYmJlcnMgd2FzbUNvbnRleHQg
cmVnaXN0ZXIgYW5kIGRvZXMgbm90IHJlc3RvcmUgaXQsIHdlIG5lZWQgdG8gcmVzdG9yZSBpdCBp
biB0aGUgY2FsbGVyIHNpZGUuCisgICAgLy8gVGhpcyBwcmV2ZW50cyB1cyBmcm9tIHVzaW5nIEFy
Z3VtZW50UmVnIHRvIHRoaXMgKGxvZ2ljYWxseSkgaW1tdXRhYmxlIHBpbm5lZCByZWdpc3Rlci4K
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNo
cG9pbnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKLSAgICBpZiAoQ0NhbGxIZWxw
ZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQotICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMo
KSk7Ci0gICAgcGF0Y2hwb2ludC0+YXBwZW5kKENvbnN0cmFpbmVkVmFsdWUoYXJnLCBWYWx1ZVJl
cDo6U29tZVJlZ2lzdGVyKSk7Ci0gICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAotICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewotICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYg
YWxsb3dTY3JhdGNoKGppdCwgQ0NhbGxIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNy
b1NjcmF0Y2hSZWdpc3RlcigpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0KHBh
cmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOworICAgIEVmZmVjdHMgZWZmZWN0cyA9IEVmZmVj
dHM6Om5vbmUoKTsKKyAgICBlZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgZWZmZWN0
cy5yZWFkcyA9IEIzOjpIZWFwUmFuZ2U6OnRvcCgpOworICAgIHBhdGNocG9pbnQtPmVmZmVjdHMg
PSBlZmZlY3RzOworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0KG1fd2Fz
bUNvbnRleHRHUFIpKTsKKyAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9pbnN0YW5jZVZhbHVlLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICBHUFJSZWcgd2FzbUNvbnRleHRHUFIgPSBtX3dh
c21Db250ZXh0R1BSOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtKSB7CisgICAg
ICAgIGppdC5tb3ZlKHBhcmFtWzBdLmdwcigpLCB3YXNtQ29udGV4dEdQUik7CisgICAgfSk7CiB9
CiAKIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZv
cm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUsIFdhc21JbnRlcm5hbEZ1bmN0aW9u
KiBjb21waWxhdGlvbiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdh
c21Ub1dhc21DYWxscykKQEAgLTI4Myw3ICszMTUsMTAgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdl
bmVyYXRvcihWTSYgdm0sIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUm
IHAKICAgICAvLyBGSVhNRSB3ZSBkb24ndCByZWFsbHkgbmVlZCB0byBwaW4gcmVnaXN0ZXJzIGhl
cmUgaWYgdGhlcmUncyBubyBtZW1vcnkuIEl0IG1ha2VzIHdhc20gLT4gd2FzbSB0aHVua3Mgc2lt
cGxlciBmb3Igbm93LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
NjIzCiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQoKTsKICAgICBtX21lbW9yeUJhc2VHUFIgPSBwaW5uZWRSZWdzLmJhc2VN
ZW1vcnlQb2ludGVyOworICAgIG1fd2FzbUNvbnRleHRHUFIgPSBwaW5uZWRSZWdzLndhc21Db250
ZXh0UG9pbnRlcjsKICAgICBtX3Byb2MucGluUmVnaXN0ZXIobV9tZW1vcnlCYXNlR1BSKTsKKyAg
ICBpZiAoIXVzZUZhc3RUTFMoKSkKKyAgICAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fd2FzbUNv
bnRleHRHUFIpOwogICAgIEFTU0VSVCghcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVP
ZmZzZXQpOwogICAgIG1fbWVtb3J5U2l6ZUdQUiA9IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1sw
XS5zaXplUmVnaXN0ZXI7CiAgICAgZm9yIChjb25zdCBQaW5uZWRTaXplUmVnaXN0ZXJJbmZvJiBy
ZWdJbmZvIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzKQpAQCAtMjk5LDcgKzMzNCw3IEBAIEIz
SVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlv
biYgaW5mbywgUHJvY2VkdXJlJiBwCiAKICAgICB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1
cEZyYW1lSW5Qcm9sb2d1ZSgmY29tcGlsYXRpb24tPndhc21DYWxsZWVNb3ZlTG9jYXRpb24sIG1f
cHJvYywgT3JpZ2luKCksIG1fY3VycmVudEJsb2NrKTsKIAotICAgIG1faW5zdGFuY2VWYWx1ZSA9
IGxvYWRXYXNtQ29udGV4dChtX3Byb2MsIG1fY3VycmVudEJsb2NrKTsKKyAgICBtX2luc3RhbmNl
VmFsdWUgPSBtYXRlcmlhbGl6ZVdhc21Db250ZXh0KG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwog
fQogCiBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewpAQCAtMzA3LDEyICszNDIsMTIgQEAgc3Ry
dWN0IE1lbW9yeUJhc2VBbmRTaXplIHsKICAgICBWYWx1ZSogc2l6ZTsKIH07CiAKLXN0YXRpYyBN
ZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWTSYgdm0sIFZhbHVlKiBpbnN0
YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK3N0YXRpYyBNZW1vcnlC
YXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShWYWx1ZSogaW5zdGFuY2UsIFByb2NlZHVy
ZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgVmFsdWUqIG1lbW9yeU9iamVjdCA9
IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIHBvaW50ZXJUeXBlKCks
IE9yaWdpbigpLCBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9y
eSgpKTsKIAotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4
dCh2bSktPm1lbW9yeSgpLT5tZW1vcnkoKS5tZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJj
b2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihk
ZWNsdHlwZShsb2FkV2FzbUNvbnRleHQodm0pLT5tZW1vcnkoKS0+bWVtb3J5KCkuc2l6ZSgpKSkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOworICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKHN0YXRpY19jYXN0PEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSo+KG51bGxwdHIpLT5tZW1vcnkoKS0+bWVtb3J5KCkubWVtb3J5KCkpKSA9PSBzaXpl
b2Yodm9pZCopLCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4o
bnVsbHB0ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3Qp
LCAiY29kZWdlbiByZWxpZXMgb24gdGhpcyBzaXplIik7CiAgICAgTWVtb3J5QmFzZUFuZFNpemUg
cmVzdWx0OwogICAgIHJlc3VsdC5iYXNlID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4o
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIG1lbW9yeU9iamVjdCwgSlNXZWJB
c3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZNZW1vcnkoKSk7CiAgICAgcmVzdWx0LnNpemUgPSBibG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIG1l
bW9yeU9iamVjdCwgSlNXZWJBc3NlbWJseU1lbW9yeTo6b2Zmc2V0T2ZTaXplKCkpOwpAQCAtMzIw
LDkgKzM1NSw5IEBAIHN0YXRpYyBNZW1vcnlCYXNlQW5kU2l6ZSBnZXRNZW1vcnlCYXNlQW5kU2l6
ZShWTSYgdm0sIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RhdGljIHZvaWQgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoY29uc3QgTWVt
b3J5SW5mb3JtYXRpb24mIG1lbW9yeSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2Ms
IEJhc2ljQmxvY2sqIGJsb2NrKQordm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1i
bHlHbG9iYWxTdGF0ZShjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5z
dGFuY2UsIFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgc3RvcmVX
YXNtQ29udGV4dChwcm9jLCBibG9jaywgaW5zdGFuY2UpOworICAgIHJlc3RvcmVXYXNtQ29udGV4
dChwcm9jLCBibG9jaywgaW5zdGFuY2UpOwogCiAgICAgaWYgKCEhbWVtb3J5KSB7CiAgICAgICAg
IGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyogcGlubmVkUmVncyA9ICZQaW5uZWRSZWdpc3Rlcklu
Zm86OmdldCgpOwpAQCAtMzkyLDcgKzQyNyw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQXJn
dW1lbnRzKGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAg
ICBtX2xvY2Fscy5ncm93KHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICB3YXNtQ2Fs
bGluZ0NvbnZlbnRpb24oKS5sb2FkQXJndW1lbnRzKHNpZ25hdHVyZSwgbV9wcm9jLCBtX2N1cnJl
bnRCbG9jaywgT3JpZ2luKCksCi0gICAgICAgIFsmXSAoRXhwcmVzc2lvblR5cGUgYXJndW1lbnQs
IHVuc2lnbmVkIGkpIHsKKyAgICAgICAgWz1dIChFeHByZXNzaW9uVHlwZSBhcmd1bWVudCwgdW5z
aWduZWQgaSkgewogICAgICAgICAgICAgVmFyaWFibGUqIGFyZ3VtZW50VmFyaWFibGUgPSBtX3By
b2MuYWRkVmFyaWFibGUoYXJndW1lbnQtPnR5cGUoKSk7CiAgICAgICAgICAgICBtX2xvY2Fsc1tp
XSA9IGFyZ3VtZW50VmFyaWFibGU7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFZhcmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBPcmlnaW4oKSwgYXJndW1lbnRWYXJpYWJs
ZSwgYXJndW1lbnQpOwpAQCAtNDE5LDEyICs0NTQsMTEgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRVbnJlYWNoYWJsZSgpIC0+IFBhcnRpYWxSZXN1bHQKIAogYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpIChFeGVjU3Rh
dGUqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZGVsdGEpIC0+IGlu
dDMyX3QgeworICAgIGludDMyX3QgKCpncm93TWVtb3J5KSAoRXhlY1N0YXRlKiwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlKiwgaW50MzJfdCkgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIHdhc21Db250ZXh0LCBpbnQzMl90IGRlbHRhKSAtPiBpbnQzMl90IHsKICAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwotICAgICAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiB3
YXNtTWVtb3J5ID0gaW5zdGFuY2UtPm1lbW9yeSgpOworICAgICAgICBKU1dlYkFzc2VtYmx5TWVt
b3J5KiB3YXNtTWVtb3J5ID0gd2FzbUNvbnRleHQtPm1lbW9yeSgpOwogCiAgICAgICAgIGlmIChk
ZWx0YSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00NDAsNyArNDc0LDcgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRhLCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KQogCiAgICAgcmVzdWx0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxDQ2FsbFZhbHVlPihtX3Byb2MsIEludDMyLCBPcmlnaW4oKSwKICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigpLCBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KGdyb3dNZW1vcnkpKSwKLSAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBk
ZWx0YSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpGcmFtZVBvaW50ZXIsIE9yaWdpbigpKSwgbV9pbnN0YW5jZVZhbHVlLCBkZWx0YSk7
CiAKICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZShtX2luZm8ubWVtb3J5LCBtX2lu
c3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOwogCkBAIC00NDksNyArNDgzLDcg
QEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRHcm93TWVtb3J5KEV4cHJlc3Npb25UeXBlIGRlbHRh
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogCiBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEN1cnJl
bnRNZW1vcnkoRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewotICAg
IGF1dG8gbWVtb3J5VmFsdWUgPSBnZXRNZW1vcnlCYXNlQW5kU2l6ZShtX3ZtLCBtX2luc3RhbmNl
VmFsdWUsIG1fcHJvYywgbV9jdXJyZW50QmxvY2spOworICAgIGF1dG8gbWVtb3J5VmFsdWUgPSBn
ZXRNZW1vcnlCYXNlQW5kU2l6ZShtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgbV9jdXJyZW50Qmxv
Y2spOwogCiAgICAgY29uc3RleHByIHVpbnQzMl90IHNoaWZ0VmFsdWUgPSAxNjsKICAgICBzdGF0
aWNfYXNzZXJ0KFBhZ2VDb3VudDo6cGFnZVNpemUgPT0gMSA8PCBzaGlmdFZhbHVlLCAiVGhpcyBt
dXN0IGhvbGQgZm9yIHRoZSBjb2RlIGJlbG93IHRvIGJlIGNvcnJlY3QuIik7CkBAIC04ODksOSAr
OTIzLDEwIEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEIzOjpCcmFuY2gsIE9yaWdpbigpLCBpc1dh
c21DYWxsLCBGcmVxdWVudGVkQmxvY2soaXNXYXNtQmxvY2spLCBGcmVxdWVudGVkQmxvY2soaXNK
U0Jsb2NrKSk7CiAKICAgICAgICAgVmFsdWUqIHdhc21DYWxsUmVzdWx0ID0gd2FzbUNhbGxpbmdD
b252ZW50aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgaXNXYXNtQmxvY2ssIE9yaWdpbigpLCBhcmdz
LCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKLSAgICAgICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50KSB7CisgICAgICAgICAgICBbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCkgewogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRS
ZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZSgpKTsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7
CiAgICAgICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNh
bGwgPSBqaXQuY2FsbCgpOwpAQCAtOTA0LDkgKzkzOSwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1
cmUsCiAgICAgICAgIGlzV2FzbUJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBK
dW1wLCBPcmlnaW4oKSwgY29udGludWF0aW9uKTsKIAogICAgICAgICBWYWx1ZSoganNDYWxsUmVz
dWx0ID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgaXNKU0Jsb2Nr
LCBPcmlnaW4oKSwgYXJncywgdG9CM1R5cGUocmV0dXJuVHlwZSksCi0gICAgICAgICAgICBbJl0g
KFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgeworICAgICAgICAgICAgWz1dIChQYXRjaHBv
aW50VmFsdWUqIHBhdGNocG9pbnQpIHsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xv
YmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoKSk7CiAgICAgICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywg
ZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKQEAgLTkzMiw5ICs5NjgsMTAgQEAgYXV0
byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSogc2lnbmF0dXJlLAogICAgICAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0
ZShtX2luZm8ubWVtb3J5LCBtX2luc3RhbmNlVmFsdWUsIG1fcHJvYywgY29udGludWF0aW9uKTsK
ICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5z
ZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBl
KHJldHVyblR5cGUpLAotICAgICAgICAgICAgWyZdIChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQpIHsKKyAgICAgICAgICAgIFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CiAg
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOwor
CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt1bmxpbmtlZFdhc21U
b1dhc21DYWxscywgZnVuY3Rpb25JbmRleF0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LmNhbGwoKTsKQEAgLTEwMTAsMTIg
KzEwNDcsMTIgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2ln
bmF0dXJlKiBzaWduYXR1cmUsIFNpZ25hdHVyZUluZGV4IHMKIAogICAgIFR5cGUgcmV0dXJuVHlw
ZSA9IHNpZ25hdHVyZS0+cmV0dXJuVHlwZSgpOwogICAgIHJlc3VsdCA9IHdhc21DYWxsaW5nQ29u
dmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBPcmlnaW4oKSwgYXJn
cywgdG9CM1R5cGUocmV0dXJuVHlwZSksCi0gICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50KSB7CisgICAgICAgIFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7
CiAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CiAg
ICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCku
dG9TYXZlKCkpOwogCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY2FsbGVlQ29kZSwg
VmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0KICAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgaml0LmNhbGwo
cGFyYW1zW3JldHVyblR5cGUgPT0gVm9pZCA/IDAgOiAxXS5ncHIoKSk7CkBAIC0xMDgwLDExICsx
MTE3LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAgICAgICAgKmxpbmtlZENhbGxlZU1v
dmUgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY2FsbGVlTW92ZUxvY2F0aW9uKTsKICAgICB9KTsK
IAotICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZTsKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8m
IHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwotICAgIHRvU2F2ZS5zZXQo
cGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcik7Ci0gICAgZm9yIChjb25zdCBQaW5uZWRTaXpl
UmVnaXN0ZXJJbmZvJiByZWdJbmZvIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzKQotICAgICAg
ICB0b1NhdmUuc2V0KHJlZ0luZm8uc2l6ZVJlZ2lzdGVyKTsKKyAgICBSZWdpc3RlclNldCB0b1Nh
dmUgPSBwaW5uZWRSZWdzLnRvU2F2ZSgpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHVu
c2lnbmVkIHRvU2F2ZVNpemUgPSB0b1NhdmUubnVtYmVyT2ZTZXRHUFJzKCk7CkBAIC0xMTkxLDEw
ICsxMjI1LDI1IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlv
bkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgV2FzbUluCiAgICAgICAgIH0KICAgICB9CiAK
KyAgICAvLyBGSVhNRTogSlN0b1dhc20gd3JhcHBlciBzaG91bGQgdGFrZSBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UgcG9pbnRlciBhcyBhbiBhcmd1bWVudCBkaXJlY3RseS4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTgyCisgICAgR1BSUmVnIHdhc21D
b250ZXh0ID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CisgICAgaWYgKCF1c2VGYXN0
VExTKCkpIHsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQuYW5k
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwg
d2FzbUNvbnRleHQpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
d2FzbUNvbnRleHQsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB3YXNtQ29udGV4dCk7Cisg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dCwgVk06
Ondhc21Db250ZXh0T2Zmc2V0KCkpLCB3YXNtQ29udGV4dCk7CisgICAgfQorCiAgICAgaWYgKCEh
aW5mby5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJh
c2VNZW1vcnlQb2ludGVyOwotICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkp
OwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisK
KyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRleHQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zm
c2V0T2ZNZW1vcnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGppdC5sb2FkV2FzbUNvbnRleHQoYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
OjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIH0KICAgICAgICAgY29u
c3QgYXV0byYgc2l6ZVJlZ3MgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnM7CiAgICAgICAgIEFT
U0VSVChzaXplUmVncy5zaXplKCkgPj0gMSk7CiAgICAgICAgIEFTU0VSVCghc2l6ZVJlZ3NbMF0u
c2l6ZU9mZnNldCk7IC8vIFRoZSBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIHdlIHN0YXJ0IGF0IDAs
IGFuZCBjYWxjdWxhdGVzIHN1YnNlcXVlbnQgc2l6ZSByZWdpc3RlcnMgcmVsYXRpdmUgdG8gMC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcAppbmRleCBmYjY3NjU3
ZWE0MGNlY2QwYjg2ODgwZWJiMjRjN2VhNzkxM2Y5YzMzLi5lMGNhYjFmNmQ0ZDc5ODFiYzhkYzcw
OWFlMmFmZjhmYjI2MDk0OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQmluZGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJp
bmRpbmcuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIk5hdGl2ZUVycm9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0Nv
bnZlbnRpb24uaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNl
cHRpb25UeXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CkBAIC02Niw4
ICs2NSw2IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2FzbVRvSnMoVk0qIHZtLCBC
YWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKIAogICAgIGppdC5lbWl0RnVuY3Rpb25Q
cm9sb2d1ZSgpOwogICAgIGppdC5zdG9yZTY0KEpJVDo6VHJ1c3RlZEltbTMyKDApLCBKSVQ6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsgLy8gRklYTUUgU3RvcCB1
c2luZyAwIGFzIGNvZGVCbG9ja3MuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjUzMjEKLSAgICBqaXQuc3RvcmVQdHIoSklUOjpUcnVzdGVkSW1tUHRyKHZtLT53ZWJB
c3NlbWJseVRvSlNDYWxsZWUuZ2V0KCkpLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkpKTsKLQogCiAgICAgewogICAgICAgICBib29sIGhhc0JhZEk2NFVzZSA9IGZh
bHNlOwpAQCAtOTMsMTYgKzkwLDIyIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgd2Fz
bVRvSnMoVk0qIHZtLCBCYWc8Q2FsbExpbmtJbmZvPiYgY2FsbExpbmtJbmZvcywKICAgICAgICAg
aWYgKGhhc0JhZEk2NFVzZSkgewogICAgICAgICAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvVk1F
bnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKTsKICAgICAgICAgICAgIGppdC5tb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICAg
ICAgaml0LmxvYWRXYXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjEpOworCisgICAgICAg
ICAgICAvLyBTdG9yZSBDYWxsZWUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mQ2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgICAgICAgICAg
aml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMiwgSklUOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisKICAgICAgICAgICAgIGF1dG8gY2FsbCA9IGppdC5j
YWxsKCk7CiAgICAgICAgICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAg
ICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0ZSopID0gW10gKEV4ZWNTdGF0ZSog
ZXhlYykgLT4gdm9pZCB7CisgICAgICAgICAgICB2b2lkICgqdGhyb3dCYWRJNjQpKEV4ZWNTdGF0
ZSosIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiB3YXNtQ29udGV4dCkgLT4gdm9pZCB7CiAgICAgICAgICAgICAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAg
ICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGxvYWRXYXNtQ29u
dGV4dCgqdm0pLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHdhc21Db250ZXh0LT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywg
KnZtLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJl
KCksIEFTQ0lJTGl0ZXJhbCgiaTY0IG5vdCBhbGxvd2VkIGFzIHJldHVybiB0eXBlIG9yIGFyZ3Vt
ZW50IHRvIGFuIGltcG9ydGVkIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjUyLDYgKzI1NSwxMCBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pz
KFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBqaXQubG9hZFdhc21Db250ZXh0KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKSVQ6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKwogICAgIEdQUlJlZyBp
bXBvcnRKU0NlbGxHUFJSZWcgPSBHUFJJbmZvOjpyZWdUMDsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJl
IGluIHJlZ1QwIGZvciBzbG93IHBhdGggYmVsb3cuCiAgICAgQVNTRVJUKCF3YXNtQ0MubV9jYWxs
ZWVTYXZlUmVnaXN0ZXJzLmdldChpbXBvcnRKU0NlbGxHUFJSZWcpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCmluZGV4IDY0ODRjZDRmNTI2NmEzOGU4MjE1
NGE3MWQ3MDUyYmFhZWU0ODk0MjUuLjIxN2NlMWUyZmQ2NDNjNTYzZWJlNGYyN2E5NDY5ZGE0N2My
NGI5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKQEAg
LTM0LDE3ICszNCwxNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQorV2FzbUNvbnRleHQqIGxvYWRXYXNtQ29udGV4
dChWTSYgdm0pCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICBpZiAoT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNX
ZWJBc3NlbWJseUluc3RhbmNlKj4oX3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNN
X0NPTlRFWFRfS0VZKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V2FzbUNvbnRleHQq
PihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICNl
bmRpZgogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJ
Qy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwogICAgIHJl
dHVybiB2bS53YXNtQ29udGV4dDsKIH0KIAotdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChW
TSYgdm0sIFdhc21Db250ZXh0KiBpbnN0YW5jZSkKIHsKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCmluZGV4IDFjNWU4YTE4ZDJiMDc0ODFlZTYwMGY4
YjcwMWU1M2M2MzllNWZjYzQuLmFmZTc4MzVjY2RiMmJmM2YxMzVmODg3NGQ3Y2FlNGQzZWE2NzA0
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaApAQCAtMzIsOCAr
MzIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CiBj
bGFzcyBWTTsKIAotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBsb2FkV2FzbUNvbnRleHQoVk0mKTsK
LXZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwordXNp
bmcgV2FzbUNvbnRleHQgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CisKK1dhc21Db250ZXh0KiBs
b2FkV2FzbUNvbnRleHQoVk0mKTsKK3ZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYsIFdhc21Db250
ZXh0Kik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAppbmRleCA4YWMwODY2Mjc4YjUx
MzkzYjY2OWVhMDlhN2I1NDhkNmQ5YTc2YjE0Li45OWU3ZDJiY2QyOTk0ZGNiZTdmNTU4ODlhYjM3
ZGU3MGVmYTRkNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKQEAgLTM0LDQzICszNCw1NyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIFdhc20gewogCitzdGF0aWMgVmVjdG9yPEdQUlJlZz4gZ2V0UGlubmVk
UmVnaXN0ZXJzKHVuc2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycykKK3sKKyAgICBWZWN0
b3I8R1BSUmVnPiByZWdpc3RlcnM7CisgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2NhbGxl
ZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKKyAgICAgICAgaWYgKCFyZWcu
aXNHUFIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgR1BSUmVnIGdwciA9IHJlZy5n
cHIoKTsKKyAgICAgICAgaWYgKCFyZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMgfHwgUmVnaXN0ZXJT
ZXQ6OnN0YWNrUmVnaXN0ZXJzKCkuZ2V0KHJlZykpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIC0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzOworICAgICAgICByZWdpc3RlcnMuYXBwZW5k
KGdwcik7CisgICAgfSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyczsKK30KKwogY29uc3QgUGlubmVk
UmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpCiB7CiAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxQaW5uZWRSZWdpc3RlckluZm8+IHN0YXRpY1Bpbm5lZFJlZ2lzdGVy
SW5mbzsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZv
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShzdGF0aWNQaW5uZWRSZWdpc3RlckluZm9GbGFnLCBb
XSAoKSB7CiAgICAgICAgIFZlY3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0
ZXJzOwotICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgIEdQUlJlZyBi
YXNlTWVtb3J5UG9pbnRlciA9IEludmFsaWRHUFJSZWc7CisgICAgICAgIEdQUlJlZyB3YXNtQ29u
dGV4dFBvaW50ZXIgPSBJbnZhbGlkR1BSUmVnOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyLCBhbmQgd2Ugc2hv
dWxkIGFsbG93IGRpZmZlcmVudAogICAgICAgICAvLyAgICAgICAgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UgdG8gaGF2ZSBkaWZmZXJlbnQgcGlucy4gUmlnaHQgbm93IHdlIHRha2UgYSB2ZWN0b3Igd2l0
aCBvbmx5IG9uZSBlbnRyeS4KICAgICAgICAgLy8gICAgICAgIElmIHdlIGhhdmUgbW9yZSB0aGFu
IG9uZSBzaXplIHJlZ2lzdGVyLCB3ZSBjYW4gaGF2ZSBvbmUgZm9yIGVhY2ggbG9hZCBzaXplIGNs
YXNzLgogICAgICAgICAvLyAgICAgICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYyOTUyCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMg
PSB7IDAgfTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID0gcGlu
bmVkU2l6ZXMuc2l6ZSgpICsgMTsKLSAgICAgICAganNjQ2FsbGluZ0NvbnZlbnRpb24oKS5tX2Nh
bGxlZVNhdmVSZWdpc3RlcnMuZm9yRWFjaChbJl0gKFJlZyByZWcpIHsKLSAgICAgICAgICAgIGlm
ICghcmVnLmlzR1BSKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgR1BS
UmVnIGdwciA9IHJlZy5ncHIoKTsKLSAgICAgICAgICAgIGlmICghcmVtYWluaW5nUGlubmVkUmVn
aXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygpLmdldChyZWcpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChyZW1haW5pbmdQaW5uZWRSZWdpc3Rl
cnMgPT0gMSkgewotICAgICAgICAgICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gZ3ByOwotICAg
ICAgICAgICAgICAgIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycy0tOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgc2l6ZVJlZ2lzdGVycy5hcHBlbmQoeyBncHIsIHBpbm5lZFNp
emVzWy0tcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIC0gMV0gfSk7Ci0gICAgICAgIH0pOwotCi0g
ICAgICAgIEFTU0VSVCghcmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGlj
UGlubmVkUmVnaXN0ZXJJbmZvLmNvbnN0cnVjdChXVEZNb3ZlKHNpemVSZWdpc3RlcnMpLCBiYXNl
TWVtb3J5UG9pbnRlcik7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGlubmVkUmVnaXN0ZXJz
ID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisg
ICAgICAgICAgICArK251bWJlck9mUGlubmVkUmVnaXN0ZXJzOworICAgICAgICBWZWN0b3I8R1BS
UmVnPiBwaW5uZWRSZWdzID0gZ2V0UGlubmVkUmVnaXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0
ZXJzKTsKKworICAgICAgICBiYXNlTWVtb3J5UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3Qo
KTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTKCkpCisgICAgICAgICAgICB3YXNtQ29udGV4dFBv
aW50ZXIgPSBwaW5uZWRSZWdzLnRha2VMYXN0KCk7CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNp
emVzLnNpemUoKSA9PSBwaW5uZWRSZWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwaW5uZWRTaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdp
c3RlcnMuYXBwZW5kKHsgcGlubmVkUmVnc1tpXSwgcGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAg
IHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJz
KSwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0UG9pbnRlcik7CiAgICAgfSk7CiAKICAg
ICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5m
bz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5m
bz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNt
Q29udGV4dFBvaW50ZXIpCiAgICAgOiBzaXplUmVnaXN0ZXJzKFdURk1vdmUoc2l6ZVJlZ2lzdGVy
cykpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVtb3J5UG9pbnRlcikKKyAgICAsIHdh
c21Db250ZXh0UG9pbnRlcih3YXNtQ29udGV4dFBvaW50ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKaW5kZXggNmRl
MDcwYTEwNDUyZmY2YmIzYzVjMjUwNDExZjEwZTkxMzg5ZTRhMi4uMTE3OWI1Zjc1MDJlMWYyNmIw
NmNhZDc5NjA4ZmRhMWNhZTQyYTRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJTZXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VDb3Vu
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQzLDggKzQ0LDIwIEBAIHN0cnVjdCBQaW5u
ZWRTaXplUmVnaXN0ZXJJbmZvIHsKIHN0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8gewogICAgIFZl
Y3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwogICAgIEdQUlJlZyBi
YXNlTWVtb3J5UG9pbnRlcjsKKyAgICBHUFJSZWcgd2FzbUNvbnRleHRQb2ludGVyOwogICAgIHN0
YXRpYyBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVy
SW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5u
ZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywg
R1BSUmVnKTsKKworICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5zZXQoYmFzZU1lbW9yeVBvaW50
ZXIpOworICAgICAgICBpZiAod2FzbUNvbnRleHRQb2ludGVyICE9IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250ZXh0UG9pbnRlcik7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgaW5mbyA6IHNpemVSZWdpc3RlcnMpCisgICAgICAgICAgICByZXN1bHQuc2V0
KGluZm8uc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiB9Owog
CiBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7CkBAIC03Myw2ICs4NiwxNSBAQCBjbGFzcyBNZW1v
cnlJbmZvcm1hdGlvbiB7CiAgICAgYm9vbCBtX2lzSW1wb3J0IHsgZmFsc2UgfTsKIH07CiAKK2lu
bGluZSBib29sIHVzZUZhc3RUTFMoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAg
cmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2Vu
ZGlmIC8vIEVOQUJMRShXQVNNKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKaW5kZXggMWMxMWIwY2E2NWM5MTc0MmY4
ZTQ4MTNjMjRkOTc1ZjY1ZWViYWExOC4uZTNiZDc0MDI4ZTI4MmYyODU2YzM0YjllNTA3MzZiNmI1
ODc0ZThmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TWVtb3J5Lmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5
VG9KU0NhbGxlZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC04MSw2ICs4Miw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKIAogICAgIG1f
Y29kZUJsb2NrLnNldCh2bSwgdGhpcywgbW9kdWxlLT5jb2RlQmxvY2soKSk7CiAgICAgbV9tb2R1
bGVOYW1lc3BhY2VPYmplY3Quc2V0KHZtLCB0aGlzLCBtb2R1bGVOYW1lc3BhY2VPYmplY3QpOwor
ICAgIG1fY2FsbGVlLnNldCh2bSwgdGhpcywgbW9kdWxlLT5jYWxsZWUoKSk7CiAgICAgcHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImV4cG9ydHMiKSwgbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LCBOb25lKTsKIH0KIApAQCAtOTksNiArMTAxLDcgQEAgdm9pZCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFj
ZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tZW1vcnkpOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5Vmlz
aXRlZCh0aGlzT2JqZWN0LT5tb2R1bGUoKS0+bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzLnNp
emUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbnVtSW1w
b3J0RnVuY3Rpb25zOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0LT5p
bXBvcnRGdW5jdGlvbihpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCmluZGV4IGUyMjg0OTY5NjcyMDVhMzEzNmM4ODNi
YmRlMzI2YWRiYzcxMTEzMGQuLjQyYWExYjM1ZDFiMmE2ZjkzOWI5ZDMyOTY2YjVmMzdlNGVlNjQx
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7Citj
bGFzcyBXZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CkBAIC05Nyw2ICs5OCw3
IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTWVtb3J5KCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9tZW1vcnkpOyB9CiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlRhYmxlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV90YWJsZSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mQ2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2Jh
bHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2ds
b2JhbHMpOyB9CiAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpIHsg
cmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpTQ2Vs
bD4pPihzaXplb2YoSlNXZWJBc3NlbWJseUluc3RhbmNlKSk7IH0KICAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mSW1wb3J0RnVuY3Rpb24oc2l6ZV90IGltcG9ydEZ1bmN0aW9uTnVtKSB7IHJldHVy
biBvZmZzZXRPZkltcG9ydEZ1bmN0aW9ucygpICsgaW1wb3J0RnVuY3Rpb25OdW0gKiBzaXplb2Yo
c2l6ZW9mKFdyaXRlQmFycmllcjxKU0NlbGw+KSk7IH0KQEAgLTExNyw2ICsxMTksNyBAQCBjbGFz
cyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
ICAgIFdyaXRlQmFycmllcjxKU01vZHVsZU5hbWVzcGFjZU9iamVjdD4gbV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1vcnk+IG1fbWVtb3J5
OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGU+IG1fdGFibGU7CisgICAgV3Jp
dGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiAgICAgTWFsbG9jUHRy
PHVpbnQ2NF90PiBtX2dsb2JhbHM7CiAgICAgdW5zaWduZWQgbV9udW1JbXBvcnRGdW5jdGlvbnM7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TW9kdWxlLmNwcAppbmRleCBmNDE0NjdmNGZhYWU5ZGFhMDgxNjc0ZTdmMjA1NzhkNGM1ZWI2
ZjNjLi45Mzk0MzdlNDM5Yzg1YTU5MmIxOTg1NGE3MTQyM2M4ZGFkYjM1Y2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVBsYW4uaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJs
eVRvSlNDYWxsZWUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTMyLDYgKzEzMyw3IEBAIHZvaWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIHVpbnQ4X3QqIHNvdXJjCiAgICAg
bV9zb3VyY2VCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZSwgYnl0ZVNpemUpOwog
ICAgIG1fbW9kdWxlSW5mb3JtYXRpb24gPSBwbGFuLnRha2VNb2R1bGVJbmZvcm1hdGlvbigpOwog
ICAgIG1fZXhwb3J0U3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBleHBvcnRTeW1ib2xUYWJsZSk7
CisgICAgbV9jYWxsZWUuc2V0KHZtLCB0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0
ZSh2bSwgdm0ud2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpLCB0aGlzKSk7CiAg
ICAgY29kZUJsb2NrRm9yKGNvZGVCbG9jay0+bW9kZSgpKS5zZXQodm0sIHRoaXMsIGNvZGVCbG9j
ayk7CiB9CiAKQEAgLTE0Nyw2ICsxNDksNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlNb2R1bGU6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9leHBvcnRTeW1ib2xUYWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9jYWxsZWUpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXYXNt
OjpOdW1iZXJPZk1lbW9yeU1vZGVzOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fY29kZUJsb2Nrc1tpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5kZXggMzg5ZTYzYTMzNWMxYzExN2I2
OTc2OTcxMGM2M2JkN2Y4MzRlODZlNC4uMDQxNDEwNGJjNjg2NzgzMTI1OTk3MTljMjEzOGM2ODg5
MjIyMjI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBQbGFuOwogCiBjbGFzcyBT
eW1ib2xUYWJsZTsKIGNsYXNzIEpTV2ViQXNzZW1ibHlNZW1vcnk7CitjbGFzcyBXZWJBc3NlbWJs
eVRvSlNDYWxsZWU7CiAKIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGUgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogcHVibGljOgpAQCAtNjAsNiArNjEsNyBAQCBjbGFzcyBKU1dlYkFz
c2VtYmx5TW9kdWxlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICB9CisgICAgV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlKiBjYWxsZWUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxlZS5nZXQoKTsgfQogCiAg
ICAgLy8gUmV0dXJucyB0aGUgY29kZSBibG9jayB0aGF0IHRoaXMgbW9kdWxlIHdhcyBvcmlnaW5h
bGx5IGNvbXBpbGVkIGV4cGVjdGluZyB0byB1c2UuIFRoaXMgd29uJ3QgbmVlZCB0byByZWNvbXBp
bGUuCiAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrKCkgeyByZXR1cm4gY29k
ZUJsb2NrRm9yKG1fbW9kdWxlSW5mb3JtYXRpb24tPm1lbW9yeS5tb2RlKCkpLmdldCgpOyB9CkBA
IC03OSw2ICs4MSw3IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGUgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbj4gbV9tb2R1bGVJbmZvcm1hdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+
IG1fZXhwb3J0U3ltYm9sVGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2s+IG1fY29kZUJsb2Nrc1tXYXNtOjpOdW1iZXJPZk1lbW9yeU1vZGVzXTsKKyAgICBXcml0
ZUJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPiBtX2NhbGxlZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkMWE4MDFjM2VjOTExYTE5ZjA2YWI3OWY5OGEzMzkw
MWY1YzU3YzUxLi44OWVkZDk0NThjMGRhNWZhYzA5M2E5ZjAzNmEyYzQ3OTU2OGI4ODU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5j
bHVkZSAiV2FzbUZvcm1hdC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKKyNpbmNsdWRlIDx3
dGYvRmFzdFRMUy5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTIxLDYgKzEyMiwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVuY3Rpb24sIGZpcnN0QXJndW1lbnQsIGFy
Z0NvdW50LCByZW1haW5pbmdBcmdzKTsKIAogICAgIC8vIEZJWE1FIERvIGF3YXkgd2l0aCB0aGlz
IGVudGlyZSBmdW5jdGlvbiwgYW5kIG9ubHkgdXNlIHRoZSBlbnRyeXBvaW50IGdlbmVyYXRlZCBi
eSBCMy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjQ4NgorICAg
IC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRvIG1ha2UgbG9hZFdhc21Db250ZXh0IGFuZCBzdG9y
ZVdhc21Db250ZXh0IG5vLW9wIGlmIHdlIHVzZSBwaW5uZWQgcmVnaXN0ZXJzLgorICAgIC8vIEhv
d2V2ZXIsIHdlIHVzZSBWTS53YXNtQ29udGV4dCBmaWVsZCB0byBwYXNzIGluc3RhbmNlIHRvIHdh
c20gZnVuY3Rpb24ncyBKUyBnbHVlIGNvZGUuCisgICAgLy8gV2Ugc2hvdWxkIHBhc3MgSlNXZWJB
c3NlbWJseUluc3RhbmNlIGRpcmVjdGx5IHRvIHZtRW50cnlUb1dhc20uCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4MgogICAgIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2
bSk7CiAgICAgc3RvcmVXYXNtQ29udGV4dCh2bSwgd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsK
ICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKQEAgLTE1Myw2ICsxNTgsNyBA
QCBXZWJBc3NlbWJseUZ1bmN0aW9uKiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT53ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0dXJlKCk7CiAgICAgV2ViQXNzZW1i
bHlGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3Nl
bWJseUZ1bmN0aW9uPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlGdW5jdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIHdhc21FbnRyeXBvaW50LCBzaWduYXR1cmVJbmRleCk7CiAgICAgZnVu
Y3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUsIGluc3Rh
bmNlLCBqc0VudHJ5cG9pbnQsIHdhc21FbnRyeXBvaW50KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFmdW5jdGlvbi0+aXNMYXJnZUFsbG9jYXRpb24oKSwgIldlYkFzc2VtYmx5RnVuY3Rpb24g
c2hvdWxkIGJlIGFsbG9jYXRlZCBub3QgaW4gbGFyZ2UgYWxsb2NhdGlvbiBzaW5jZSBpdCBpcyBK
U0NhbGxlZS4iKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCmluZGV4
IDRlODkxYTA5YTIwZWZhMmY5ODk4NWQ5NzljYTlmNWQ0ZTgxMzAyYWYuLjRiOWM4NmZkNDk5ZjNk
Yzk2YTUyNjc5MTI0ZjI0ODdiNDZiMDkzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmNwcApAQCAtMjksMjEgKzI5
LDIyIEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OnNfaW5mbyA9IHsgIldlYkFz
c2VtYmx5VG9KU0NhbGxlZSIsIG51bGxwdHIsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlKSB9OwogCi1XZWJBc3NlbWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5
VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitXZWJBc3Nl
bWJseVRvSlNDYWxsZWUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSkKIHsKICAgICBX
ZWJBc3NlbWJseVRvSlNDYWxsZWUqIGNhbGxlZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSh2
bSwgc3RydWN0dXJlKTsKLSAgICBjYWxsZWUtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBjYWxs
ZWUtPmZpbmlzaENyZWF0aW9uKHZtLCBtb2R1bGUpOwogICAgIHJldHVybiBjYWxsZWU7CiB9CiAK
IFN0cnVjdHVyZSogV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKFdl
YkFzc2VtYmx5VG9KU0NhbGxlZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAog
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTUxLDE1ICs1MiwxOSBAQCBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OldlYkFzc2VtYmx5VG9KU0NhbGxlZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ewogfQogCi12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQordm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNX
ZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBtX21vZHVsZS5zZXQodm0sIHRoaXMsIG1vZHVsZSk7CiB9CiAKLXZvaWQgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3ZvaWQgV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+V2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjp+V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKCk7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjZWxsKTsKKyAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fbW9kdWxlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCmlu
ZGV4IDQ5NmM4ODU3NmMzOWY3MjMyNzIzOThhNTY2NWM5MDRjYzVjMWIxMjMuLjE5ZjQ3OTViYzI4
MzRmM2I4N2ZhMzAzZmJjMTA0NmZhNWZiOWI4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5oCkBAIC0zMSwyMSArMzEs
MjcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSA6
IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZTsKKworY2xhc3MgV2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAg
ICBzdGF0aWMgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUq
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7
Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKworICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIEpTV2ViQXNzZW1ibHlN
b2R1bGUqIG1vZHVsZSgpIHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKik7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwg
U3RydWN0dXJlKik7CisKKyAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1vZHVsZT4gbV9t
b2R1bGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305616</attachid>
            <date>2017-03-28 11:29:41 -0700</date>
            <delta_ts>2017-03-28 14:44:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169773-20170329032939.patch</filename>
            <type>text/plain</type>
            <size>60523</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
M2FkNDRiNDBiOGJjOTA5NmVjZmI1NzRhNDc2ODk5N2E4NjdhNDUyLi45OTM1MTc3NDdhYTk3ZWJj
ZTUxMGViM2Q5NGNiOWY2MmVmN2MzNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IGFkZCBmYWxsYmFjayB0byB1c2UgcGlubmVk
IHJlZ2lzdGVyIHRvIGxvYWQvc3RvcmUgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBwaW5uZWQgcmVnaXN0
ZXIgdG8gaG9sZCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UsCisgICAgICAgIHdoaWNoIGlzIHVzZWQg
dG8gcmVwcmVzZW50IHRoZSBjb250ZXh0IG9mIHJ1bm5pbmcgV2FzbSBjb2RlLgorICAgICAgICBX
aGlsZSB3ZSB1c2UgZmFzdCBUTFMgdG8gaG9sZCB0aGUgY29udGV4dCBpbiBtYWNPUywgd2UgZG8g
bm90IGhhdmUKKyAgICAgICAgYW55IHN5c3RlbSByZXNlcnZlZCBmYXN0IFRMUyBzbG90IGluIHRo
ZSBvdGhlciBzeXN0ZW1zLiBUaGlzIHBpbm5lZAorICAgICAgICByZWdpc3RlciBhcHByb2FjaCBp
cyB1c2VkIGluIHRoZXNlIHN5c3RlbXMuIFRoZXNlIGNoYW5nZXMgZGVjb3VwbGUKKyAgICAgICAg
Vk0gZnJvbSBXYXNtIG1vZHVsZSB0byBtYWtlIFdhc20gbW9kdWxlIHBvc2l0aW9uIGluZGVwZW5k
ZW50IGNvZGUuCisKKyAgICAgICAgV2hpbGUgdXNpbmcgZmFzdCBUTFMgY291bGQgYmUgYmVuZWZp
Y2lhbCBpbiB4NjQgc3lzdGVtcyB3aGljaCBudW1iZXIgb2YKKyAgICAgICAgcmVnaXN0ZXJzIGlz
IHJlbGF0aXZlbHkgc21hbGwsIHBpbm5lZCByZWdpc3RlciBhcHByb2FjaCBjb3VsZCBiZQorICAg
ICAgICBiZW5lZmljaWFsIGluIEFSTTY0IHdoaWNoIGhhcyBwbGVudHkgb2YgcmVnaXN0ZXJzLiBJ
biBtYWNPUywgd2UgY2FuCisgICAgICAgIHN3aXRjaCB0aGUgaW1wbGVtZW50YXRpb24gd2l0aCB0
aGUgcnVudGltZSBmbGFnLiBUaHVzIG1hY09TIHBvcnQgY2FuCisgICAgICAgIGNvbXBhcmUgdGhl
IHBlcmZvcm1hbmNlIGFuZCBkZWNpZGUgd2hpY2ggaW1wbGVtZW50YXRpb24gaXMgdXNlZCBhZnRl
cgorICAgICAgICBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBoZWFwL01hcmtlZEJs
b2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKToKKyAgICAgICAg
KiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
Ojpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3Jl
V2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29u
dGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAg
ICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6bG9hZFdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpzdG9yZVdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3Rlcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3Bw
OgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU93bmVyKToKKyAgICAgICAgKEpTQzo6bGlua0Zv
cik6CisgICAgICAgIChKU0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAoSlNDOjpp
c1dlYkFzc2VtYmx5VG9KU0NhbGxlZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L1RodW5rR2Vu
ZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uRnJvbVdhc21UaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNBbnlXYXNtQ2FsbGVlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNXZWJBc3NlbWJseVRvSlNDYWxsZWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9TdGFja0ZyYW1lLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKToKKyAgICAgICAgKiBy
dW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjp3YXNtQ29udGV4dE9mZnNldCk6CisgICAgICAgICog
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5l
cmF0b3I6Om1hdGVyaWFsaXplV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0TWVtb3J5
QmFzZUFuZFNpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpyZXN0b3Jl
V2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9X
YXNtV3JhcHBlcik6CisgICAgICAgIChKU0M6Oldhc206OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oldhc206OnN0b3JlV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpXYXNtOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub0pzKToKKyAgICAgICAgKiB3YXNtL1dhc21Db250ZXh0LmNwcDoKKyAgICAgICAgKEpTQzo6
bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6c3RvcmVXYXNtQ29udGV4dCk6CisgICAg
ICAgICogd2FzbS9XYXNtQ29udGV4dC5oOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Z2V0UGlubmVkUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQpOgorICAgICAgICAoSlND
OjpXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyk6CisgICAgICAg
ICogd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlu
bmVkUmVnaXN0ZXJJbmZvOjp0b1NhdmUpOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExT
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6dXNlRmFzdFRMU0ZvckNvbnRleHQpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZkNhbGxlZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU1dlYkFzc2VtYmx5TW9kdWxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseU1vZHVsZTo6Y2FsbGVlKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRv
SlNDYWxsZWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJv
eSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoK
KwogMjAxNy0wMy0yNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViQXNzZW1ibHk6IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBiZWxvbmdzIGluIEphdmFT
Y3JpcHRDb3JlL3dhc20vanMgbm90IEphdmFTY3JpcHRDb3JlL3dhc20KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCmluZGV4IDIyYTdiYTcwZjQ3YzUwMTYzMzgzMjk5ZGEw
ZTNlMzRjNWJjZGMyMjcuLjU2ZDVjYmVhMjQzZGVlNGEwYjFlZTJlNTczZWM4NmE4YjY1NDY5MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApAQCAtMjk4LDYgKzI5
OCwxMSBAQCBjbGFzcyBNYXJrZWRCbG9jayB7CiAgICAgCiAgICAgYm9vbCBpc01hcmtlZFJhdyhj
b25zdCB2b2lkKiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZWTSgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2Nr
LCBtX3ZtKTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YXRvbUFsaWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggNzgzMjA0NzkyMTkyNDQ1YjViZTdmOGNj
NTRlMjFiNjE4OGY5Yjc1ZC4uMjgwNDVjZTYyM2M0OGRmOGY5YjBjNjBlODk5NzFhOTdiMzUxNzg1
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApA
QCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorI2luY2x1ZGUgIldhc21NZW1v
cnlJbmZvcm1hdGlvbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBFeGVjdXRhYmxl
QmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4pCkBAIC03NjYsNiArNzcwLDQ5IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0
Q29udmVydFZhbHVlVG9Cb29sZWFuKEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgcmVzdWx0CiAg
ICAgZG9uZS5saW5rKHRoaXMpOwogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQordm9pZCBB
c3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dChHUFJSZWcgZHN0KQoreworI2lmIEVOQUJM
RShGQVNUX1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygp
KSB7CisgICAgICAgIGxvYWRGcm9tVExTUHRyKGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RGX1dBU01f
Q09OVEVYVF9LRVkpLCBkc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAg
bW92ZShXYXNtOjpQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLndhc21Db250ZXh0UG9pbnRlciwg
ZHN0KTsKK30KKwordm9pZCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQoR1BSUmVn
IHNyYykKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VX
ZWJBc3NlbWJseUZhc3RUTFMoKSkgeworICAgICAgICBzdG9yZVRvVExTUHRyKHNyYywgZmFzdFRM
U09mZnNldEZvcktleShXVEZfV0FTTV9DT05URVhUX0tFWSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisgICAgbW92ZShzcmMsIFdhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0
KCkud2FzbUNvbnRleHRQb2ludGVyKTsKK30KKworYm9vbCBBc3NlbWJseUhlbHBlcnM6OmxvYWRX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQoreworI2lmIEVOQUJMRShGQVNU
X1RMU19KSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQorICAg
ICAgICByZXR1cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7Cisj
ZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQXNzZW1ibHlIZWxwZXJzOjpzdG9y
ZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpCit7CisjaWYgRU5BQkxFKEZB
U1RfVExTX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCisg
ICAgICAgIHJldHVybiBzdG9yZVRvVExTUHRyTmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpOwor
I2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNTAwZDY4ODIyMzljZWI5YjIwOTcyNTQ0NmQzY2NkODg5
YmRhMTgyOC4uYTc4Y2M2OWY5YTc5NTE2NTI0MzUyMmJiNjIyMDc0OTI3ZDJhNDY1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xNjM2LDQ1ICsx
NjM2LDEyIEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgdm9pZCB3YW5nc0ludDY0SGFzaChHUFJSZWcgaW5wdXRBbmRSZXN1bHQsIEdQUlJlZyBz
Y3JhdGNoKTsKICNlbmRpZgogCi0gICAgdm9pZCBsb2FkV2FzbUNvbnRleHQoR1BSUmVnIGRzdCkK
LSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5RmFzdFRMUygpKSB7Ci0gICAgICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0
VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMg
c3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTc3MwotICAgICAgICBsb2FkUHRyKCZtX3ZtLT53YXNtQ29udGV4dCwg
ZHN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKLSAg
ICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHIoc3Jj
LCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7Ci0jZW5kaWYKLSAg
ICAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCi0gICAgICAgIHN0
b3JlUHRyKHNyYywgJm1fdm0tPndhc21Db250ZXh0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9v
bCBsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKLSAgICB7Ci0jaWYg
RU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIGxvYWRGcm9tVExTUHRyTmVlZHNNYWNyb1Nj
cmF0Y2hSZWdpc3RlcigpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIHN0YXRpYyBib29sIHN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkKLSAgICB7Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQ
dHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQor
ICAgIHZvaWQgbG9hZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpOworICAgIHZvaWQgc3RvcmVXYXNt
Q29udGV4dChHUFJSZWcgc3JjKTsKKyAgICBzdGF0aWMgYm9vbCBsb2FkV2FzbUNvbnRleHROZWVk
c01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgc3RhdGljIGJvb2wgc3RvcmVXYXNtQ29udGV4
dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9CiAKIHByb3RlY3RlZDoKICAgICBWTSogbV92bTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCmluZGV4IDdkZGM2YmFlMDA2ZGNmYzFhM2Q3NzFhMDYzMTM3M2RkMjU3
OTliNWEuLjE5Nzg0ODBhZGNjMTg0ZWVlNDhkOWI1YmFlODc1N2ViZDBjOTJhY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUg
IlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVT
dHViSW5mby5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgotI2luY2x1ZGUgIldhc21D
b250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0RHVtcC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNTc3LDI1
ICs1NzYsMTMgQEAgc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoVk0qIHZtLCBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbykKICAgICBjYWxsTGlua0luZm8uc2V0U2xvd1N0dWIoY3JlYXRlSklUU3R1
YlJvdXRpbmUodmlydHVhbFRodW5rLCAqdm0sIG51bGxwdHIsIHRydWUpKTsKIH0KIAotc3RhdGlj
IGJvb2wgaXNXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIGNhbGxlZSkKLXsK
LSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgLy8gVGhlIFdlYkFzc2VtYmx5IC0+IEpTIHN0
dWIgc2V0cyBpdCBjYWxsZXIgZnJhbWUncyBjYWxsZWUgdG8gYSBzaW5nbGV0b24gd2hpY2ggbGl2
ZXMgb24gdGhlIFZNLgotICAgIHJldHVybiBjYWxsZWUgPT0gdm0ud2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmdldCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0odm0pOwotICAgIFVOVVNFRF9QQVJB
TShjYWxsZWUpOwotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCi19Ci0KLXN0YXRpYyBKU0NlbGwqIHdlYkFzc2VtYmx5T3duZXIoVk0mIHZtKQorc3RhdGlj
IEpTQ2VsbCogd2ViQXNzZW1ibHlPd25lcihKU0NlbGwqIGNhbGxlZSkKIHsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgLy8gRWFjaCBXZWJBc3NlbWJseS5JbnN0YW5jZSBzaGFyZXMgdGhl
IHN0dWJzIGZyb20gdGhlaXIgV2ViQXNzZW1ibHkuTW9kdWxlLCB3aGljaCBhcmUgdGhlcmVmb3Jl
IHRoZSBhcHByb3ByaWF0ZSBvd25lci4KLSAgICByZXR1cm4gbG9hZFdhc21Db250ZXh0KHZtKS0+
bW9kdWxlKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxXZWJBc3NlbWJseVRvSlNDYWxsZWUqPihjYWxs
ZWUpLT5tb2R1bGUoKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0oY2FsbGVlKTsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTYxMiw3ICs1
OTksNyBAQCB2b2lkIGxpbmtGb3IoCiAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBj
YWxsZXJGcmFtZS0+Y29kZUJsb2NrKCk7CiAKICAgICAvLyBXZWJBc3NlbWJseSAtPiBKUyBzdHVi
cyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgotICAgIEpTQ2VsbCogb3duZXIgPSBpc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKSA/IHdlYkFzc2Vt
Ymx5T3duZXIodm0pIDogY2FsbGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dl
YkFzc2VtYmx5VG9KU0NhbGxlZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpID8gd2ViQXNzZW1ibHlP
d25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJsb2NrOwogICAgIEFTU0VS
VChvd25lcik7CiAKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5pc0xpbmtlZCgpKTsKQEAgLTcz
MiwxMCArNzE5LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSYgdm0gPSBjYWxsZXJG
cmFtZS0+dm0oKTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGNhbGxlckZyYW1l
LT5jb2RlQmxvY2soKTsKLSAgICBib29sIGlzV2ViQXNzZW1ibHkgPSBpc1dlYkFzc2VtYmx5VG9K
U0NhbGxlZSh2bSwgY2FsbGVyRnJhbWUtPmNhbGxlZSgpKTsKKyAgICBib29sIGlzV2ViQXNzZW1i
bHkgPSBpc1dlYkFzc2VtYmx5VG9KU0NhbGxlZShjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpOwogCiAg
ICAgLy8gV2ViQXNzZW1ibHkgLT4gSlMgc3R1YnMgZG9uJ3QgaGF2ZSBhIHZhbGlkIENvZGVCbG9j
ay4KLSAgICBKU0NlbGwqIG93bmVyID0gaXNXZWJBc3NlbWJseSA/IHdlYkFzc2VtYmx5T3duZXIo
dm0pIDogY2FsbGVyQ29kZUJsb2NrOworICAgIEpTQ2VsbCogb3duZXIgPSBpc1dlYkFzc2VtYmx5
ID8gd2ViQXNzZW1ibHlPd25lcihjYWxsZXJGcmFtZS0+Y2FsbGVlKCkpIDogY2FsbGVyQ29kZUJs
b2NrOwogICAgIEFTU0VSVChvd25lcik7CiAKICAgICBDYWxsVmFyaWFudExpc3QgbGlzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCAwODU3
ZTM0YmYxZDJiMDQ2ZDdhYmNhNDg5MTIxYzFmMzhjOTAyMmZjLi41MjE3YjgyNTg2ZGVlNWU0Zjlm
MGRhNGM2YjA3ODU0NjAyNjI0MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiTWF0aENvbW1v
bi5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVk
ZSAiU3BlY2lhbGl6ZWRUaHVua0pJVC5oIgotI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5j
bHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAj
aW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0xMTQ4LDE2ICsxMTQ3LDE3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21XYXNtVGh1bmtHZW5lcmF0
b3IoVk0qIHZtKQogICAgIH0KIAogICAgIGppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkV2FzbUNvbnRleHQoR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5j
YWxsKCk7CiAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgIHZvaWQgKCp0
aHJvd1dhc21FeGNlcHRpb24pKEV4ZWNTdGF0ZSosIFdhc206OkV4Y2VwdGlvblR5cGUpID0gW10g
KEV4ZWNTdGF0ZSogZXhlYywgV2FzbTo6RXhjZXB0aW9uVHlwZSB0eXBlKSB7CisgICAgdm9pZCAo
KnRocm93V2FzbUV4Y2VwdGlvbikoRXhlY1N0YXRlKiwgV2FzbTo6RXhjZXB0aW9uVHlwZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKikgPSBbXSAoRXhlY1N0YXRlKiBleGVjLCBXYXNtOjpFeGNlcHRp
b25UeXBlIHR5cGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQpIHsKICAgICAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gd2FzbUNvbnRleHQtPmds
b2JhbE9iamVjdCgpOwogCiAgICAgICAgICAgICBKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKiBl
cnJvciA9IEpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3I6OmNyZWF0ZShleGVjLCAqdm0sIGdsb2Jh
bE9iamVjdC0+V2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JN
ZXNzYWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCmluZGV4IDhiNjE1YTFhM2E1MTUxMDU5NjcyMDY1ZDQ3MmI3ZThhZTg1ODY5
OWEuLjBhZmYxMDgwYWNiMjAzYmU0ZTQzMDllMzhlNWExNDI4ZDUxZmU0YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0xNTYsMjEgKzE1NiwyMSBAQCB2
b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICAKICAgICBTVEFUSUNfQVNT
RVJUKFN0cmluZ1R5cGUgPT0gNik7CiAgICAgU1RBVElDX0FTU0VSVChTeW1ib2xUeXBlID09IDcp
OwotICAgIFNUQVRJQ19BU1NFUlQoT2JqZWN0VHlwZSA9PSAyMyk7Ci0gICAgU1RBVElDX0FTU0VS
VChGaW5hbE9iamVjdFR5cGUgPT0gMjQpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNGdW5jdGlvblR5
cGUgPT0gMjYpOwotICAgIFNUQVRJQ19BU1NFUlQoQXJyYXlUeXBlID09IDM0KTsKLSAgICBTVEFU
SUNfQVNTRVJUKERlcml2ZWRBcnJheVR5cGUgPT0gMzUpOwotICAgIFNUQVRJQ19BU1NFUlQoUHJv
eHlPYmplY3RUeXBlID09IDUzKTsKLSAgICBTVEFUSUNfQVNTRVJUKEludDhBcnJheVR5cGUgPT0g
MzYpOwotICAgIFNUQVRJQ19BU1NFUlQoSW50MTZBcnJheVR5cGUgPT0gMzcpOwotICAgIFNUQVRJ
Q19BU1NFUlQoSW50MzJBcnJheVR5cGUgPT0gMzgpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDhB
cnJheVR5cGUgPT0gMzkpOwotICAgIFNUQVRJQ19BU1NFUlQoVWludDhDbGFtcGVkQXJyYXlUeXBl
ID09IDQwKTsKLSAgICBTVEFUSUNfQVNTRVJUKFVpbnQxNkFycmF5VHlwZSA9PSA0MSk7Ci0gICAg
U1RBVElDX0FTU0VSVChVaW50MzJBcnJheVR5cGUgPT0gNDIpOwotICAgIFNUQVRJQ19BU1NFUlQo
RmxvYXQzMkFycmF5VHlwZSA9PSA0Myk7Ci0gICAgU1RBVElDX0FTU0VSVChGbG9hdDY0QXJyYXlU
eXBlID09IDQ0KTsKKyAgICBTVEFUSUNfQVNTRVJUKE9iamVjdFR5cGUgPT0gMjQpOworICAgIFNU
QVRJQ19BU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDI1KTsKKyAgICBTVEFUSUNfQVNTRVJUKEpT
RnVuY3Rpb25UeXBlID09IDI3KTsKKyAgICBTVEFUSUNfQVNTRVJUKEFycmF5VHlwZSA9PSAzNSk7
CisgICAgU1RBVElDX0FTU0VSVChEZXJpdmVkQXJyYXlUeXBlID09IDM2KTsKKyAgICBTVEFUSUNf
QVNTRVJUKFByb3h5T2JqZWN0VHlwZSA9PSA1NCk7CisgICAgU1RBVElDX0FTU0VSVChJbnQ4QXJy
YXlUeXBlID09IDM3KTsKKyAgICBTVEFUSUNfQVNTRVJUKEludDE2QXJyYXlUeXBlID09IDM4KTsK
KyAgICBTVEFUSUNfQVNTRVJUKEludDMyQXJyYXlUeXBlID09IDM5KTsKKyAgICBTVEFUSUNfQVNT
RVJUKFVpbnQ4QXJyYXlUeXBlID09IDQwKTsKKyAgICBTVEFUSUNfQVNTRVJUKFVpbnQ4Q2xhbXBl
ZEFycmF5VHlwZSA9PSA0MSk7CisgICAgU1RBVElDX0FTU0VSVChVaW50MTZBcnJheVR5cGUgPT0g
NDIpOworICAgIFNUQVRJQ19BU1NFUlQoVWludDMyQXJyYXlUeXBlID09IDQzKTsKKyAgICBTVEFU
SUNfQVNTRVJUKEZsb2F0MzJBcnJheVR5cGUgPT0gNDQpOworICAgIFNUQVRJQ19BU1NFUlQoRmxv
YXQ2NEFycmF5VHlwZSA9PSA0NSk7CiAgICAgU1RBVElDX0FTU0VSVChNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID09IDEpOwogICAgIFNUQVRJQ19BU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSA9PSAyKTsKICAgICBTVEFUSUNfQVNTRVJUKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
ID09IDB4NDAwMDAwMDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGU4ZTJkYjhjZGFjMmUxZTEwZDJiOGEzZjVmZjcw
NjE5ZmRlMDFkNGYuLmFiM2MwYzhlNzcxZmVkYWU5YjY1ZGFjZGI2MjI1MWExODdhM2M5YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KQEAgLTM0NSwyNCArMzQ1LDI0IEBAIGNvbnN0IFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSA9IDB4MEMKICMgVHlwZSBjb25zdGFudHMuCiBjb25zdCBTdHJpbmdUeXBlID0gNgogY29uc3Qg
U3ltYm9sVHlwZSA9IDcKLWNvbnN0IE9iamVjdFR5cGUgPSAyMwotY29uc3QgRmluYWxPYmplY3RU
eXBlID0gMjQKLWNvbnN0IEpTRnVuY3Rpb25UeXBlID0gMjYKLWNvbnN0IEFycmF5VHlwZSA9IDM0
Ci1jb25zdCBEZXJpdmVkQXJyYXlUeXBlID0gMzUKLWNvbnN0IFByb3h5T2JqZWN0VHlwZSA9IDUz
Citjb25zdCBPYmplY3RUeXBlID0gMjQKK2NvbnN0IEZpbmFsT2JqZWN0VHlwZSA9IDI1Citjb25z
dCBKU0Z1bmN0aW9uVHlwZSA9IDI3Citjb25zdCBBcnJheVR5cGUgPSAzNQorY29uc3QgRGVyaXZl
ZEFycmF5VHlwZSA9IDM2Citjb25zdCBQcm94eU9iamVjdFR5cGUgPSA1NAogCiAjIFRoZSB0eXBl
ZCBhcnJheSB0eXBlcyBuZWVkIHRvIGJlIG51bWJlcmVkIGluIGEgcGFydGljdWxhciBvcmRlciBi
ZWNhdXNlIG9mIHRoZSBtYW51YWxseSB3cml0dGVuCiAjIHN3aXRjaCBzdGF0ZW1lbnQgaW4gZ2V0
X2J5X3ZhbCBhbmQgcHV0X2J5X3ZhbC4KLWNvbnN0IEludDhBcnJheVR5cGUgPSAzNgotY29uc3Qg
SW50MTZBcnJheVR5cGUgPSAzNwotY29uc3QgSW50MzJBcnJheVR5cGUgPSAzOAotY29uc3QgVWlu
dDhBcnJheVR5cGUgPSAzOQotY29uc3QgVWludDhDbGFtcGVkQXJyYXlUeXBlID0gNDAKLWNvbnN0
IFVpbnQxNkFycmF5VHlwZSA9IDQxCi1jb25zdCBVaW50MzJBcnJheVR5cGUgPSA0MgotY29uc3Qg
RmxvYXQzMkFycmF5VHlwZSA9IDQzCi1jb25zdCBGbG9hdDY0QXJyYXlUeXBlID0gNDQKK2NvbnN0
IEludDhBcnJheVR5cGUgPSAzNworY29uc3QgSW50MTZBcnJheVR5cGUgPSAzOAorY29uc3QgSW50
MzJBcnJheVR5cGUgPSAzOQorY29uc3QgVWludDhBcnJheVR5cGUgPSA0MAorY29uc3QgVWludDhD
bGFtcGVkQXJyYXlUeXBlID0gNDEKK2NvbnN0IFVpbnQxNkFycmF5VHlwZSA9IDQyCitjb25zdCBV
aW50MzJBcnJheVR5cGUgPSA0MworY29uc3QgRmxvYXQzMkFycmF5VHlwZSA9IDQ0Citjb25zdCBG
bG9hdDY0QXJyYXlUeXBlID0gNDUKIAogY29uc3QgRmlyc3RBcnJheVR5cGUgPSBJbnQ4QXJyYXlU
eXBlCiBjb25zdCBMYXN0QXJyYXlUeXBlID0gRmxvYXQ2NEFycmF5VHlwZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggYWNkZDRlODhjMGFmMTRhMDlmNzZiZTJh
M2FhNWExOTBlYTZiODBlMy4uM2RmYzI4NWZlNzhjMmVjODQ4MDU4MzJkZmYxMDI5ZWU4MjRjYWRh
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0yOTgsNyAr
Mjk4LDcgQEAgSlNWYWx1ZSBKU0NlbGw6OmdldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0
ZSopCiBib29sIEpTQ2VsbDo6aXNBbnlXYXNtQ2FsbGVlKFZNJiB2bSkgY29uc3QKIHsKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgcmV0dXJuIGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5
Q2FsbGVlOjppbmZvKCkpIHx8IGluaGVyaXRzKHZtLCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6Omlu
Zm8oKSk7CisgICAgcmV0dXJuIGluaGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5Q2FsbGVlOjppbmZv
KCkpIHx8IGlzV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKHRoaXMpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0odm0pOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCA2YTk4MGE4MTgyY2FiYjY3ZThlZjY4MTg4YWZi
ZGRhYTA5ODYwM2VjLi45NTA5MzU2ZWM2ZGU1NGUwOTZmMDYzOWQ4M2I5MGRhZTFmM2RhODU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBAIC0z
NDYsNCArMzQ2LDkgQEAgaW5saW5lIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gdG9PYmpl
Y3RTbG93KGV4ZWMsIGdsb2JhbE9iamVjdCk7CiB9CiAKK2lubGluZSBib29sIGlzV2ViQXNzZW1i
bHlUb0pTQ2FsbGVlKGNvbnN0IEpTQ2VsbCogY2VsbCkKK3sKKyAgICByZXR1cm4gY2VsbC0+dHlw
ZSgpID09IFdlYkFzc2VtYmx5VG9KU0NhbGxlZVR5cGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAppbmRleCA0ZDdlZTQ5ODA2MDk3
MDA4YWQzNjcyODIxYjEzMjMxMDc3ZWMzZGRlLi42MmUzNzcyZjQyYjQ3YTg5OWE0ODA1NmVkZTk0
NWZkZTdlNjhmZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaApAQCAt
NTMsNiArNTMsOCBAQCBlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIEpTU291cmNlQ29kZVR5
cGUsCiAgICAgSlNTY3JpcHRGZXRjaGVyVHlwZSwKIAorICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZVR5cGUsCisKICAgICAvLyBUaGUgT2JqZWN0VHlwZSB2YWx1ZSBtdXN0IGNvbWUgYmVmb3JlIGFu
eSBKU1R5cGUgdGhhdCBpcyBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0LgogICAgIE9iamVjdFR5cGUs
CiAgICAgRmluYWxPYmplY3RUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dGFja0ZyYW1lLmNwcAppbmRleCA2ZDQ3ODY0Yzk3OGRjMjdhNGUzNzUwN2QyMjZkZDU3YTlhMGNj
Y2UyLi4xNjRjNGY1N2JjZDRiMmM0YmY3ZmMwNzY0YTVlMTA0NTRkYTdhMmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAtNzIsMTAgKzcyLDEw
IEBAIFN0cmluZyBTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUoVk0mIHZtKSBjb25zdAogICAgIH0K
ICAgICBTdHJpbmcgbmFtZTsKICAgICBpZiAobV9jYWxsZWUpIHsKKyAgICAgICAgaWYgKG1fY2Fs
bGVlLT5pc0FueVdhc21DYWxsZWUoKm1fY2FsbGVlLT52bSgpKSkKKyAgICAgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIjx3YXNtPiIpOwogICAgICAgICBpZiAobV9jYWxsZWUtPmlzT2JqZWN0
KCkpCiAgICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZtLCBqc0Nh
c3Q8SlNPYmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKLSAgICAgICAgZWxzZSBpZiAo
bV9jYWxsZWUtPmlzQW55V2FzbUNhbGxlZSgqbV9jYWxsZWUtPnZtKCkpKQotICAgICAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiPHdhc20+Iik7CiAgICAgfQogICAgIHJldHVybiBuYW1lLmlz
TnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG5hbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggODUxMTU0MmI3N2RmYzhlNmYyYmVhYmYxZjg5M2M3NzM5YWI3NGIzOC4u
ZDEwODE1M2Y2ODRlMTllYzg5NDRiZDQ0ZjExMjVjMTlmZTE3MjYwNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQwLDcgKzI0MCw2IEBAIFZNOjpWTShWTVR5cGUgdm1U
eXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICB3ZWJBc3NlbWJseUNhbGxlZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTV2ViQXNzZW1ibHlDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICB3ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2Vi
QXNzZW1ibHlDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
LSAgICB3ZWJBc3NlbWJseVRvSlNDYWxsZWUuc2V0KCp0aGlzLCBXZWJBc3NlbWJseVRvSlNDYWxs
ZWU6OmNyZWF0ZSgqdGhpcywgd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlLmdldCgpKSk7
CiAjZW5kaWYKICAgICBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA5ZDg2YWExOWE5MzNjZWEzOGFiNWYwMjMxODQ0NTljYjYwMTBmM2I3Li4xNThlNjk4YmE0
ODcxMjkxNTU1NTU4ZGQyNmQ1ZmFhMDljYTNkMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTMzNiw3ICszMzYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHdlYkFzc2VtYmx5Q2FsbGVlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IHdlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZTsKLSAgICBTdHJvbmc8SlNDZWxsPiB3
ZWJBc3NlbWJseVRvSlNDYWxsZWU7CiAjZW5kaWYKICAgICBTdHJvbmc8U3RydWN0dXJlPiBtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiByZWdF
eHBTdHJ1Y3R1cmU7CkBAIC00OTAsNiArNDg5LDExIEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVk0sIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IHdhc21Db250ZXh0T2Zmc2V0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVk0sIHdhc21Db250ZXh0KTsKKyAg
ICB9CisKICAgICB2b2lkIHJlc3RvcmVQcmV2aW91c0V4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2Vw
dGlvbikgeyBzZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsgfQogCiAgICAgdm9pZCBjbGVhckxhc3RF
eGNlcHRpb24oKSB7IG1fbGFzdEV4Y2VwdGlvbiA9IG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBmYWM1N2FkZGFm
MDc0ZTlhOGNmZTYwNjMzMzVmMzBkYTJlOTZkM2EyLi5hMDBiMzQ2Y2M5OGUxM2ViZTQwYzFhM2I2
YjZkNzBjY2U5NGJlNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQjNDb25zdFB0
clZhbHVlLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKICNpbmNsdWRlICJCM0dlbmVyYXRlLmgi
CisjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMuaCIKICNpbmNsdWRlICJCM1N3aXRjaFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNW
YWxpZGF0ZS5oIgpAQCAtNDksNyArNTAsNiBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3IuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCIKLSNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUg
Ildhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAj
aW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtMjE5LDYgKzIxOSwxMCBAQCBjbGFzcyBCM0lSR2Vu
ZXJhdG9yIHsKIAogICAgIHZvaWQgZW1pdENoZWNrc0Zvck1vZE9yRGl2KEIzOjpPcGNvZGUsIEV4
cHJlc3Npb25UeXBlIGxlZnQsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KTsKIAorICAgIFZhbHVlKiBt
YXRlcmlhbGl6ZVdhc21Db250ZXh0KFByb2NlZHVyZSYsIEJhc2ljQmxvY2sqKTsKKyAgICB2b2lk
IHJlc3RvcmVXYXNtQ29udGV4dChQcm9jZWR1cmUmLCBCYXNpY0Jsb2NrKiwgVmFsdWUqKTsKKyAg
ICB2b2lkIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0
aW9uJiwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmLCBCYXNpY0Jsb2NrKik7CisKICAgICBW
TSYgbV92bTsKICAgICBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbV9pbmZvOwogICAgIFByb2Nl
ZHVyZSYgbV9wcm9jOwpAQCAtMjI3LDM1ICsyMzEsNjMgQEAgY2xhc3MgQjNJUkdlbmVyYXRvciB7
CiAgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiBtX3VubGlua2VkV2FzbVRvV2Fz
bUNhbGxzOyAvLyBMaXN0IGVhY2ggY2FsbCBzaXRlIGFuZCB0aGUgZnVuY3Rpb24gaW5kZXggd2hv
c2UgYWRkcmVzcyBpdCBzaG91bGQgYmUgcGF0Y2hlZCB3aXRoLgogICAgIEdQUlJlZyBtX21lbW9y
eUJhc2VHUFI7CiAgICAgR1BSUmVnIG1fbWVtb3J5U2l6ZUdQUjsKKyAgICBHUFJSZWcgbV93YXNt
Q29udGV4dEdQUjsKICAgICBWYWx1ZSogbV96ZXJvVmFsdWVzW251bVR5cGVzXTsKICAgICBWYWx1
ZSogbV9pbnN0YW5jZVZhbHVlOyAvLyBGSVhNRTogbWFrZSB0aGlzIGxhenkgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5MgogfTsKIAotc3RhdGljIFZhbHVlKiBs
b2FkV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKK1ZhbHVl
KiBCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywg
QmFzaWNCbG9jayogYmxvY2spCiB7Ci0gICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0g
YmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCksIE9y
aWdpbigpKTsKLSAgICBpZiAoQ0NhbGxIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHROZWVkc01hY3Jv
U2NyYXRjaFJlZ2lzdGVyKCkpCi0gICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJT
ZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoCi0gICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4
dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBqaXQubG9hZFdhc21D
b250ZXh0KHBhcmFtc1swXS5ncHIoKSk7Ci0gICAgICAgIH0pOworICAgIGlmICh1c2VGYXN0VExT
Rm9yQ29udGV4dCgpKSB7CisgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJs
b2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmln
aW4oKSk7CisgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFj
cm9TY3JhdGNoUmVnaXN0ZXIoKSkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBDQ2FsbEhlbHBl
cnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAg
ICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBwYXRjaHBvaW50OworICAgIH0KIAotICAgIHJldHVybiBi
bG9jay0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJZGVudGl0eSwgT3JpZ2luKCksIHBhdGNocG9p
bnQpOwotfQorICAgIC8vIEZJWE1FOiBCZWNhdXNlIFdhc21Ub1dhc20gY2FsbCBjbG9iYmVycyB3
YXNtQ29udGV4dCByZWdpc3RlciBhbmQgZG9lcyBub3QgcmVzdG9yZSBpdCwgd2UgbmVlZCB0byBy
ZXN0b3JlIGl0IGluIHRoZSBjYWxsZXIgc2lkZS4KKyAgICAvLyBUaGlzIHByZXZlbnRzIHVzIGZy
b20gdXNpbmcgQXJndW1lbnRSZWcgdG8gdGhpcyAobG9naWNhbGx5KSBpbW11dGFibGUgcGlubmVk
IHJlZ2lzdGVyLgorICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBl
bmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSk7Cisg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSBmYWxzZTsKKyAgICBwYXRjaHBv
aW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICBwYXRjaHBvaW50LT5yZXN1bHRD
b25zdHJhaW50ID0gVmFsdWVSZXA6OnJlZyhtX3dhc21Db250ZXh0R1BSKTsKKyAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsgfSk7CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7Cit9CisKK3ZvaWQgQjNJ
UkdlbmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9j
ayogYmxvY2ssIFZhbHVlKiBhcmcpCit7CisgICAgaWYgKHVzZUZhc3RUTFNGb3JDb250ZXh0KCkp
IHsKKyAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7CisgICAgICAgIGlm
IChDQ2FsbEhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVy
KCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5l
ZFZhbHVlKGFyZywgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoCisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVs
cGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHQocGFyYW1zWzBdLmdwcigpKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi1zdGF0aWMgdm9pZCBzdG9yZVdh
c21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2ssIFZhbHVlKiBhcmcp
Ci17CisgICAgLy8gRklYTUU6IEJlY2F1c2UgV2FzbVRvV2FzbSBjYWxsIGNsb2JiZXJzIHdhc21D
b250ZXh0IHJlZ2lzdGVyIGFuZCBkb2VzIG5vdCByZXN0b3JlIGl0LCB3ZSBuZWVkIHRvIHJlc3Rv
cmUgaXQgaW4gdGhlIGNhbGxlciBzaWRlLgorICAgIC8vIFRoaXMgcHJldmVudHMgdXMgZnJvbSB1
c2luZyBBcmd1bWVudFJlZyB0byB0aGlzIChsb2dpY2FsbHkpIGltbXV0YWJsZSBwaW5uZWQgcmVn
aXN0ZXIuCiAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5l
dzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIEIzOjpWb2lkLCBPcmlnaW4oKSk7Ci0gICAgaWYgKEND
YWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkK
LSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVn
aXN0ZXJzKCkpOwotICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZywg
VmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigK
LSAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZUlmIGFsbG93U2NyYXRjaChqaXQsIENDYWxsSGVscGVyczo6c3RvcmVXYXNtQ29udGV4dE5l
ZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29u
dGV4dChwYXJhbXNbMF0uZ3ByKCkpOwotICAgICAgICB9KTsKKyAgICBFZmZlY3RzIGVmZmVjdHMg
PSBFZmZlY3RzOjpub25lKCk7CisgICAgZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAg
IGVmZmVjdHMucmVhZHMgPSBCMzo6SGVhcFJhbmdlOjp0b3AoKTsKKyAgICBwYXRjaHBvaW50LT5l
ZmZlY3RzID0gZWZmZWN0czsKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNl
dChtX3dhc21Db250ZXh0R1BSKSk7CisgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1faW5zdGFuY2VW
YWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgR1BSUmVnIHdhc21Db250ZXh0R1BS
ID0gbV93YXNtQ29udGV4dEdQUjsKKyAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbSkg
eworICAgICAgICBqaXQubW92ZShwYXJhbVswXS5ncHIoKSwgd2FzbUNvbnRleHRHUFIpOworICAg
IH0pOwogfQogCiBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxG
dW5jdGlvbiogY29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHMpCkBAIC0yODMsNyArMzE1LDEwIEBAIEIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IoVk0mIHZtLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJv
Y2VkdXJlJiBwCiAgICAgLy8gRklYTUUgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gcGluIHJlZ2lz
dGVycyBoZXJlIGlmIHRoZXJlJ3Mgbm8gbWVtb3J5LiBJdCBtYWtlcyB3YXNtIC0+IHdhc20gdGh1
bmtzIHNpbXBsZXIgZm9yIG5vdy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NjYyMwogICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVn
cy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICBtX3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53
YXNtQ29udGV4dFBvaW50ZXI7CiAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQ
Uik7CisgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgpKQorICAgICAgICBtX3Byb2MucGlu
UmVnaXN0ZXIobV93YXNtQ29udGV4dEdQUik7CiAgICAgQVNTRVJUKCFwaW5uZWRSZWdzLnNpemVS
ZWdpc3RlcnNbMF0uc2l6ZU9mZnNldCk7CiAgICAgbV9tZW1vcnlTaXplR1BSID0gcGlubmVkUmVn
cy5zaXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3RlcjsKICAgICBmb3IgKGNvbnN0IFBpbm5lZFNp
emVSZWdpc3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnMpCkBAIC0y
OTksNyArMzM0LDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbnN0
IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBQcm9jZWR1cmUmIHAKIAogICAgIHdhc21DYWxsaW5n
Q29udmVudGlvbigpLnNldHVwRnJhbWVJblByb2xvZ3VlKCZjb21waWxhdGlvbi0+d2FzbUNhbGxl
ZU1vdmVMb2NhdGlvbiwgbV9wcm9jLCBPcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOwogCi0gICAg
bV9pbnN0YW5jZVZhbHVlID0gbG9hZFdhc21Db250ZXh0KG1fcHJvYywgbV9jdXJyZW50QmxvY2sp
OworICAgIG1faW5zdGFuY2VWYWx1ZSA9IG1hdGVyaWFsaXplV2FzbUNvbnRleHQobV9wcm9jLCBt
X2N1cnJlbnRCbG9jayk7CiB9CiAKIHN0cnVjdCBNZW1vcnlCYXNlQW5kU2l6ZSB7CkBAIC0zMDcs
MTIgKzM0MiwxMiBAQCBzdHJ1Y3QgTWVtb3J5QmFzZUFuZFNpemUgewogICAgIFZhbHVlKiBzaXpl
OwogfTsKIAotc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZN
JiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2Nr
KQorc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdldE1lbW9yeUJhc2VBbmRTaXplKFZhbHVlKiBp
bnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBWYWx1
ZSogbWVtb3J5T2JqZWN0ID0gYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgT3JpZ2luKCksIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6Om9mZnNldE9mTWVtb3J5KCkpOwogCi0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5
cGUobG9hZFdhc21Db250ZXh0KHZtKS0+bWVtb3J5KCktPm1lbW9yeSgpLm1lbW9yeSgpKSkgPT0g
c2l6ZW9mKHZvaWQqKSwgImNvZGVnZW4gcmVsaWVzIG9uIHRoaXMgc2l6ZSIpOwotICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKGRlY2x0eXBlKGxvYWRXYXNtQ29udGV4dCh2bSktPm1lbW9yeSgpLT5t
ZW1vcnkoKS5zaXplKCkpKSA9PSBzaXplb2YodWludDY0X3QpLCAiY29kZWdlbiByZWxpZXMgb24g
dGhpcyBzaXplIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoZGVjbHR5cGUoc3RhdGljX2Nh
c3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4obnVsbHB0ciktPm1lbW9yeSgpLT5tZW1vcnkoKS5t
ZW1vcnkoKSkpID09IHNpemVvZih2b2lkKiksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZWNsdHlwZShzdGF0aWNfY2FzdDxKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqPihudWxscHRyKS0+bWVtb3J5KCktPm1lbW9yeSgpLnNpemUoKSkpID09
IHNpemVvZih1aW50NjRfdCksICJjb2RlZ2VuIHJlbGllcyBvbiB0aGlzIHNpemUiKTsKICAgICBN
ZW1vcnlCYXNlQW5kU2l6ZSByZXN1bHQ7CiAgICAgcmVzdWx0LmJhc2UgPSBibG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgbWVt
b3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRPZk1lbW9yeSgpKTsKICAgICBy
ZXN1bHQuc2l6ZSA9IGJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIElu
dDY0LCBPcmlnaW4oKSwgbWVtb3J5T2JqZWN0LCBKU1dlYkFzc2VtYmx5TWVtb3J5OjpvZmZzZXRP
ZlNpemUoKSk7CkBAIC0zMjAsOSArMzU1LDkgQEAgc3RhdGljIE1lbW9yeUJhc2VBbmRTaXplIGdl
dE1lbW9yeUJhc2VBbmRTaXplKFZNJiB2bSwgVmFsdWUqIGluc3RhbmNlLCBQcm9jZWR1cmUKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgdm9pZCByZXN0b3JlV2ViQXNzZW1ibHlHbG9i
YWxTdGF0ZShjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBWYWx1ZSogaW5zdGFuY2Us
IFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCit2b2lkIEIzSVJHZW5lcmF0b3I6
OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBt
ZW1vcnksIFZhbHVlKiBpbnN0YW5jZSwgUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBibG9j
aykKIHsKLSAgICBzdG9yZVdhc21Db250ZXh0KHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CisgICAg
cmVzdG9yZVdhc21Db250ZXh0KHByb2MsIGJsb2NrLCBpbnN0YW5jZSk7CiAKICAgICBpZiAoISFt
ZW1vcnkpIHsKICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvKiBwaW5uZWRSZWdzID0g
JlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CkBAIC0zOTIsNyArNDI3LDcgQEAgYXV0byBCM0lS
R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUpIC0+IFBh
cnRpYWxSZXN1bHQKIAogICAgIG1fbG9jYWxzLmdyb3coc2lnbmF0dXJlLT5hcmd1bWVudENvdW50
KCkpOwogICAgIHdhc21DYWxsaW5nQ29udmVudGlvbigpLmxvYWRBcmd1bWVudHMoc2lnbmF0dXJl
LCBtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBPcmlnaW4oKSwKLSAgICAgICAgWyZdIChFeHByZXNz
aW9uVHlwZSBhcmd1bWVudCwgdW5zaWduZWQgaSkgeworICAgICAgICBbPV0gKEV4cHJlc3Npb25U
eXBlIGFyZ3VtZW50LCB1bnNpZ25lZCBpKSB7CiAgICAgICAgICAgICBWYXJpYWJsZSogYXJndW1l
bnRWYXJpYWJsZSA9IG1fcHJvYy5hZGRWYXJpYWJsZShhcmd1bWVudC0+dHlwZSgpKTsKICAgICAg
ICAgICAgIG1fbG9jYWxzW2ldID0gYXJndW1lbnRWYXJpYWJsZTsKICAgICAgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9yaWdpbigp
LCBhcmd1bWVudFZhcmlhYmxlLCBhcmd1bWVudCk7CkBAIC00MTksMTIgKzQ1NCwxMSBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogCiBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJl
c3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBpbnQzMl90ICgqZ3Jv
d01lbW9yeSkgKEV4ZWNTdGF0ZSosIGludDMyX3QpID0gW10gKEV4ZWNTdGF0ZSogZXhlYywgaW50
MzJfdCBkZWx0YSkgLT4gaW50MzJfdCB7CisgICAgaW50MzJfdCAoKmdyb3dNZW1vcnkpIChFeGVj
U3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLCBpbnQzMl90KSA9IFtdIChFeGVjU3RhdGUq
IGV4ZWMsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2FzbUNvbnRleHQsIGludDMyX3QgZGVsdGEp
IC0+IGludDMyX3QgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICAgICAgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBpbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2bSk7Ci0gICAgICAgIEpTV2Vi
QXNzZW1ibHlNZW1vcnkqIHdhc21NZW1vcnkgPSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAg
IEpTV2ViQXNzZW1ibHlNZW1vcnkqIHdhc21NZW1vcnkgPSB3YXNtQ29udGV4dC0+bWVtb3J5KCk7
CiAKICAgICAgICAgaWYgKGRlbHRhIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ0
MCw3ICs0NzQsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lv
blR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKICAgICByZXN1bHQgPSBtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIE9yaWdpbigp
LAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1fcHJv
YywgT3JpZ2luKCksIGJpdHdpc2VfY2FzdDx2b2lkKj4oZ3Jvd01lbW9yeSkpLAotICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2lu
dGVyLCBPcmlnaW4oKSksIGRlbHRhKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1lUG9pbnRlciwgT3JpZ2luKCkpLCBtX2luc3Rh
bmNlVmFsdWUsIGRlbHRhKTsKIAogICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKG1f
aW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CiAK
QEAgLTQ0OSw3ICs0ODMsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZEdyb3dNZW1vcnkoRXhw
cmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpCiAKIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkQ3VycmVudE1lbW9yeShFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0
aWFsUmVzdWx0CiB7Ci0gICAgYXV0byBtZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXpl
KG1fdm0sIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisgICAgYXV0
byBtZW1vcnlWYWx1ZSA9IGdldE1lbW9yeUJhc2VBbmRTaXplKG1faW5zdGFuY2VWYWx1ZSwgbV9w
cm9jLCBtX2N1cnJlbnRCbG9jayk7CiAKICAgICBjb25zdGV4cHIgdWludDMyX3Qgc2hpZnRWYWx1
ZSA9IDE2OwogICAgIHN0YXRpY19hc3NlcnQoUGFnZUNvdW50OjpwYWdlU2l6ZSA9PSAxIDw8IHNo
aWZ0VmFsdWUsICJUaGlzIG11c3QgaG9sZCBmb3IgdGhlIGNvZGUgYmVsb3cgdG8gYmUgY29ycmVj
dC4iKTsKQEAgLTg4OSw5ICs5MjMsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLAogICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgQjM6OkJyYW5j
aCwgT3JpZ2luKCksIGlzV2FzbUNhbGwsIEZyZXF1ZW50ZWRCbG9jayhpc1dhc21CbG9jayksIEZy
ZXF1ZW50ZWRCbG9jayhpc0pTQmxvY2spKTsKIAogICAgICAgICBWYWx1ZSogd2FzbUNhbGxSZXN1
bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBpc1dhc21CbG9j
aywgT3JpZ2luKCksIGFyZ3MsIHRvQjNUeXBlKHJldHVyblR5cGUpLAotICAgICAgICAgICAgWyZd
IChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKKyAgICAgICAgICAgIFs9XSAoUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKCkpOwogICAgICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMs
IGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKCk7CkBAIC05MDQsOSArOTM5LDEwIEBAIGF1
dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBT
aWduYXR1cmUqIHNpZ25hdHVyZSwKICAgICAgICAgaXNXYXNtQmxvY2stPmFwcGVuZE5ld0NvbnRy
b2xWYWx1ZShtX3Byb2MsIEp1bXAsIE9yaWdpbigpLCBjb250aW51YXRpb24pOwogCiAgICAgICAg
IFZhbHVlKiBqc0NhbGxSZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5zZXR1cENhbGwo
bV9wcm9jLCBpc0pTQmxvY2ssIE9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwK
LSAgICAgICAgICAgIFsmXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSB7CisgICAgICAg
ICAgICBbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCkgewogICAgICAgICAgICAgICAg
IHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2
ZSgpKTsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3VubGlua2Vk
V2FzbVRvV2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2FsbCgpOwpAQCAtOTMy
LDkgKzk2OCwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGwodWludDMyX3QgZnVuY3Rp
b25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsCiAgICAgICAgIHJlc3RvcmVXZWJB
c3NlbWJseUdsb2JhbFN0YXRlKG1faW5mby5tZW1vcnksIG1faW5zdGFuY2VWYWx1ZSwgbV9wcm9j
LCBjb250aW51YXRpb24pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IHdhc21DYWxs
aW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBPcmlnaW4o
KSwgYXJncywgdG9CM1R5cGUocmV0dXJuVHlwZSksCi0gICAgICAgICAgICBbJl0gKFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCkgeworICAgICAgICAgICAgWz1dIChQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQpIHsKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c1Bpbm5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFk
c1Bpbm5lZCA9IHRydWU7CisKICAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0
b3IoW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQuY2Fs
bCgpOwpAQCAtMTAxMCwxMiArMTA0NywxMiBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdChjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgU2lnbmF0dXJlSW5kZXggcwogCiAg
ICAgVHlwZSByZXR1cm5UeXBlID0gc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCk7CiAgICAgcmVzdWx0
ID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuc2V0dXBDYWxsKG1fcHJvYywgbV9jdXJyZW50Qmxv
Y2ssIE9yaWdpbigpLCBhcmdzLCB0b0IzVHlwZShyZXR1cm5UeXBlKSwKLSAgICAgICAgWyZdIChQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKKyAgICAgICAgWz1dIChQYXRjaHBvaW50VmFs
dWUqIHBhdGNocG9pbnQpIHsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVz
UGlubmVkID0gdHJ1ZTsKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5u
ZWQgPSB0cnVlOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVn
aXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoKSk7CiAKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChjYWxsZWVDb2RlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLQogICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAg
ICAgICAgICBqaXQuY2FsbChwYXJhbXNbcmV0dXJuVHlwZSA9PSBWb2lkID8gMCA6IDFdLmdwcigp
KTsKQEAgLTEwODAsMTEgKzExMTcsOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBw
ZXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogICAgICAg
ICAqbGlua2VkQ2FsbGVlTW92ZSA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjYWxsZWVNb3ZlTG9j
YXRpb24pOwogICAgIH0pOwogCi0gICAgUmVnaXN0ZXJTZXQgdG9TYXZlOwogICAgIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7
Ci0gICAgdG9TYXZlLnNldChwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyKTsKLSAgICBmb3Ig
KGNvbnN0IFBpbm5lZFNpemVSZWdpc3RlckluZm8mIHJlZ0luZm8gOiBwaW5uZWRSZWdzLnNpemVS
ZWdpc3RlcnMpCi0gICAgICAgIHRvU2F2ZS5zZXQocmVnSW5mby5zaXplUmVnaXN0ZXIpOworICAg
IFJlZ2lzdGVyU2V0IHRvU2F2ZSA9IHBpbm5lZFJlZ3MudG9TYXZlKCk7CiAKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgdW5zaWduZWQgdG9TYXZlU2l6ZSA9IHRvU2F2ZS5udW1iZXJPZlNldEdQ
UnMoKTsKQEAgLTExOTEsMTAgKzEyMjUsMjUgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21X
cmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBXYXNtSW4KICAg
ICAgICAgfQogICAgIH0KIAorICAgIC8vIEZJWE1FOiBKU3RvV2FzbSB3cmFwcGVyIHNob3VsZCB0
YWtlIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBwb2ludGVyIGFzIGFuIGFyZ3VtZW50IGRpcmVjdGx5
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxODIK
KyAgICBHUFJSZWcgd2FzbUNvbnRleHQgPSBwaW5uZWRSZWdzLndhc21Db250ZXh0UG9pbnRlcjsK
KyAgICBpZiAoIXVzZUZhc3RUTFNGb3JDb250ZXh0KCkpIHsKKyAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgd2Fz
bUNvbnRleHQpOworICAgICAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgd2FzbUNvbnRleHQpOworICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRleHQsIE1hcmtlZEJsb2NrOjpvZmZz
ZXRPZlZNKCkpLCB3YXNtQ29udGV4dCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyh3YXNtQ29udGV4dCwgVk06Ondhc21Db250ZXh0T2Zmc2V0KCkpLCB3YXNtQ29u
dGV4dCk7CisgICAgfQorCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVn
IGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOwotICAgICAgICBqaXQu
bG9hZFdhc21Db250ZXh0KGJhc2VNZW1vcnkpOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZU1lbW9yeSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29u
dGV4dCgpKQorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdh
c21Db250ZXh0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNl
TWVtb3J5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0
KGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSks
IGJhc2VNZW1vcnkpOworICAgICAgICB9CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpemVSZWdzID0g
cGlubmVkUmVncy5zaXplUmVnaXN0ZXJzOwogICAgICAgICBBU1NFUlQoc2l6ZVJlZ3Muc2l6ZSgp
ID49IDEpOwogICAgICAgICBBU1NFUlQoIXNpemVSZWdzWzBdLnNpemVPZmZzZXQpOyAvLyBUaGUg
Zm9sbG93aW5nIGNvZGUgYXNzdW1lcyB3ZSBzdGFydCBhdCAwLCBhbmQgY2FsY3VsYXRlcyBzdWJz
ZXF1ZW50IHNpemUgcmVnaXN0ZXJzIHJlbGF0aXZlIHRvIDAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQmluZGluZy5jcHAKaW5kZXggZmI2NzY1N2VhNDBjZWNkMGI4Njg4MGViYjI0
YzdlYTc5MTNmOWMzMy4uZTBjYWIxZjZkNGQ3OTgxYmM4ZGM3MDlhZTJhZmY4ZmIyNjA5NDhhNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CaW5kaW5nLmNwcApAQCAtMzYsNyAr
MzYsNiBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJOYXRpdmVFcnJvckNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCi0jaW5jbHVk
ZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewpAQCAtNjYsOCArNjUsNiBAQCBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENhbGxMaW5rSW5mbz4mIGNh
bGxMaW5rSW5mb3MsCiAKICAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKICAgICBqaXQu
c3RvcmU2NChKSVQ6OlRydXN0ZWRJbW0zMigwKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7IC8vIEZJWE1FIFN0b3AgdXNpbmcgMCBhcyBjb2RlQmxvY2tz
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MzIxCi0gICAgaml0
LnN0b3JlUHRyKEpJVDo6VHJ1c3RlZEltbVB0cih2bS0+d2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmdl
dCgpKSwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0KIAog
ICAgIHsKICAgICAgICAgYm9vbCBoYXNCYWRJNjRVc2UgPSBmYWxzZTsKQEAgLTkzLDE2ICs5MCwy
MiBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHdhc21Ub0pzKFZNKiB2bSwgQmFnPENh
bGxMaW5rSW5mbz4mIGNhbGxMaW5rSW5mb3MsCiAgICAgICAgIGlmIChoYXNCYWRJNjRVc2UpIHsK
ICAgICAgICAgICAgIGppdC5jb3B5Q2FsbGVlU2F2ZXNUb1ZNRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKCk7CiAgICAgICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRl
eHQoR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKworICAgICAgICAgICAgLy8gU3RvcmUgQ2FsbGVl
LgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkNhbGxlZSgpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZv
Ojphcmd1bWVudEdQUjIsIEpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSkpOworCiAgICAgICAgICAgICBhdXRvIGNhbGwgPSBqaXQuY2FsbCgpOwogICAgICAgICAgICAg
aml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgICAgICAgICAgdm9pZCAoKnRocm93
QmFkSTY0KShFeGVjU3RhdGUqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMpIC0+IHZvaWQgeworICAg
ICAgICAgICAgdm9pZCAoKnRocm93QmFkSTY0KShFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2UqKSA9IFtdIChFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogd2Fz
bUNvbnRleHQpIC0+IHZvaWQgewogICAgICAgICAgICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwogICAgICAgICAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwogCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBsb2FkV2FzbUNvbnRleHQoKnZtKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB3YXNtQ29udGV4dC0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8q
IGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMsICp2bSwgZ2xvYmFsT2JqZWN0LT50
eXBlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBBU0NJSUxpdGVyYWwoImk2
NCBub3QgYWxsb3dlZCBhcyByZXR1cm4gdHlwZSBvciBhcmd1bWVudCB0byBhbiBpbXBvcnRlZCBm
dW5jdGlvbiIpKTsKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgZXJyb3IpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1Miw2ICsyNTUsMTAgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB3YXNtVG9KcyhWTSogdm0sIEJhZzxDYWxsTGlu
a0luZm8+JiBjYWxsTGlua0luZm9zLAogICAgICAgICB9CiAgICAgfQogCisgICAgaml0LmxvYWRX
YXNtQ29udGV4dChHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSk7CisKICAgICBHUFJSZWcgaW1wb3J0SlNDZWxsR1BSUmVnID0g
R1BSSW5mbzo6cmVnVDA7IC8vIENhbGxlZSBuZWVkcyB0byBiZSBpbiByZWdUMCBmb3Igc2xvdyBw
YXRoIGJlbG93LgogICAgIEFTU0VSVCghd2FzbUNDLm1fY2FsbGVlU2F2ZVJlZ2lzdGVycy5nZXQo
aW1wb3J0SlNDZWxsR1BSUmVnKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Db250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
b250ZXh0LmNwcAppbmRleCA2NDg0Y2Q0ZjUyNjZhMzhlODIxNTRhNzFkNzA1MmJhYWVlNDg5NDI1
Li4yMTdjZTFlMmZkNjQzYzU2M2ViZTRmMjdhOTQ2OWRhNDdjMjRiOWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCkBAIC0zNCwxNyArMzQsMTcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLUpTV2ViQXNzZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0
KFZNJiB2bSkKK1dhc21Db250ZXh0KiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQogewogI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRM
UygpKQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTV2ViQXNzZW1ibHlJbnN0YW5jZSo+
KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdhc21Db250ZXh0Kj4oX3B0aHJlYWRfZ2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CiAjZW5kaWYKICAgICAvLyBGSVhNRTog
U2F2ZSB0aGlzIHN0YXRlIGVsc2V3aGVyZSB0byBhbGxvdyBQSUMuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk3NzMKICAgICByZXR1cm4gdm0ud2FzbUNvbnRleHQ7
CiB9CiAKLXZvaWQgc3RvcmVXYXNtQ29udGV4dChWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSogaW5zdGFuY2UpCit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBXYXNtQ29udGV4dCog
aW5zdGFuY2UpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICBpZiAoT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNv
bnRleHQuaAppbmRleCAxYzVlOGExOGQyYjA3NDgxZWU2MDBmOGI3MDFlNTNjNjM5ZTVmY2M0Li5h
ZmU3ODM1Y2NkYjJiZjNmMTM1Zjg4NzRkN2NhZTRkM2VhNjcwNDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKQEAgLTMyLDggKzMyLDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOwogY2xhc3MgVk07CiAKLUpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogbG9hZFdhc21Db250ZXh0KFZNJik7Ci12b2lkIHN0b3JlV2FzbUNvbnRl
eHQoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKK3VzaW5nIFdhc21Db250ZXh0ID0gSlNX
ZWJBc3NlbWJseUluc3RhbmNlOworCitXYXNtQ29udGV4dCogbG9hZFdhc21Db250ZXh0KFZNJik7
Cit2b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBXYXNtQ29udGV4dCopOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeUluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnlJbmZvcm1hdGlvbi5jcHAKaW5kZXggOGFjMDg2NjI3OGI1MTM5M2I2NjllYTA5YTdiNTQ4ZDZk
OWE3NmIxNC4uNTQzNDkyYWIwYzUzNmRiMGI5NjU3NmIyN2RhZmVlNjQwYTY3ZjY1OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24u
Y3BwCkBAIC0zNCw0MyArMzQsNTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIAorc3RhdGljIFZlY3RvcjxHUFJSZWc+IGdldFBpbm5lZFJlZ2lzdGVycyh1bnNpZ25lZCBy
ZW1haW5pbmdQaW5uZWRSZWdpc3RlcnMpCit7CisgICAgVmVjdG9yPEdQUlJlZz4gcmVnaXN0ZXJz
OworICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZvckVh
Y2goWyZdIChSZWcgcmVnKSB7CisgICAgICAgIGlmICghcmVnLmlzR1BSKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7CisgICAgICAgIGlmICgh
cmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzIHx8IFJlZ2lzdGVyU2V0OjpzdGFja1JlZ2lzdGVycygp
LmdldChyZWcpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAtLXJlbWFpbmluZ1Bpbm5l
ZFJlZ2lzdGVyczsKKyAgICAgICAgcmVnaXN0ZXJzLmFwcGVuZChncHIpOworICAgIH0pOworICAg
IHJldHVybiByZWdpc3RlcnM7Cit9CisKIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgUGlubmVk
UmVnaXN0ZXJJbmZvOjpnZXQoKQogewogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8UGlu
bmVkUmVnaXN0ZXJJbmZvPiBzdGF0aWNQaW5uZWRSZWdpc3RlckluZm87CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mb0ZsYWc7CiAgICAgc3RkOjpjYWxs
X29uY2Uoc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvRmxhZywgW10gKCkgewogICAgICAgICBWZWN0
b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4gc2l6ZVJlZ2lzdGVyczsKLSAgICAgICAgR1BSUmVn
IGJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIgPSBJ
bnZhbGlkR1BSUmVnOworICAgICAgICBHUFJSZWcgd2FzbUNvbnRleHRQb2ludGVyID0gSW52YWxp
ZEdQUlJlZzsKIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFu
IG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlciwgYW5kIHdlIHNob3VsZCBhbGxvdyBkaWZmZXJlbnQK
ICAgICAgICAgLy8gICAgICAgIFdlYkFzc2VtYmx5Lkluc3RhbmNlIHRvIGhhdmUgZGlmZmVyZW50
IHBpbnMuIFJpZ2h0IG5vdyB3ZSB0YWtlIGEgdmVjdG9yIHdpdGggb25seSBvbmUgZW50cnkuCiAg
ICAgICAgIC8vICAgICAgICBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc2l6ZSByZWdpc3Rlciwg
d2UgY2FuIGhhdmUgb25lIGZvciBlYWNoIGxvYWQgc2l6ZSBjbGFzcy4KICAgICAgICAgLy8gICAg
ICAgIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1Mgog
ICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07Ci0gICAgICAgIHVu
c2lnbmVkIHJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUoKSArIDE7
Ci0gICAgICAgIGpzY0NhbGxpbmdDb252ZW50aW9uKCkubV9jYWxsZWVTYXZlUmVnaXN0ZXJzLmZv
ckVhY2goWyZdIChSZWcgcmVnKSB7Ci0gICAgICAgICAgICBpZiAoIXJlZy5pc0dQUigpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIEdQUlJlZyBncHIgPSByZWcuZ3ByKCk7
Ci0gICAgICAgICAgICBpZiAoIXJlbWFpbmluZ1Bpbm5lZFJlZ2lzdGVycyB8fCBSZWdpc3RlclNl
dDo6c3RhY2tSZWdpc3RlcnMoKS5nZXQocmVnKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBpZiAocmVtYWluaW5nUGlubmVkUmVnaXN0ZXJzID09IDEpIHsKLSAgICAgICAg
ICAgICAgICBiYXNlTWVtb3J5UG9pbnRlciA9IGdwcjsKLSAgICAgICAgICAgICAgICByZW1haW5p
bmdQaW5uZWRSZWdpc3RlcnMtLTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHNpemVSZWdpc3RlcnMuYXBwZW5kKHsgZ3ByLCBwaW5uZWRTaXplc1stLXJlbWFpbmluZ1Bpbm5l
ZFJlZ2lzdGVycyAtIDFdIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBBU1NFUlQoIXJlbWFp
bmluZ1Bpbm5lZFJlZ2lzdGVycyk7Ci0gICAgICAgIHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5j
b25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJzKSwgYmFzZU1lbW9yeVBvaW50ZXIpOworICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZlBpbm5lZFJlZ2lzdGVycyA9IHBpbm5lZFNpemVzLnNpemUo
KSArIDE7CisgICAgICAgIGlmICghdXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKKyAgICAgICAgICAg
ICsrbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnM7CisgICAgICAgIFZlY3RvcjxHUFJSZWc+IHBpbm5l
ZFJlZ3MgPSBnZXRQaW5uZWRSZWdpc3RlcnMobnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMpOworCisg
ICAgICAgIGJhc2VNZW1vcnlQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgpOworICAgICAg
ICBpZiAoIXVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCisgICAgICAgICAgICB3YXNtQ29udGV4dFBv
aW50ZXIgPSBwaW5uZWRSZWdzLnRha2VMYXN0KCk7CisKKyAgICAgICAgQVNTRVJUKHBpbm5lZFNp
emVzLnNpemUoKSA9PSBwaW5uZWRSZWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBwaW5uZWRTaXplcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHNpemVSZWdp
c3RlcnMuYXBwZW5kKHsgcGlubmVkUmVnc1tpXSwgcGlubmVkU2l6ZXNbaV0gfSk7CisgICAgICAg
IHN0YXRpY1Bpbm5lZFJlZ2lzdGVySW5mby5jb25zdHJ1Y3QoV1RGTW92ZShzaXplUmVnaXN0ZXJz
KSwgYmFzZU1lbW9yeVBvaW50ZXIsIHdhc21Db250ZXh0UG9pbnRlcik7CiAgICAgfSk7CiAKICAg
ICByZXR1cm4gc3RhdGljUGlubmVkUmVnaXN0ZXJJbmZvLmdldCgpOwogfQogCi1QaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5m
bz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIpCitQaW5uZWRSZWdp
c3RlckluZm86OlBpbm5lZFJlZ2lzdGVySW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5m
bz4mJiBzaXplUmVnaXN0ZXJzLCBHUFJSZWcgYmFzZU1lbW9yeVBvaW50ZXIsIEdQUlJlZyB3YXNt
Q29udGV4dFBvaW50ZXIpCiAgICAgOiBzaXplUmVnaXN0ZXJzKFdURk1vdmUoc2l6ZVJlZ2lzdGVy
cykpCiAgICAgLCBiYXNlTWVtb3J5UG9pbnRlcihiYXNlTWVtb3J5UG9pbnRlcikKKyAgICAsIHdh
c21Db250ZXh0UG9pbnRlcih3YXNtQ29udGV4dFBvaW50ZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKaW5kZXggNmRl
MDcwYTEwNDUyZmY2YmIzYzVjMjUwNDExZjEwZTkxMzg5ZTRhMi4uYjVkMTQ4Njk1N2FkNDI4MjAx
MGY2OWU5MTk5OGQ1MmJlZjg3OGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0
ZXJTZXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VDb3Vu
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQzLDggKzQ0LDIwIEBAIHN0cnVjdCBQaW5u
ZWRTaXplUmVnaXN0ZXJJbmZvIHsKIHN0cnVjdCBQaW5uZWRSZWdpc3RlckluZm8gewogICAgIFZl
Y3RvcjxQaW5uZWRTaXplUmVnaXN0ZXJJbmZvPiBzaXplUmVnaXN0ZXJzOwogICAgIEdQUlJlZyBi
YXNlTWVtb3J5UG9pbnRlcjsKKyAgICBHUFJSZWcgd2FzbUNvbnRleHRQb2ludGVyOwogICAgIHN0
YXRpYyBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIGdldCgpOwotICAgIFBpbm5lZFJlZ2lzdGVy
SW5mbyhWZWN0b3I8UGlubmVkU2l6ZVJlZ2lzdGVySW5mbz4mJiwgR1BSUmVnKTsKKyAgICBQaW5u
ZWRSZWdpc3RlckluZm8oVmVjdG9yPFBpbm5lZFNpemVSZWdpc3RlckluZm8+JiYsIEdQUlJlZywg
R1BSUmVnKTsKKworICAgIFJlZ2lzdGVyU2V0IHRvU2F2ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5zZXQoYmFzZU1lbW9yeVBvaW50
ZXIpOworICAgICAgICBpZiAod2FzbUNvbnRleHRQb2ludGVyICE9IEludmFsaWRHUFJSZWcpCisg
ICAgICAgICAgICByZXN1bHQuc2V0KHdhc21Db250ZXh0UG9pbnRlcik7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgaW5mbyA6IHNpemVSZWdpc3RlcnMpCisgICAgICAgICAgICByZXN1bHQuc2V0
KGluZm8uc2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiB9Owog
CiBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbiB7CkBAIC03Myw2ICs4NiwyMCBAQCBjbGFzcyBNZW1v
cnlJbmZvcm1hdGlvbiB7CiAgICAgYm9vbCBtX2lzSW1wb3J0IHsgZmFsc2UgfTsKIH07CiAKK2lu
bGluZSBib29sIHVzZUZhc3RUTFMoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCisgICAg
cmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgdXNlRmFzdFRMU0ZvckNvbnRleHQo
KQoreworICAgIHJldHVybiB1c2VGYXN0VExTKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0FTTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDFjMTFi
MGNhNjVjOTE3NDJmOGU0ODEzYzI0ZDk3NWY2NWVlYmFhMTguLmUzYmQ3NDAyOGUyODJmMjg1NmMz
NGI5ZTUwNzM2YjZiNTg3NGU4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRl
ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODEsNiArODIsNyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUsCiAKICAgICBtX2NvZGVCbG9jay5zZXQodm0sIHRoaXMsIG1vZHVsZS0+Y29kZUJsb2NrKCkp
OwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNldCh2bSwgdGhpcywgbW9kdWxlTmFtZXNw
YWNlT2JqZWN0KTsKKyAgICBtX2NhbGxlZS5zZXQodm0sIHRoaXMsIG1vZHVsZS0+Y2FsbGVlKCkp
OwogICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJleHBvcnRz
IiksIG1vZHVsZU5hbWVzcGFjZU9iamVjdCwgTm9uZSk7CiB9CiAKQEAgLTk5LDYgKzEwMSw3IEBA
IHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9t
b2R1bGVOYW1lc3BhY2VPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
bWVtb3J5KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhYmxlKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CiAgICAgdmlzaXRvci5yZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bW9kdWxlKCktPm1vZHVsZUluZm9ybWF0aW9u
KCkuZ2xvYmFscy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2Jq
ZWN0LT5tX251bUltcG9ydEZ1bmN0aW9uczsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgq
dGhpc09iamVjdC0+aW1wb3J0RnVuY3Rpb24oaSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBlMjI4NDk2OTY3
MjA1YTMxMzZjODgzYmJkZTMyNmFkYmM3MTExMzBkLi40MmFhMWIzNWQxYjJhNmY5MzliOWQzMjk2
NmI1ZjM3ZTRlZTY0MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOworY2xhc3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOwogCiBjbGFzcyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgpA
QCAtOTcsNiArOTgsNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk1lbW9y
eSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fbWVt
b3J5KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYWJsZSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fdGFibGUpOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBvZmZzZXRPZkNhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U1dlYkFzc2VtYmx5SW5zdGFuY2UsIG1fY2FsbGVlKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZHbG9iYWxzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSwgbV9nbG9iYWxzKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZJbXBvcnRG
dW5jdGlvbnMoKSB7IHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRl
QmFycmllcjxKU0NlbGw+KT4oc2l6ZW9mKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkpOyB9CiAgICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZkltcG9ydEZ1bmN0aW9uKHNpemVfdCBpbXBvcnRGdW5jdGlv
bk51bSkgeyByZXR1cm4gb2Zmc2V0T2ZJbXBvcnRGdW5jdGlvbnMoKSArIGltcG9ydEZ1bmN0aW9u
TnVtICogc2l6ZW9mKHNpemVvZihXcml0ZUJhcnJpZXI8SlNDZWxsPikpOyB9CkBAIC0xMTcsNiAr
MTE5LDcgQEAgY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlIDogcHVibGljIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1f
bW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5TWVt
b3J5PiBtX21lbW9yeTsKICAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseVRhYmxlPiBtX3Rh
YmxlOworICAgIFdyaXRlQmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxsZWU+IG1fY2FsbGVlOwog
ICAgIE1hbGxvY1B0cjx1aW50NjRfdD4gbV9nbG9iYWxzOwogICAgIHVuc2lnbmVkIG1fbnVtSW1w
b3J0RnVuY3Rpb25zOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKaW5kZXggZjQxNDY3ZjRmYWFlOWRhYTA4MTY3NGU3
ZjIwNTc4ZDRjNWViNmYzYy4uOTM5NDM3ZTQzOWM4NWE1OTJiMTk4NTRhNzE0MjNjOGRhZGIzNWNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseU1vZHVsZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXYXNtRm9ybWF0Lmgi
CiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgogI2luY2x1ZGUgIldhc21QbGFuLmgiCisjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEzMiw2ICsxMzMsNyBAQCB2b2lkIEpTV2ViQXNzZW1i
bHlNb2R1bGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCB1aW50OF90
KiBzb3VyYwogICAgIG1fc291cmNlQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShzb3VyY2Us
IGJ5dGVTaXplKTsKICAgICBtX21vZHVsZUluZm9ybWF0aW9uID0gcGxhbi50YWtlTW9kdWxlSW5m
b3JtYXRpb24oKTsKICAgICBtX2V4cG9ydFN5bWJvbFRhYmxlLnNldCh2bSwgdGhpcywgZXhwb3J0
U3ltYm9sVGFibGUpOworICAgIG1fY2FsbGVlLnNldCh2bSwgdGhpcywgV2ViQXNzZW1ibHlUb0pT
Q2FsbGVlOjpjcmVhdGUodm0sIHZtLndlYkFzc2VtYmx5VG9KU0NhbGxlZVN0cnVjdHVyZS5nZXQo
KSwgdGhpcykpOwogICAgIGNvZGVCbG9ja0Zvcihjb2RlQmxvY2stPm1vZGUoKSkuc2V0KHZtLCB0
aGlzLCBjb2RlQmxvY2spOwogfQogCkBAIC0xNDcsNiArMTQ5LDcgQEAgdm9pZCBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXhwb3J0U3ltYm9sVGFibGUpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgV2FzbTo6TnVtYmVyT2ZNZW1vcnlNb2RlczsgKytpKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja3NbaV0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4IDM4OWU2
M2EzMzVjMWMxMTdiNjk3Njk3MTBjNjNiZDdmODM0ZTg2ZTQuLjA0MTQxMDRiYzY4Njc4MzEyNTk5
NzE5YzIxMzhjNjg4OTIyMjIyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgUGxh
bjsKIAogY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OworY2xh
c3MgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOwogCiBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlIDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTYwLDYgKzYxLDcgQEAg
Y2xhc3MgSlNXZWJBc3NlbWJseU1vZHVsZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAgICAgewogICAgICAgICByZXR1cm4gbV9tb2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0dXJlSW5k
ZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSk7CiAgICAgfQorICAg
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY2FsbGVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsZWUu
Z2V0KCk7IH0KIAogICAgIC8vIFJldHVybnMgdGhlIGNvZGUgYmxvY2sgdGhhdCB0aGlzIG1vZHVs
ZSB3YXMgb3JpZ2luYWxseSBjb21waWxlZCBleHBlY3RpbmcgdG8gdXNlLiBUaGlzIHdvbid0IG5l
ZWQgdG8gcmVjb21waWxlLgogICAgIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jaygp
IHsgcmV0dXJuIGNvZGVCbG9ja0ZvcihtX21vZHVsZUluZm9ybWF0aW9uLT5tZW1vcnkubW9kZSgp
KS5nZXQoKTsgfQpAQCAtNzksNiArODEsNyBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlIDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6
TW9kdWxlSW5mb3JtYXRpb24+IG1fbW9kdWxlSW5mb3JtYXRpb247CiAgICAgV3JpdGVCYXJyaWVy
PFN5bWJvbFRhYmxlPiBtX2V4cG9ydFN5bWJvbFRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVCbG9ja3NbV2FzbTo6TnVtYmVyT2ZNZW1vcnlNb2Rl
c107CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT4gbV9jYWxsZWU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggZDFhODAxYzNlYzkxMWExOWYw
NmFiNzlmOThhMzM5MDFmNWM1N2M1MS4uODllZGQ5NDU4YzBkYTVmYWMwOTNhOWYwMzZhMmM0Nzk1
NjhiODg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJXYXNtQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5Lmgi
CisjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEyMSw2ICsxMjIsMTAgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjKQogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJz
dEFyZ3VtZW50LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBh
d2F5IHdpdGggdGhpcyBlbnRpcmUgZnVuY3Rpb24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2lu
dCBnZW5lcmF0ZWQgYnkgQjMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjY0ODYKKyAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byBtYWtlIGxvYWRXYXNtQ29u
dGV4dCBhbmQgc3RvcmVXYXNtQ29udGV4dCBuby1vcCBpZiB3ZSB1c2UgcGlubmVkIHJlZ2lzdGVy
cy4KKyAgICAvLyBIb3dldmVyLCB3ZSB1c2UgVk0ud2FzbUNvbnRleHQgZmllbGQgdG8gcGFzcyBp
bnN0YW5jZSB0byB3YXNtIGZ1bmN0aW9uJ3MgSlMgZ2x1ZSBjb2RlLgorICAgIC8vIFdlIHNob3Vs
ZCBwYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBkaXJlY3RseSB0byB2bUVudHJ5VG9XYXNtLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxODIKICAg
ICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2Fk
V2FzbUNvbnRleHQodm0pOwogICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+
aW5zdGFuY2UoKSk7CiAgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CkBAIC0x
NTMsNiArMTU4LDcgQEAgV2ViQXNzZW1ibHlGdW5jdGlvbiogV2ViQXNzZW1ibHlGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSgpOwog
ICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlGdW5jdGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5RnVuY3Rpb24o
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCB3YXNtRW50cnlwb2ludCwgc2lnbmF0dXJlSW5k
ZXgpOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3Ro
LCBuYW1lLCBpbnN0YW5jZSwganNFbnRyeXBvaW50LCB3YXNtRW50cnlwb2ludCk7CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghZnVuY3Rpb24tPmlzTGFyZ2VBbGxvY2F0aW9uKCksICJXZWJBc3Nl
bWJseUZ1bmN0aW9uIHNob3VsZCBiZSBhbGxvY2F0ZWQgbm90IGluIGxhcmdlIGFsbG9jYXRpb24g
c2luY2UgaXQgaXMgSlNDYWxsZWUuIik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxs
ZWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2Fs
bGVlLmNwcAppbmRleCA0ZTg5MWEwOWEyMGVmYTJmOTg5ODVkOTc5Y2E5ZjVkNGU4MTMwMmFmLi40
YjljODZmZDQ5OWYzZGM5NmE1MjY3OTEyNGYyNDg3YjQ2YjA5MzNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5jcHAK
QEAgLTI5LDIxICsyOSwyMiBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpzX2lu
Zm8gPSB7ICJXZWJBc3NlbWJseVRvSlNDYWxsZWUiLCBudWxscHRyLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSkgfTsKIAotV2ViQXNzZW1ibHlUb0pTQ2FsbGVl
KiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUpCiB7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKiBjYWxsZWUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVRvSlNDYWxsZWU+KHZtLmhlYXApKSBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUodm0sIHN0cnVjdHVyZSk7Ci0gICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgY2FsbGVlLT5maW5pc2hDcmVhdGlvbih2bSwgbW9kdWxlKTsKICAgICByZXR1cm4g
Y2FsbGVlOwogfQogCiBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhXZWJBc3NlbWJseVRvSlNDYWxsZWVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiB9CiAKIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6V2ViQXNzZW1ibHlUb0pTQ2FsbGVl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC01MSwxNSArNTIsMTkgQEAgV2ViQXNz
ZW1ibHlUb0pTQ2FsbGVlOjpXZWJBc3NlbWJseVRvSlNDYWxsZWUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRvSlNDYWxsZWU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3ZvaWQgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgbV9tb2R1bGUuc2V0KHZtLCB0aGlzLCBtb2R1bGUpOwogfQog
Ci12b2lkIFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit2b2lk
IFdlYkFzc2VtYmx5VG9KU0NhbGxlZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogdGhpc09iamVj
dCA9IHN0YXRpY19jYXN0PFdlYkFzc2VtYmx5VG9KU0NhbGxlZSo+KGNlbGwpOwotICAgIHRoaXNP
YmplY3QtPldlYkFzc2VtYmx5VG9KU0NhbGxlZTo6fldlYkFzc2VtYmx5VG9KU0NhbGxlZSgpOwor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlKj4oY2Vs
bCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwor
CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
b0pTQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRv
SlNDYWxsZWUuaAppbmRleCA0OTZjODg1NzZjMzlmNzIzMjcyMzk4YTU2NjVjOTA0Y2M1YzFiMTIz
Li4xOWY0Nzk1YmMyODM0ZjNiODdmYTMwM2ZiYzEwNDZmYTVmYjliODZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaApA
QCAtMzEsMjEgKzMxLDI3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBXZWJBc3NlbWJs
eVRvSlNDYWxsZWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEpTV2ViQXNzZW1ibHlNb2R1bGU7
CisKK2NsYXNzIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOwogCi0gICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZNJiwg
U3RydWN0dXJlKik7CisgICAgc3RhdGljIFdlYkFzc2VtYmx5VG9KU0NhbGxlZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAg
ICBERUNMQVJFX0VYUE9SVF9JTkZPOwotICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisKKyAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQog
CiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNXZWJBc3NlbWJseU1vZHVsZSopOwogICAgIFdlYkFzc2VtYmx5VG9K
U0NhbGxlZShWTSYsIFN0cnVjdHVyZSopOworCisgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlNb2R1bGU+IG1fbW9kdWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>
<flag name="review"
          id="327046"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>