<?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>218143</bug_id>
          
          <creation_ts>2020-10-23 17:51:51 -0700</creation_ts>
          <short_desc>[JSC] Add JITCage support</short_desc>
          <delta_ts>2020-11-11 01:06:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>218583</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1701175</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-23 17:51:51 -0700</bug_when>
    <thetext>[JSC] Add JITCage support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701176</commentid>
    <comment_count>1</comment_count>
      <attachid>412218</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-23 17:53:26 -0700</bug_when>
    <thetext>Created attachment 412218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701186</commentid>
    <comment_count>2</comment_count>
      <attachid>412222</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-23 18:52:23 -0700</bug_when>
    <thetext>Created attachment 412222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701188</commentid>
    <comment_count>3</comment_count>
      <attachid>412223</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-23 19:06:05 -0700</bug_when>
    <thetext>Created attachment 412223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701215</commentid>
    <comment_count>4</comment_count>
      <attachid>412236</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-23 23:24:36 -0700</bug_when>
    <thetext>Created attachment 412236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702162</commentid>
    <comment_count>5</comment_count>
      <attachid>412483</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-27 17:25:42 -0700</bug_when>
    <thetext>Created attachment 412483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702209</commentid>
    <comment_count>6</comment_count>
      <attachid>412500</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-27 19:50:07 -0700</bug_when>
    <thetext>Created attachment 412500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702374</commentid>
    <comment_count>7</comment_count>
      <attachid>412500</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-28 10:43:02 -0700</bug_when>
    <thetext>Comment on attachment 412500
Patch

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1102
&gt; +        size(labelNarrow, labelWide16, labelWide32, macro (gen) gen() end)

This is one of the causes of crashes on ARMv7 and MIPS. When we have global label definition, we might generate a set of instructions that might clobber normal execution. This happens because of `deferNextLabelAction`. One example of broken code on ARMv7 is below:

```
...
&quot;\tadds sp, #8\n&quot;                                        // /home/igalia/clima/webkit/Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1119

  OFFLINE_ASM_LOCAL_LABEL(_offlineasm_commonCallOp__llintOpWithMetadata__llintOpWithReturn__llintOp__commonOp__fn__fn__makeReturn__fn__fn__fn__callHelper__slowPathForCall__callCallSlowPath__564_action__dontUpdateSP)
#if OS(DARWIN)
    &quot;\t.section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers\n&quot;
    &quot;\t.p2align 2\n&quot;
    &quot;\tL&quot; LOCAL_REFERENCE(g_config) &quot;_1110$non_lazy_ptr:\n&quot;
    &quot;\t.indirect_symbol &quot; LOCAL_REFERENCE(g_config) &quot;\n&quot;
    &quot;\t.long 0\n&quot;
    &quot;\t.text\n&quot;
    &quot;\t.align 4\n&quot;
#elif OS(LINUX)
    &quot;\t&quot; LOCAL_LABEL_STRING(offlineasm_arm_got_1110) &quot;:\n&quot;
    &quot;\t.word _GLOBAL_OFFSET_TABLE_-(&quot; LOCAL_LABEL_STRING(offlineasm_arm_got_offset_1110) &quot;+4)\n&quot;
    &quot;\t.word &quot; LOCAL_REFERENCE(g_config) &quot;(GOT)\n&quot;
#endif

OFFLINE_ASM_GLUE_LABEL(js_trampoline_op_call_slow)
    &quot;\tmovw r12, #44698\n&quot;                                   // /home/igalia/clima/webkit/Source/JavaScriptCore/llint/LowLevelInterpreter.asm:259
    &quot;\tblx r0\n&quot;                                             // /home/igalia/clima/webkit/Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1103
...
```

IIUC, this label is not being used on 32-bits. Since we need to declare them to make it compile, I think we might want to place it on unreachable code with a `crash()` call afterwards.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:727
&gt; +    _js_trampoline_%opcodeName%_untag:

Ditto for this definition here.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:754
&gt; +    _js_trampoline_%opcodeName%_tag:

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702511</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-28 15:05:39 -0700</bug_when>
    <thetext>Make sense!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702513</commentid>
    <comment_count>9</comment_count>
      <attachid>412574</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-28 15:06:20 -0700</bug_when>
    <thetext>Created attachment 412574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702579</commentid>
    <comment_count>10</comment_count>
      <attachid>412594</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-28 17:43:17 -0700</bug_when>
    <thetext>Created attachment 412594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702584</commentid>
    <comment_count>11</comment_count>
      <attachid>412597</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-28 18:03:45 -0700</bug_when>
    <thetext>Created attachment 412597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702639</commentid>
    <comment_count>12</comment_count>
      <attachid>412620</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-29 00:11:58 -0700</bug_when>
    <thetext>Created attachment 412620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702642</commentid>
    <comment_count>13</comment_count>
      <attachid>412621</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-29 00:35:13 -0700</bug_when>
    <thetext>Created attachment 412621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703278</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-30 17:52:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/70904668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703595</commentid>
    <comment_count>15</comment_count>
      <attachid>412621</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-02 10:54:28 -0800</bug_when>
    <thetext>Comment on attachment 412621
Patch

ARMv7 EWS is green! 

Regarding MIPS errors, the problem we have is that changes we&apos;ve made on https://trac.webkit.org/changeset/252713/webkit are not valid anymore. Since we now reach `*return_location` through JIT trampolines and those trampolines are emitting `farJump(t9)`, it means that it&apos;s not possible to reach such locations from `ret`. This way, we should aways be considering `t9` as a possible register when emitting `OFFLINE_ASM_CPLOAD`. The diff to fix MIPS failures should be something like this:

```
diff --git a/Source/JavaScriptCore/offlineasm/mips.rb b/Source/JavaScriptCore/offlineasm/mips.rb
index 41b8b9fa7b9d..13736ad9b76f 100644
--- a/Source/JavaScriptCore/offlineasm/mips.rb
+++ b/Source/JavaScriptCore/offlineasm/mips.rb
@@ -681,17 +681,7 @@ def mipsAddPICCode(list)
         | node |
         myList &lt;&lt; node
         if node.is_a? Label
-            # FIXME: [JSC] checkpoint_osr_exit_from_inlined_call_trampoline is a return location
-            # and we should name it properly.
-            # https://bugs.webkit.org/show_bug.cgi?id=208236
-            if node.name =~ /^.*_return_location(?:_(?:wide16|wide32))?$/ or node.name.start_with?(&quot;_checkpoint_osr_exit_from_inlined_call_trampoline&quot;) or node.name.start_with?(&quot;_fuzzer_return_early_from_loop_hint&quot;)
-                # We need to have a special case for return location labels because they are always
-                # reached from a `ret` instruction. In this case, we need to proper reconfigure `$gp`
-                # using `$ra` instead of using `$t9`.
-                myList &lt;&lt; Instruction.new(node.codeOrigin, &quot;pichdr&quot;, [MIPS_RETURN_ADDRESS_REG])
-            else
-                myList &lt;&lt; Instruction.new(node.codeOrigin, &quot;pichdr&quot;, [MIPS_CALL_REG])
-            end
+            myList &lt;&lt; Instruction.new(node.codeOrigin, &quot;pichdr&quot;, [MIPS_CALL_REG])
         end
     }
     myList
```

I&apos;d be very happy if we are able to remove such hack from `offlineasm/mips.rb`, this is bothering me for a very long time. I&apos;m running tests locally to see if we will have any remaining failure, but they are going to take a while until it is finished. Probably EWS would finish first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703639</commentid>
    <comment_count>16</comment_count>
      <attachid>412621</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-11-02 12:31:18 -0800</bug_when>
    <thetext>Comment on attachment 412621
Patch

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

&gt; Source/JavaScriptCore/assembler/JITOperationList.cpp:59
&gt; +        return;

we don&apos;t want to add to the map below?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:134
&gt; +#if ENABLE(JIT_CAGE)

shouldn&apos;t this go around the Options branch?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:166
&gt; +#if ENABLE(JIT_CAGE)

ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:219
&gt; +#if ENABLE(JIT_CAGE)

ditto

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:331
&gt; +#if ENABLE(JIT_CAGE)

ditto

&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:118
&gt; +static MacroAssemblerCodeRef&lt;tag&gt; generateThunkWithJumpToReturnPoint(LLIntCode target, const char *thunkKind)

nit: I&apos;d call this &quot;...ToLLIntReturnPoint&quot;

&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:351
&gt; +    jit.call(GPRInfo::regT3, tag);

where does regT3 come from? Can we give it a name instead of hard coding it everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703640</commentid>
    <comment_count>17</comment_count>
      <attachid>412621</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-11-02 12:32:06 -0800</bug_when>
    <thetext>Comment on attachment 412621
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:133
&gt; +            return bitwise_cast&lt;PtrType&gt;(JITOperationList::instance().contains(bitwise_cast&lt;void*&gt;(ptr)));

why does contains return a pointer? Seems like a weird name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703733</commentid>
    <comment_count>18</comment_count>
      <attachid>412621</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-11-02 15:49:15 -0800</bug_when>
    <thetext>Comment on attachment 412621
Patch

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

&gt; Source/JavaScriptCore/assembler/JITOperationList.cpp:134
&gt; +#endif

nit: can you add `// ENABLE(JIT_OPERATION_VALIDATION)` here?

&gt; Source/JavaScriptCore/runtime/Gate.h:88
&gt; +static constexpr unsigned numberOfGates = 0 JSC_UTILITY_GATES(JSC_COUNT) JSC_JS_GATE_OPCODES(JSC_OPCODE_COUNT) JSC_WASM_GATE_OPCODES(JSC_OPCODE_COUNT);

nit: I think this would read better if expressed as:
static constexpr unsigned numberOfGates = (JSC_UTILITY_GATES(JSC_COUNT)) + (JSC_JS_GATE_OPCODES(JSC_OPCODE_COUNT)) + (JSC_WASM_GATE_OPCODES(JSC_OPCODE_COUNT));

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:133
&gt;&gt; +            return bitwise_cast&lt;PtrType&gt;(JITOperationList::instance().contains(bitwise_cast&lt;void*&gt;(ptr)));
&gt; 
&gt; why does contains return a pointer? Seems like a weird name.

Yes, lets rename contain to map or decode or get (or something like that).  If there&apos;s a need for a bool contains, you can add that as an inline wrapper around this.

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:134
&gt; +#endif

You can remove this line ...

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:136
&gt; +#if ENABLE(JIT_CAGE)

... and remove this line.

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:139
&gt; +#endif

nit: add `// ENABLE(JIT_CAGE)`.

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:159
&gt; +#endif

Ditto: You can remove this line ...

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:161
&gt; +#if ENABLE(JIT_CAGE)

... and this line.

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:167
&gt; +#endif

nit: add `// ENABLE(JIT_CAGE)`.

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:182
&gt; +    return ptrauth_sign_unauthenticated(ptr, ptrauth_key_process_dependent_code, bitwise_cast&lt;PtrTag&gt;(stackPointer));

The `bitwise_cast&lt;PtrTag&gt;` around stackPointer is unnecessary.

&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:201
&gt; +    return __builtin_ptrauth_auth(ptr, ptrauth_key_process_dependent_code, bitwise_cast&lt;PtrTag&gt;(stackPointer));

Ditto: don&apos;t need the `bitwise_cast&lt;PtrTag&gt;` around stackPointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704239</commentid>
    <comment_count>19</comment_count>
      <attachid>412621</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-03 15:25:29 -0800</bug_when>
    <thetext>Comment on attachment 412621
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:134
&gt;&gt; +#if ENABLE(JIT_CAGE)
&gt; 
&gt; shouldn&apos;t this go around the Options branch?

Changed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:166
&gt;&gt; +#if ENABLE(JIT_CAGE)
&gt; 
&gt; ditto

Changed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:219
&gt;&gt; +#if ENABLE(JIT_CAGE)
&gt; 
&gt; ditto

Changed.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:331
&gt;&gt; +#if ENABLE(JIT_CAGE)
&gt; 
&gt; ditto

Changed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:118
&gt;&gt; +static MacroAssemblerCodeRef&lt;tag&gt; generateThunkWithJumpToReturnPoint(LLIntCode target, const char *thunkKind)
&gt; 
&gt; nit: I&apos;d call this &quot;...ToLLIntReturnPoint&quot;

Changed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntThunks.cpp:351
&gt;&gt; +    jit.call(GPRInfo::regT3, tag);
&gt; 
&gt; where does regT3 come from? Can we give it a name instead of hard coding it everywhere?

This is from JSGate&apos;s convention. I think naming it to something rather makes LLInt code difficult to read since LLInt code is very careful about register use. Naming convenient name to LLInt register in LLInt code makes us confused what registers are used and not used.

&gt;&gt; Source/JavaScriptCore/runtime/Gate.h:88
&gt;&gt; +static constexpr unsigned numberOfGates = 0 JSC_UTILITY_GATES(JSC_COUNT) JSC_JS_GATE_OPCODES(JSC_OPCODE_COUNT) JSC_WASM_GATE_OPCODES(JSC_OPCODE_COUNT);
&gt; 
&gt; nit: I think this would read better if expressed as:
&gt; static constexpr unsigned numberOfGates = (JSC_UTILITY_GATES(JSC_COUNT)) + (JSC_JS_GATE_OPCODES(JSC_OPCODE_COUNT)) + (JSC_WASM_GATE_OPCODES(JSC_OPCODE_COUNT));

Sounds good. Changed.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:133
&gt;&gt;&gt; +            return bitwise_cast&lt;PtrType&gt;(JITOperationList::instance().contains(bitwise_cast&lt;void*&gt;(ptr)));
&gt;&gt; 
&gt;&gt; why does contains return a pointer? Seems like a weird name.
&gt; 
&gt; Yes, lets rename contain to map or decode or get (or something like that).  If there&apos;s a need for a bool contains, you can add that as an inline wrapper around this.

OK, changed to map.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:134
&gt;&gt; +#endif
&gt; 
&gt; You can remove this line ...

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:136
&gt;&gt; +#if ENABLE(JIT_CAGE)
&gt; 
&gt; ... and remove this line.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:139
&gt;&gt; +#endif
&gt; 
&gt; nit: add `// ENABLE(JIT_CAGE)`.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:159
&gt;&gt; +#endif
&gt; 
&gt; Ditto: You can remove this line ...

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:161
&gt;&gt; +#if ENABLE(JIT_CAGE)
&gt; 
&gt; ... and this line.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:167
&gt;&gt; +#endif
&gt; 
&gt; nit: add `// ENABLE(JIT_CAGE)`.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:182
&gt;&gt; +    return ptrauth_sign_unauthenticated(ptr, ptrauth_key_process_dependent_code, bitwise_cast&lt;PtrTag&gt;(stackPointer));
&gt; 
&gt; The `bitwise_cast&lt;PtrTag&gt;` around stackPointer is unnecessary.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPtrTag.h:201
&gt;&gt; +    return __builtin_ptrauth_auth(ptr, ptrauth_key_process_dependent_code, bitwise_cast&lt;PtrTag&gt;(stackPointer));
&gt; 
&gt; Ditto: don&apos;t need the `bitwise_cast&lt;PtrTag&gt;` around stackPointer.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704240</commentid>
    <comment_count>20</comment_count>
      <attachid>413114</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-03 15:29:07 -0800</bug_when>
    <thetext>Created attachment 413114
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704306</commentid>
    <comment_count>21</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-03 18:32:02 -0800</bug_when>
    <thetext>Committed r269349: &lt;https://trac.webkit.org/changeset/269349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704325</commentid>
    <comment_count>22</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-03 20:55:49 -0800</bug_when>
    <thetext>Committed r269353: &lt;https://trac.webkit.org/changeset/269353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704450</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 08:53:07 -0800</bug_when>
    <thetext>This broke the cloop build:

In file included from ../../Source/JavaScriptCore/runtime/Options.h:28,
                 from ../../Source/JavaScriptCore/assembler/CPU.h:28,
                 from ../../Source/JavaScriptCore/heap/GCMemoryOperations.h:28,
                 from ../../Source/JavaScriptCore/heap/Heap.h:32,
                 from ../../Source/JavaScriptCore/heap/DeferGC.h:29,
                 from ../../Source/JavaScriptCore/runtime/ConcurrentJSLock.h:28,
                 from ../../Source/JavaScriptCore/bytecode/ArrayProfile.h:28,
                 from ../../Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:29:
../../Source/JavaScriptCore/runtime/JSCConfig.h:108:69: error: static assertion failed
  108 | static_assert(WTF::offsetOfWTFConfigExtension + sizeof(JSC::Config) &lt;= WTF::ConfigSizeToProtect);
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704474</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 09:54:44 -0800</bug_when>
    <thetext>OK, I don&apos;t know what to do here. The values are:

WTF::offsetOfWTFConfigExtension = 1312
sizeof(JSC::Config) = 15544
WTF::ConfigSizeToProtect = 16384

And 1312 + 15544 = 16856, too big. Before this patch, sizeof(JSC::Config) was 13856, way smaller. I&apos;m confused because numberOfGates is 1, so it appears as if we only added one pointer to JSC::Config, not nearly 2 KB. Any ideas what happened here?

The only solution I was able to find is to increase ConfigSizeToProtect, which I understand is unlikely to be accepted. I&apos;m pretty surprised to see the config size exceed 16 KB, but seems that has happened. Anyone have any great ideas? (I also tried disabling ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) in PlatformEnable.h, which could also be a possible solution, but that needs some additional work to make it build.)

diff --git a/Source/WTF/wtf/WTFConfig.h b/Source/WTF/wtf/WTFConfig.h
index 37e6ba961262..db65b1dd3e0a 100644
--- a/Source/WTF/wtf/WTFConfig.h
+++ b/Source/WTF/wtf/WTFConfig.h
@@ -54,7 +54,7 @@ extern &quot;C&quot; WTF_EXPORT_PRIVATE Slot g_config[];
 namespace WTF {
 
 constexpr size_t ConfigAlignment = CeilingOnPageSize;
-constexpr size_t ConfigSizeToProtect = std::max(CeilingOnPageSize, 16 * KB);
+constexpr size_t ConfigSizeToProtect = std::max(CeilingOnPageSize, 32 * KB);
 
 struct Config {
     WTF_EXPORT_PRIVATE static void permanentlyFreeze();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704556</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 12:19:57 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #24)
&gt; OK, I don&apos;t know what to do here. The values are:
&gt; 
&gt; WTF::offsetOfWTFConfigExtension = 1312
&gt; sizeof(JSC::Config) = 15544
&gt; WTF::ConfigSizeToProtect = 16384
&gt; 
&gt; And 1312 + 15544 = 16856, too big. Before this patch, sizeof(JSC::Config)
&gt; was 13856, way smaller. I&apos;m confused because numberOfGates is 1, so it
&gt; appears as if we only added one pointer to JSC::Config, not nearly 2 KB. Any
&gt; ideas what happened here?
&gt; 
&gt; The only solution I was able to find is to increase ConfigSizeToProtect,
&gt; which I understand is unlikely to be accepted. I&apos;m pretty surprised to see
&gt; the config size exceed 16 KB, but seems that has happened. Anyone have any
&gt; great ideas? (I also tried disabling
&gt; ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD) in PlatformEnable.h, which could
&gt; also be a possible solution, but that needs some additional work to make it
&gt; build.)
&gt; 
&gt; diff --git a/Source/WTF/wtf/WTFConfig.h b/Source/WTF/wtf/WTFConfig.h
&gt; index 37e6ba961262..db65b1dd3e0a 100644
&gt; --- a/Source/WTF/wtf/WTFConfig.h
&gt; +++ b/Source/WTF/wtf/WTFConfig.h
&gt; @@ -54,7 +54,7 @@ extern &quot;C&quot; WTF_EXPORT_PRIVATE Slot g_config[];
&gt;  namespace WTF {
&gt;  
&gt;  constexpr size_t ConfigAlignment = CeilingOnPageSize;
&gt; -constexpr size_t ConfigSizeToProtect = std::max(CeilingOnPageSize, 16 * KB);
&gt; +constexpr size_t ConfigSizeToProtect = std::max(CeilingOnPageSize, 32 * KB);
&gt;  
&gt;  struct Config {
&gt;      WTF_EXPORT_PRIVATE static void permanentlyFreeze();


Which build bot is showing failure? I see CLoop bot, and it is working.
This looks very strange since ENABLE(JIT_OPERATION_VALIDATION) is disabled for non JIT. So numberOfGates is 1.
https://build.webkit.org/builders/Apple-Catalina-LLINT-CLoop-BuildAndTest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704575</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 13:05:54 -0800</bug_when>
    <thetext>Committed r269378: &lt;https://trac.webkit.org/changeset/269378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704615</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 14:48:57 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #25)
&gt; Which build bot is showing failure? I see CLoop bot, and it is working.

It&apos;s failing on Red Hat&apos;s internal x86_64 cloop and aarch64 CI. I can also reproduce this locally on x86_64 (that&apos;s how I got specific numbers, and also confirmed numberOfGates == 1). I&apos;m using -DPORT=JSCOnly to make the build fail faster, and -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON -DENABLE_SAMPLING_PROFILER=OFF -DUSE_SYSTEM_MALLOC=ON to emulate aarch64.

&gt; This looks very strange since ENABLE(JIT_OPERATION_VALIDATION) is disabled
&gt; for non JIT. So numberOfGates is 1.
&gt; https://build.webkit.org/builders/Apple-Catalina-LLINT-CLoop-BuildAndTest

Yes, numberOfGates is definitely 1. That is why I&apos;m so confused. I don&apos;t understand how adding one pointer can affect the size of the struct so much. Is there anything else in this commit that might have possibly affected the config size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704619</commentid>
    <comment_count>28</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 14:56:50 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #27)
&gt; Yes, numberOfGates is definitely 1. That is why I&apos;m so confused. I don&apos;t
&gt; understand how adding one pointer can affect the size of the struct so much.
&gt; Is there anything else in this commit that might have possibly affected the
&gt; config size?

Ah, well obvious answer wins here... the new gateMap member is not to blame. I commented it out and changed #if ENABLE(JIT_CAGE) in LLintData.cpp to #if 0 in order to remove the code that uses it. The size of JSCConfig dropped from 15544 bytes to 15536, exactly one pointer, as expected. So it seems something else in this commit asides from that must have somehow affected JSCConfig....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704632</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 15:16:48 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #28)
&gt; (In reply to Michael Catanzaro from comment #27)
&gt; &gt; Yes, numberOfGates is definitely 1. That is why I&apos;m so confused. I don&apos;t
&gt; &gt; understand how adding one pointer can affect the size of the struct so much.
&gt; &gt; Is there anything else in this commit that might have possibly affected the
&gt; &gt; config size?
&gt; 
&gt; Ah, well obvious answer wins here... the new gateMap member is not to blame.
&gt; I commented it out and changed #if ENABLE(JIT_CAGE) in LLintData.cpp to #if
&gt; 0 in order to remove the code that uses it. The size of JSCConfig dropped
&gt; from 15544 bytes to 15536, exactly one pointer, as expected. So it seems
&gt; something else in this commit asides from that must have somehow affected
&gt; JSCConfig....

I built CLoop build with JSCOnly on macOS successfully. So I think this is Linux platform specific problem. Can you take a look into what is happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704637</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 15:39:30 -0800</bug_when>
    <thetext>Yes, I&apos;ve been narrowing this down further. It seems the size of the llint member has increased from 11440 bytes to 13128 bytes. Each of the three Opcode arrays has increased from 3792 bytes to 4352 bytes, and that difference is enough to cause JSCConfig to exceed 16 KB.

Originally, numOpcodeIDs was 272 and numWasmOpcodeIDs was 202. But with this patch, those have increased to 305 and 239, respectively. So it&apos;s just too many new opcodes to fit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704642</commentid>
    <comment_count>31</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 15:52:13 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; Yes, I&apos;ve been narrowing this down further. It seems the size of the llint
&gt; member has increased from 11440 bytes to 13128 bytes. Each of the three
&gt; Opcode arrays has increased from 3792 bytes to 4352 bytes, and that
&gt; difference is enough to cause JSCConfig to exceed 16 KB.
&gt; 
&gt; Originally, numOpcodeIDs was 272 and numWasmOpcodeIDs was 202. But with this
&gt; patch, those have increased to 305 and 239, respectively. So it&apos;s just too
&gt; many new opcodes to fit.

But macOS does not exceed it. Is there any Linux specific hack?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704647</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 16:04:44 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #31)
&gt; (In reply to Michael Catanzaro from comment #30)
&gt; &gt; Yes, I&apos;ve been narrowing this down further. It seems the size of the llint
&gt; &gt; member has increased from 11440 bytes to 13128 bytes. Each of the three
&gt; &gt; Opcode arrays has increased from 3792 bytes to 4352 bytes, and that
&gt; &gt; difference is enough to cause JSCConfig to exceed 16 KB.
&gt; &gt; 
&gt; &gt; Originally, numOpcodeIDs was 272 and numWasmOpcodeIDs was 202. But with this
&gt; &gt; patch, those have increased to 305 and 239, respectively. So it&apos;s just too
&gt; &gt; many new opcodes to fit.
&gt; 
&gt; But macOS does not exceed it. Is there any Linux specific hack?

For now, I&apos;ll increase Config size for OS(LINUX).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704653</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 16:26:56 -0800</bug_when>
    <thetext>CC: Guij and Xan due to Linux-specific change proposal

Is there any Linux-specific hack? I don&apos;t know. Maybe you could check the size of some of these struct members on macOS and see how they compare to Linux? My guess is you&apos;re probably pretty close to exceeding 16 KB too?

Before (x86_64 cloop):

WTF::offsetOfWTFConfigExtension = 1312
Maximum allowable sizeof(JSC::Config) = 16384 - 1312 = 15072
sizeof(JSC::Config) = 13856
sizeof(llint) = 11440
sizeof(opcodeMap), sizeof(opcodeMapWide16), sizeof(opcodeMapWide32) = 3792
numOpcodeIDs = 272
numWasmOpcodeIDs = 202

After (x86_64 cloop):

WTF::offsetOfWTFConfigExtension = 1312
Maximum allowable sizeof(JSC::Config) = 16384 - 1312 = 15072
sizeof(JSC::Config) = 15544
sizeof(llint) = 13128
sizeof(opcodeMap), sizeof(opcodeMapWide16), sizeof(opcodeMapWide32) = 4352
numOpcodeIDs = 305
numWasmOpcodeIDs = 239

After (x86_64, normal build with JIT enabled):

WTF::offsetOfWTFConfigExtension = 1360
Maximum allowable sizeof(JSC::Config) = 16384 - 1360 = 15024
Actual sizeof(JSC::Config) = 14344
sizeof(llint) = 11928
sizeof(opcodeMap) = 3952
numOpcodeIDs = 255
numWasmOpcodeIDs = 239

I&apos;m using this hack I stole from Stack Overflow to print the sizes as template parameters in compiler warnings, printing one at a time because GCC sometimes reports only the first warning:

diff --git a/Source/JavaScriptCore/runtime/JSCConfig.h b/Source/JavaScriptCore/runtime/JSCConfig.h
index 7f96ec52ed21..6d0024f4e201 100644
--- a/Source/JavaScriptCore/runtime/JSCConfig.h
+++ b/Source/JavaScriptCore/runtime/JSCConfig.h
@@ -105,11 +105,25 @@ struct Config {
 
 constexpr size_t alignmentOfJSCConfig = std::alignment_of&lt;JSC::Config&gt;::value;
 
+#define g_jscConfig (*bitwise_cast&lt;JSC::Config*&gt;(&amp;g_wtfConfig.spaceForExtensions))
+
+template &lt;auto val&gt;
+constexpr void static_print() {
+    #if !defined(__GNUC__) || defined(__clang__)
+        int static_print_is_implemented_only_for_gcc = 0;
+    #else
+        int unused = 0;
+    #endif
+};
+
+static void whatever()
+{
+    static_print&lt;sizeof(g_jscConfig.llint)&gt;();
+}
+
 static_assert(WTF::offsetOfWTFConfigExtension + sizeof(JSC::Config) &lt;= WTF::ConfigSizeToProtect);
 static_assert(roundUpToMultipleOf&lt;alignmentOfJSCConfig&gt;(WTF::offsetOfWTFConfigExtension) == WTF::offsetOfWTFConfigExtension);
 
-#define g_jscConfig (*bitwise_cast&lt;JSC::Config*&gt;(&amp;g_wtfConfig.spaceForExtensions))
-
 #else // not ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD)
 
 extern &quot;C&quot; JS_EXPORT_PRIVATE Config g_jscConfig;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704657</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 16:36:34 -0800</bug_when>
    <thetext>Committed r269403: &lt;https://trac.webkit.org/changeset/269403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704660</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 16:40:48 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #33)
&gt; CC: Guij and Xan due to Linux-specific change proposal
&gt; 
&gt; Is there any Linux-specific hack? I don&apos;t know. Maybe you could check the
&gt; size of some of these struct members on macOS and see how they compare to
&gt; Linux? My guess is you&apos;re probably pretty close to exceeding 16 KB too?
&gt; 
&gt; Before (x86_64 cloop):
&gt; 
&gt; WTF::offsetOfWTFConfigExtension = 1312
&gt; Maximum allowable sizeof(JSC::Config) = 16384 - 1312 = 15072
&gt; sizeof(JSC::Config) = 13856
&gt; sizeof(llint) = 11440
&gt; sizeof(opcodeMap), sizeof(opcodeMapWide16), sizeof(opcodeMapWide32) = 3792
&gt; numOpcodeIDs = 272
&gt; numWasmOpcodeIDs = 202
&gt; 
&gt; After (x86_64 cloop):
&gt; 
&gt; WTF::offsetOfWTFConfigExtension = 1312
&gt; Maximum allowable sizeof(JSC::Config) = 16384 - 1312 = 15072
&gt; sizeof(JSC::Config) = 15544
&gt; sizeof(llint) = 13128
&gt; sizeof(opcodeMap), sizeof(opcodeMapWide16), sizeof(opcodeMapWide32) = 4352
&gt; numOpcodeIDs = 305
&gt; numWasmOpcodeIDs = 239
&gt; 
&gt; After (x86_64, normal build with JIT enabled):
&gt; 
&gt; WTF::offsetOfWTFConfigExtension = 1360
&gt; Maximum allowable sizeof(JSC::Config) = 16384 - 1360 = 15024
&gt; Actual sizeof(JSC::Config) = 14344
&gt; sizeof(llint) = 11928
&gt; sizeof(opcodeMap) = 3952
&gt; numOpcodeIDs = 255
&gt; numWasmOpcodeIDs = 239
&gt; 
&gt; I&apos;m using this hack I stole from Stack Overflow to print the sizes as
&gt; template parameters in compiler warnings, printing one at a time because GCC
&gt; sometimes reports only the first warning:
&gt; 
&gt; diff --git a/Source/JavaScriptCore/runtime/JSCConfig.h
&gt; b/Source/JavaScriptCore/runtime/JSCConfig.h
&gt; index 7f96ec52ed21..6d0024f4e201 100644
&gt; --- a/Source/JavaScriptCore/runtime/JSCConfig.h
&gt; +++ b/Source/JavaScriptCore/runtime/JSCConfig.h
&gt; @@ -105,11 +105,25 @@ struct Config {
&gt;  
&gt;  constexpr size_t alignmentOfJSCConfig =
&gt; std::alignment_of&lt;JSC::Config&gt;::value;
&gt;  
&gt; +#define g_jscConfig
&gt; (*bitwise_cast&lt;JSC::Config*&gt;(&amp;g_wtfConfig.spaceForExtensions))
&gt; +
&gt; +template &lt;auto val&gt;
&gt; +constexpr void static_print() {
&gt; +    #if !defined(__GNUC__) || defined(__clang__)
&gt; +        int static_print_is_implemented_only_for_gcc = 0;
&gt; +    #else
&gt; +        int unused = 0;
&gt; +    #endif
&gt; +};
&gt; +
&gt; +static void whatever()
&gt; +{
&gt; +    static_print&lt;sizeof(g_jscConfig.llint)&gt;();
&gt; +}
&gt; +
&gt;  static_assert(WTF::offsetOfWTFConfigExtension + sizeof(JSC::Config) &lt;=
&gt; WTF::ConfigSizeToProtect);
&gt;  static_assert(roundUpToMultipleOf&lt;alignmentOfJSCConfig&gt;(WTF::
&gt; offsetOfWTFConfigExtension) == WTF::offsetOfWTFConfigExtension);
&gt;  
&gt; -#define g_jscConfig
&gt; (*bitwise_cast&lt;JSC::Config*&gt;(&amp;g_wtfConfig.spaceForExtensions))
&gt; -
&gt;  #else // not ENABLE(UNIFIED_AND_FREEZABLE_CONFIG_RECORD)
&gt;  
&gt;  extern &quot;C&quot; JS_EXPORT_PRIVATE Config g_jscConfig;

I think this is because Linux&apos;s sigaction is significantly larger than Darwin&apos;s one, and causing very large offsetOfWTFConfigExtension.
For now, I increased the Config size only for non Darwin builds. And we will look into https://bugs.webkit.org/show_bug.cgi?id=218592.
But https://bugs.webkit.org/show_bug.cgi?id=218592 requires clang / dyld&apos;s __DATA_CONST&apos;s truly read-only-ness support, so we need to wait for the completeness of __DATA_CONST work in clang / dyld side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704664</commentid>
    <comment_count>36</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-11-04 16:44:13 -0800</bug_when>
    <thetext>OK, thanks Yusuke!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704675</commentid>
    <comment_count>37</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-04 17:04:05 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #36)
&gt; OK, thanks Yusuke!

Thank you for looking into it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706379</commentid>
    <comment_count>38</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-11 01:06:37 -0800</bug_when>
    <thetext>Committed r269677: &lt;https://trac.webkit.org/changeset/269677&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412218</attachid>
            <date>2020-10-23 17:53:26 -0700</date>
            <delta_ts>2020-10-23 18:56:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201023175325.patch</filename>
            <type>text/plain</type>
            <size>167953</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjU1YTUwNmQyZmQ5MWIwYmNjMTYwNDA4NjMzZjExMTEzNzM5ZWFlLi5mYTJhYWY4ZjdiYzk2MTNj
ZDA1MzVkOGI4NGVlNmRmNjk2ODM2MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMjAtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6YWRkUG9pbnRlcnMpOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojpw
b3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oOgorICAgICAgICAoSlNDOjpKSVRPcGVyYXRpb25MaXN0
Ojpjb250YWlucyBjb25zdCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcCk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsVHJ1c3RlZFB0cik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjRFOjpjYWxsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02
NEU6OmNhbGxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpm
YXJKdW1wUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFy
SnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpyZXQpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNdjc6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpmYXJKdW1wKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmZhckp1bXApOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxlclJldHVy
blBDKToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxsRnJhbWVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjphZGp1c3RBbmRKdW1wVG9UYXJnZXQpOgorICAgICAgICAqIGRmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uaDoKKyAgICAgICAgKiBqaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQp
OgorICAgICAgICAoSlNDOjppbml0aWFsaXplSklUUGFnZVJlc2VydmF0aW9uKToKKyAgICAgICAg
KiBqaXQvR1BSSW5mby5oOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbE5vZGU6OnVubGluayk6CisgICAg
ICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmVtaXRQb2ludGVy
VmFsaWRhdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAg
ICAgICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldE9w
Y29kZVdpZGUxNik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMzIpOgorICAg
ICAgICAoSlNDOjpMTEludDo6Z2V0Q29kZVB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRX
aWRlMTZDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFdpZGUzMkNvZGVQdHIpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHIpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2lu
dC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeXBvaW50VHJhbXBvbGluZSk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpzZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpM
TEludDo6c2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0UHJvZ3Jh
bUVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0TW9kdWxlUHJvZ3JhbUVudHJ5
cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhp
bnRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAg
ICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAg
ICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvUmV0dXJuUG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxs
RW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVj
a1RodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
Om1vZHVsZVByb2dyYW1FbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5j
dGlvbkVudHJ5VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAg
IChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpTR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmNyZWF0ZVdhc21HYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENh
bGxHYXRlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6Ondhc21PU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpl
eGNlcHRpb25IYW5kbGVyR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZy
b21MTEludEdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6dW50YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTElu
dDo6aml0Q2FnZVB0clRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRU
cmFtcG9saW5lVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRU
cmFtcG9saW5lVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRG
cm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0
dXJuTG9jYXRpb25UaHVuayk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc206CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAq
IG9mZmxpbmVhc20vYXJtNjQucmI6CisgICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJU
YWcuY3BwOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2FsbGVl
VHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6dGFn
SlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToKKyAg
ICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAgICAg
ICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6Ok1h
dGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21TbG93
UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFyci9Z
YXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUpOgor
CiAyMDIwLTEwLTIzICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtKU0NdIEZpeCBhcmd1bWVudCBvcmRlciBmb3IgZG91YmxlIGFuZC9vciBv
cHMgb24gQVJNdjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggOWI4Y2NiYzhiODMxMjQ5N2U1NjIzOGY5YzkyMTU5NTY5NjFlNDVl
ZC4uYTczMWFkYzJmMWUwMWY4NTg2ODY3OWMyMmQ2NDhmYjA3NDBmOTgxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAyMC0xMC0yMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL09TQWxsb2NhdG9yLmg6CisgICAgICAg
IChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KToKKyAgICAgICAgKFdURjo6T1NB
bGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQpOgorICAgICAgICAqIHd0Zi9QYWdlUmVzZXJ2
YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKToKKyAgICAg
ICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJkUGFnZXMpOgorICAgICAg
ICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyk6
CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6UGFnZVJlc2VydmF0aW9uKToKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoK
KyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJXaXRoU3Rh
Y2tQb2ludGVyRm9ySklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvcG9z
aXgvT1NBbGxvY2F0b3JQT1NJWC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNl
cnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdCk6CisgICAgICAgICogd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAgICAgIChX
VEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisKIDIwMjAtMTAtMjEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVcGRhdGUgYW5kIHBhc3Mg
bmV3IFVSTCB3ZWIgcGxhdGZvcm0gdGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA1YjRjNTg0OGM1OGNhNjZiYzY1NmVkYWE4ZmYzYzljZmY3ZWNmMDFmLi4yZWI1NjZk
YjQ2YWRkN2M5ODk2MGNkOGFkZWEwODVkYTllYzczMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC04NjUsNiArODY1LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKICAg
ICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAogICAgIHJ1bnRpbWUvRnV6emVyQWdlbnQuaAor
ICAgIHJ1bnRpbWUvR2F0ZS5oCiAgICAgcnVudGltZS9HZW5lcmljT2Zmc2V0LmgKICAgICBydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzg5OWQyMDlj
Yjc3MWYxMTQ2NWM2ZDQ0MDYwZWNkYjQ2YWQ1ODZmZC4uM2RmZDk4MDNjNmY5OGU0ZDY2YzJmNWY0
NjlmZmQwNjg4YzJlOTU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDks
NiArMTg0OSw3IEBACiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NS
RW50cnlQbGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICov
OyB9OwogCQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyog
Q29uY3VycmVuY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNzExOTkyMjUzRkE4N0Yw
MEJBNjlBMCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZB
MEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50
bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1
MDBBMjM5MEQ5M0IwMDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2Fz
bUdsb2JhbC5oICovOyB9OwpAQCAtNTA1MSw2ICs1MDUyLDcgQEAKIAkJRTM2Qjc2NkYyMkY4RDYx
MTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZD
Qzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3Jt
YXRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGlt
ZUZvcm1hdElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjcwLDYgKzcyNzIsNyBAQAogCQkJCUUzM0E5NDky
MjI1NTMyMjkwMEQ0MkIwNiAvKiBGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFQ0ZBRDM1MjM3MkRB
QTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5jcHAgKi8sCiAJCQkJQ0VDRkFEMzQyMzcy
REFBNzAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8sCisJCQkJRTM3MTE5OTEyNTNG
QTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovLApAQCAtOTY4NSw2ICs5Njg4LDcgQEAKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEg
LyogRnVuY3Rpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzQTk0OTcyMjU1MzIz
MzAwRDQyQjA2IC8qIEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNGQUQzNjIz
NzJEQUQwMDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzNzExOTkyMjUzRkE4N0YwMEJBNjlBMCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
QUFDRTYzRDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCmluZGV4IGIzY2UxNzc5MmQwMTY3ZjRl
YzdiZWNjYTRmZGU4NWM0NWNiYjEwYjAuLmU0ZjI2YWI0NjZlMmZiNTA1NjcwMjg5MmVlM2FiYWM3
NjViNzdkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklU
T3BlcmF0aW9uTGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9K
SVRPcGVyYXRpb25MaXN0LmNwcApAQCAtMjYsNiArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAKKyNpbmNsdWRlICJHYXRlLmgiCisj
aW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogTGF6eU5ldmVyRGVzdHJveWVkPEpJVE9wZXJh
dGlvbkxpc3Q+IGppdE9wZXJhdGlvbkxpc3Q7CkBAIC00NSwxOCArNTMsMjIgQEAgdm9pZCBKSVRP
cGVyYXRpb25MaXN0Ojppbml0aWFsaXplKCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJ
REFUSU9OKQogc3RhdGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50
ZXJzKEhhc2hNYXA8dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9z
dCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0
aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewotICAgIGZvciAoY29uc3Qg
dWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3Vy
cmVudCkgewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRy
SW1wbDxIb3N0RnVuY3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgICAgIH0KKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBKU0NfSklUX0NBR0VEX1BPSU5U
RVJfUkVHSVNUUkFUSU9OKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9yIChjb25z
dCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3Bl
cmF0aW9uczsgKytjdXJyZW50KSB7Ci0gICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2Rl
UHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKLSAgICAgICAgaWYgKGNvZGVQ
dHIpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRh
Z05hdGl2ZUNvZGVQdHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29kZVB0cikpOwotICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKyNlbmRpZgorICAgIGlmIGNvbnN0ZXhwciAo
QVNTRVJUX0VOQUJMRUQpIHsKKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQg
PSBiZWdpbkhvc3Q7IGN1cnJlbnQgIT0gZW5kSG9zdDsgKytjdXJyZW50KSB7CisgICAgICAgICAg
ICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpj
dXJyZW50KSk7CisgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAgICBtYXAu
YWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRyVGFn
Pihjb2RlUHRyKSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1
cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytjdXJy
ZW50KSB7CisgICAgICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7CisgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAg
ICAgICAgICAgICAgICBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8
T3BlcmF0aW9uUHRyVGFnPihjb2RlUHRyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03Myw2
ICs4NSw1NiBAQCB2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFT
Y3JpcHRDb3JlKCkKICNlbmRpZgogfQogCit2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRl
UG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKQoreworI2lmIEVOQUJMRShKSVRfT1BF
UkFUSU9OX1ZBTElEQVRJT04pCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgW10geworCisjZGVmaW5lIExMSU5UX09QKG5hbWUp
IFwKKyAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4obmFtZSkpLCBcCisgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
TExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUpKSwg
XAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG5hbWUsIC4uLikgXAorICAgIExMSU5UX09QKG5hbWUjI19yZXR1cm5fbG9jYXRpb24p
CisKKyAgICAgICAgY29uc3QgdWludHB0cl90IG9wZXJhdGlvbnNbXSA9IHsKKyAgICAgICAgICAg
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSwKKyAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykp
LAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlKSks
CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAg
ICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzKSksCisgICAgICAgICAgICBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4obGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+KGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pKSwKKyAgICAgICAgICAg
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAg
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xp
bmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkp
LAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hp
bnQpKSwKKworICAgICAgICAgICAgTExJTlRfT1Aob3BfY2F0Y2gpCisgICAgICAgICAgICBMTElO
VF9PUChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkKKworICAgICAgICAgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NB
VElPTihvcF9nZXRfYnlfdmFsKQorICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9w
X3B1dF9ieV9pZCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlf
dmFsKQorCisgICAgICAgICAgICBKU0NfSlNfR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NB
VElPTikKKyAgICAgICAgICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9D
QVRJT04pCisgICAgICAgIH07CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAg
ICAgICAgIGFkZFBvaW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVkT3BlcmF0aW9u
cywgbnVsbHB0ciwgbnVsbHB0ciwgb3BlcmF0aW9ucywgb3BlcmF0aW9ucyArIFdURl9BUlJBWV9M
RU5HVEgob3BlcmF0aW9ucykpOworI3VuZGVmIExMSU5UX1JFVFVSTl9MT0NBVElPTgorICAgIH0p
OworI2VuZGlmCit9CisKKwogdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJz
SW5FbWJlZGRlcihjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBl
bmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90
KiBlbmRPcGVyYXRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShiZWdpbkhvc3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAppbmRl
eCAwOTg0OTNmNTBiMmFkMzNjZDFkOTc1NzRhMjgzZTlmZjhiOTY4MzY5Li41YTQwZmY3YzhjZmFk
NmI0MjAzNzczYmQyNGFkNTU3YjRjZTQyNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaApAQCAtMzksMTIgKzM5LDE1IEBAIGNs
YXNzIEpJVE9wZXJhdGlvbkxpc3QgewogCiAgICAgdm9pZCogY29udGFpbnModm9pZCogcG9pbnRl
cikgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKLSAg
ICAgICAgICAgIHJldHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJU
YWcocG9pbnRlcikpOworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisgICAg
ICAgIHJldHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9p
bnRlcikpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIHBvaW50ZXI7CisjZW5kaWYKICAgICB9CiAK
ICAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpOworICAg
IHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKTsK
IAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkVt
YmVkZGVyKGNvbnN0IHVpbnRwdHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhv
c3QsIGNvbnN0IHVpbnRwdHJfdCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVu
ZE9wZXJhdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDQ1YjRiM2I0Njk2ODU1MmQ3ZGFjOTc4OGFm
ZjZjZjBiNDNkYjI2YzYuLjRjOWE5ZWJhNGI2NGY0MWMxMGU5NDRkZjI0MzhhNmZkZWExN2JhNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCkBAIC0zMzkyLDYgKzMzOTIsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAg
ICBtX2Fzc2VtYmxlci5icih0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVz
dGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJyKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgZmFySnVtcChB
ZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywg
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApp
bmRleCAzOWVhMTUxMTQ3NjFhMDBlMDAwNTAzMTAwYmU3NmJkZTQ0YTJmOGM0Li5kMTg3ZDY5MzBl
NmZkOWY2NjgzNzk4ZGEzMzljNWExMzZkMDM0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0zMiw2ICsz
Miw5IEBACiAjaW5jbHVkZSAiQVJNNjRFQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFn
LmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJBUk02NC5oIgorI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlm
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMTAsMjAgKzExMywyOCBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICBzdGF0aWMg
Y29uc3RleHByIFJlZ2lzdGVySUQgSW52YWxpZEdQUiAgPSBzdGF0aWNfY2FzdDxSZWdpc3RlcklE
PigtMSk7CiAKICAgICBlbnVtIGNsYXNzIENhbGxTaWduYXR1cmVUeXBlIHsKLSAgICAgICAgQ0Z1
bmN0aW9uQ2FsbCwKLSAgICAgICAgT3RoZXJDYWxsCisgICAgICAgIEpJVENhbGwsCisgICAgICAg
IE5hdGl2ZUNhbGwsCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSnVtcFNpZ25hdHVyZVR5cGUg
eworICAgICAgICBKSVRKdW1wLAorICAgICAgICBOYXRpdmVKdW1wLAogICAgIH07CiAKICAgICB0
ZW1wbGF0ZTxDYWxsU2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBj
YWxsVHJ1c3RlZFB0cihSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAg
ICAgICBVTlVTRURfUEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gZGF0YVRl
bXBSZWdpc3Rlcik7CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIHBvaW50ZXJMYWJlbCA9IG1fYXNz
ZW1ibGVyLmxhYmVsKCk7CiAgICAgICAgIG1vdmVXaXRoRml4ZWRXaWR0aChUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwog
ICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9
PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJscmFheihkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAo
T3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAg
ICAgSlNDX0pJVF9DQUdFRF9DQUxMKHR5cGUsIGRhdGFUZW1wUmVnaXN0ZXIsIHRhZ0dQUik7Cisj
ZW5kaWYKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYihkYXRh
VGVtcFJlZ2lzdGVyLCB0YWdHUFIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBjYWxsTGFiZWwg
PSBtX2Fzc2VtYmxlci5sYWJlbCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXJMYWJl
bCwgQVJNNjRBc3NlbWJsZXI6OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNhbGxMYWJlbCwg
cG9pbnRlckxhYmVsKSA9PSBSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpOwpAQCAtMTMy
LDUxICsxNDMsNTMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXJBUk02NCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcgdGFn
KQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckFSTTY0OjpjYWxsKHRhZyk7Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1
bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWdu
YXR1cmVUeXBlOjpDRnVuY3Rpb25DYWxsPigpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlw
ZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTY0KHRhZyksIEFSTTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIHJldHVybiBjYWxsVHJ1c3Rl
ZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOwor
ICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2Fs
bD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENh
bGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNh
bGw+KHRhZ0dQUik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJl
VHlwZTo6TmF0aXZlQ2FsbD4odGFnR1BSKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxDYWxsU2ln
bmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsUmVnaXN0ZXIoUmVn
aXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikKICAgICB7
CisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKICAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0
YXJnZXRHUFIpOwogICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAg
ICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJscmFheih0YXJnZXRHUFIpOwotICAgICAgICBlbHNlCisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
ICAgICAgICBKU0NfSklUX0NBR0VEX0NBTEwodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2Vu
ZGlmCisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIodGFyZ2V0
R1BSLCB0YWdHUFIpOwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBD
YWxsOjpOb25lKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3Rl
cklEIHRhcmdldEdQUiwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9Q
dHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJn
ZXRHUFIsIHRhZyk7Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2Fs
bD4odGFyZ2V0R1BSKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYg
dGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02
NFJlZ2lzdGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1
cmVUeXBlOjpPdGhlckNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAg
ICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAg
ICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpKSVRDYWxsPih0YXJn
ZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8
Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6
OmxyKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRh
cmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbFJl
Z2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsK
KyAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2Fs
bD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBj
YWxsKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcg
PT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2Fs
bChhZGRyZXNzLCB0YWcpOwotCisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFn
ICYmIHRhZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBjYWxs
KGRhdGFUZW1wUmVnaXN0ZXIsIHRhZyk7CiAgICAgfQpAQCAtMTk3LDkwICsyMTAsMTI5IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewog
CiAgICAgQUxXQVlTX0lOTElORSBKdW1wIGp1bXAoKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlckFS
TTY0OjpqdW1wKCk7IH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUHRy
VGFnIHRhZykKKyAgICB0ZW1wbGF0ZTxKdW1wU2lnbmF0dXJlVHlwZSB0eXBlPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBmYXJKdW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lz
dGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0
eXBlKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBpZiAo
T3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAg
ICAgSlNDX0pJVF9DQUdFRF9GQVJfSlVNUCh0eXBlLCB0YXJnZXRHUFIsIHRhZ0dQUik7CisjZW5k
aWYKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQ
UiwgdGFnR1BSKTsKKyAgICB9CisKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXRH
UFIsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAg
ICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAodGFyZ2V0LCB0YWcp
OworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJU
YWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6
OkpJVCk7CiAKICAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAg
ICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5
R1BSKTsKLSAgICAgICAgZmFySnVtcCh0YXJnZXQsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlm
IChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAg
ZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRp
dmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxK
dW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwog
ICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0
YWcpCisgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcgdGFnKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXQpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5icmFiKHRhcmdldCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKTsKKyAgICAgICAgbW92ZSh0YXJnZXQsIHRhcmdldEdQUik7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVU
eXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJl
Z2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQ
Uik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0
dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAot
ICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgdm9pZCBm
YXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0g
ICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOworICAgICAgICBBU1NFUlQodGFnR1BS
ICE9IHRhcmdldEdQUik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlw
ZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOworICAgIH0KIAotICAgICAgICBBU1NFUlQo
dGFnICE9IENGdW5jdGlvblB0clRhZyk7CisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVz
cywgUmVnaXN0ZXJJRCB0YWdHUFIpCisgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQ
UiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAg
UmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFu
ZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwogICAg
ICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1t
NjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRH
UFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFy
SnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChC
YXNlSW5kZXggYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewogICAgICAgICBSZWdp
c3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOworICAgICAgICBBU1NFUlQo
dGFnR1BSICE9IHRhcmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgZmFy
SnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CiAgICAgfQogCi0gICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcg
dGFnKQorICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCB0YWdHUFIpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAg
ICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIpOworICAg
ICAgICBsb2FkNjQoQWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOworICAgICAgICBmYXJK
dW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BS
KTsKKyAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAg
IHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgeworICAgICAg
ICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAg
ICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENh
Y2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQo
YWRkcmVzcywgdGFyZ2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0
eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6
SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRK
dW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BS
LCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNz
LCBQdHJUYWcgdGFnKQogICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNT
RVJUKHRhZyAhPSB0YXJnZXRHUFIpOworICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9
IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBs
b2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIHRhZyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklU
KQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1w
Pih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZh
ckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBk
aXZlcnNpdHlHUFIpOwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
Ci0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNz
LCB0YWcpOwotCisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAh
PSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2Fs
bGVyVHlwZTo6SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2
ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsK
ICAgICAgICAgbG9hZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7Ci0gICAgfQotCi0gICAgdm9pZCBmYXJK
dW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKLSAgICB7Ci0gICAg
ICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7Ci0gICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAg
bG9hZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBT
aWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0
aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCByZXQoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfUkVUKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5yZXRhYigpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgK
aW5kZXggMGM3NTk3YmFmNjQyNjY0OTk2MzRhNTk4MDE3YmZiNjRjMzE2YTU2NC4uMmM5YjhmZjgw
OTUxNmViMDc3NDRiZGZmODI2NzdhMGM2YzRmZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTE3MTksNiAr
MTcxOSwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7
CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcp
CisgICAgeworICAgICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IG1fYXNzZW1ibGVyLmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIC8vIEFkZHJl
c3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRv
CiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CmluZGV4IGU2M2FiNDc1NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMuLmFkYWQ1NGNi
MDI2MTdkMTE5NzFiYjI0NWUwYTAzZjRkOGRhZGZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjAwNCw2ICsy
MDA0LDEzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9
CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAgICB7
CisgICAgICAgIG1vdmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgfQorCiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAg
IHsKICAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAy
OGZhZTJlNzJmMjU2NTdlNjEzMzA1ZjIwMDNkZmNiZWE1ZWVjYTlhLi43NmRkYjU3Njk0ZGEyNGY0
YWU4MDViMDQ5M2I0MmE4ZTY0MmYzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yNzUwLDYg
KzI3NTAsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX3Io
dGFyZ2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQs
IFB0clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICB9CisK
ICAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJl
c3MgdG8ganVtcCB0bwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgppbmRleCAyZmVkMTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxLi4wNTdiMzA3
OGMyYjdlODY5MzkzMmI5MDVmMTk0ZDNmNzdiNDY0MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0MDMsNiArMTQwMyw3IEBACiBv
cCA6bGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUKIG9wIDpjaGVj
a3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUKIG9wIDpjaGVja3Bv
aW50X29zcl9leGl0X3RyYW1wb2xpbmUKK29wIDpub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZQog
b3AgOmZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpsbGludF9nZXRfaG9z
dF9jYWxsX3JldHVybl92YWx1ZQogb3AgOmxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24K
QEAgLTE0MTksNiArMTQyMCw0MCBAQAogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3
YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscwogCitvcCA6b3BfY2FsbF9zbG93X3JldHVybl9s
b2NhdGlvbgorb3AgOm9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0
ZXJhdG9yX29wZW5fc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9uZXh0X3Ns
b3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfdGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbgorb3Ag
Om9wX3RhaWxfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50c19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF92YXJh
cmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uCisKK29wIDpqc190cmFtcG9saW5lX29wX2NhbGwKK29wIDpqc190cmFtcG9saW5lX29w
X3RhaWxfY2FsbAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0CitvcCA6anNfdHJhbXBv
bGluZV9vcF9pdGVyYXRvcl9uZXh0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVu
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3Rh
aWxfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdworb3AgOmpz
X3RyYW1wb2xpbmVfb3BfY2FsbF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3Rh
aWxfY2FsbF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3
YXJkX2FyZ3VtZW50c19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJn
c19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdworb3AgOmpzX3RyYW1w
b2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRv
cl9vcGVuX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrX3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVja190YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCitvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzCitvcCA6d2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2Nh
bGxfaW5kaXJlY3Rfbm9fdGxzCisKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKIGJlZ2lu
X3NlY3Rpb24gOldhc20sCkBAIC0xNDMzLDYgKzE0NjgsMTEgQEAKIAogb3AgOnRocm93X2Zyb21f
c2xvd19wYXRoX3RyYW1wb2xpbmUKIAorb3AgOmNhbGxfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2Fs
bF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9yZXR1cm5fbG9jYXRp
b24KK29wIDpjYWxsX2luZGlyZWN0X25vX3Rsc19yZXR1cm5fbG9jYXRpb24KKwogIyBGSVhNRTog
V2FzbSBhbmQgSlMgTExJbnQgc2hvdWxkIHNoYXJlIGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NTYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxNTAzYmYwMzg0N2E2NDg1
MzM5MTEyNzc2OGQ3MDI1MGU4OWE1MzguLmIwNjE1MGZjY2Y0YzdkZGE1ZTUxY2M1ZmFkNjNjZDMx
MWQxODIzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTMyMCw2ICszMjAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2UgbGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNoZWNrcG9pbnRf
b3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9p
bnRfb3NyX2V4aXRfdHJhbXBvbGluZToKKyAgICBjYXNlIG5vcm1hbF9vc3JfZXhpdF90cmFtcG9s
aW5lOgogICAgIGNhc2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoKICAgICBj
YXNlIG9wX2l0ZXJhdG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfaXRlcmF0
b3JfbmV4dF9yZXR1cm5fbG9jYXRpb246CkBAIC0zMzEsOCArMzMyLDQwIEBAIENhcGFiaWxpdHlM
ZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBJCiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbjoKICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlf
dmFsX3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRp
b246CisgICAgY2FzZSBvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9vcGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRl
cmF0b3JfbmV4dF9zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9y
ZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRp
b246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5f
bG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2Nh
dGlvbjoKKyAgICBjYXNlIG9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbjoKICAgICBj
YXNlIHdhc21fZnVuY3Rpb25fcHJvbG9ndWU6CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xv
Z3VlX25vX3RsczoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbDoKKyAgICBjYXNlIGpz
X3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25z
dHJ1Y3Q6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHQ6CisgICAgY2Fz
ZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBqc190cmFtcG9saW5l
X29wX2NhbGxfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX3Nsb3c6
CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF9zbG93OgorICAgIGNhc2UganNf
dHJhbXBvbGluZV9vcF9jYWxsX3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVf
b3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29w
X2NvbnN0cnVjdF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxf
ZXZhbF9zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3c6
CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX29wZW5fc2xvdzoKKyAgICBjYXNl
IGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWc6
CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrX3RhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVja191bnRhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSB3YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190
bHM6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorICAgIGNh
c2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAgICAgICAgIHJl
dHVybiBDYW5ub3RDb21waWxlOwogICAgIH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAppbmRleCBkZDY2NmZhYTgzZTgzNTA5ZTY1YjA3NTU3NjIyZjA4YTk0OTQyMWJkLi5h
YzRiOGM1NzNiODI2YjZhMzBjNjNmZWRiNDI1OGI1YWZiZWI1Nzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBA
IC0xMzgsMjEgKzEzOCwyMSBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgZG9uZUFkanVzdGluZy5s
aW5rKCZqaXQpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2Fs
bGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNv
ZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxs
ZXJDYWxsS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCkKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8T1NSRXhpdFB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCkK
IHsKICAgICBjYWxsZXJJc0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8
IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJw
cmV0ZXJUaHVuazsKIAogICAgIGlmIChjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsK
ICAgICAgICAgaWYgKCFjYWxsZXJJc0xMSW50KQogICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxv
Y2tGb3JDYWxsZXItPm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBM
TEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21f
aW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gTExJbnQ6OmNoZWNrcG9p
bnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgIH0K
IAotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0Owor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0OwogCiAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9j
a0ZvckNhbGxlci0+aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwog
ICAgIGlmIChjYWxsZXJJc0xMSW50KSB7Ci0jZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihu
YW1lKSAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rp
b24uaXNXaWRlMzIoKSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5h
bWUjI19yZXR1cm5fbG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4o
bmFtZSMjX3JldHVybl9sb2NhdGlvbikpKQorI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04o
bmFtZSkgTExJbnQ6OnJldHVybkxvY2F0aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwg
Y2FsbEluc3RydWN0aW9uLndpZHRoKCkpLmNvZGUoKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNh
bGxlckNhbGxLaW5kKSB7CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CkBA
IC0yMDksNyArMjA5LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNh
bGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAgICAgICAg
ICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJ
bmRleChjYWxsQnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxs
TGlua0luZm8pOwogCi0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxs
UmV0dXJuTG9jYXRpb24oKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpOworICAgICAgICAgICAg
anVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0YWdnZWQ8
T1NSRXhpdFB0clRhZz4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIy
NiwxMyArMjI2LDEzIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxs
ZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAg
Ly8gNi4gKEIpIGdldHMgT1NSIGV4aXQuIChCKSBhdHRlbXB0cyB0byBzZWFyY2ggZm9yIFN0cnVj
dHVyZVN0dWJJbmZvIGluIChBKSBmb3IgUHV0QnlJZCAob3JpZ2luYWxseSwgcHV0X2J5X3ZhbCku
IEJ1dCBpdCBkb2VzIG5vdCBleGlzdCBzaW5jZSAoQSkncyBKSVREYXRhIGlzIGNsZWFyZWQgb25j
ZS4KICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IGJhc2VsaW5lQ29kZUJs
b2NrRm9yQ2FsbGVyLT5maW5kQnlWYWxJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgp
KTsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChieVZhbEluZm8pOwotICAgICAgICAg
ICAgICAgIGp1bXBUYXJnZXQgPSBieVZhbEluZm8tPmRvbmVUYXJnZXQucmV0YWdnZWQ8SlNFbnRy
eVB0clRhZz4oKTsKKyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25l
VGFyZ2V0LnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
byA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihj
YWxsQnl0ZWNvZGVJbmRleCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8p
OwotICAgICAgICAgICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24ucmV0YWdn
ZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+
ZG9uZUxvY2F0aW9uLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxs
RnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JD
YWxsZXIgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAg
ICAgYXV0byBjYWxsQnl0ZWNvZGVJbmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXgoKTsK
LSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFy
Z2V0ID0gY2FsbGVyUmV0dXJuUEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRl
Y29kZUluZGV4LCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGp1bXBUYXJnZXQgPSBjYWxs
ZXJSZXR1cm5QQyhiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgY2FsbEJ5dGVjb2RlSW5kZXgs
IHRydWVDYWxsZXJDYWxsS2luZCwgY2FsbGVySXNMTEludCk7CiAKICAgICAgICAgICAgIGlmICh0
cnVlQ2FsbGVyLT5pbmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGppdC5hZGRQ
dHIoCkBAIC00MDIsMTEgKzQwMiwxMSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYg
dm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICBpZiAo
ZXhpdFRvTExJbnQpIHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5tX2NvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVu
dEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVj
b2RlSW5kZXgpLnB0cigpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0
clRhZz4gZGVzdGluYXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0
UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2lu
dCgpKQotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5
UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpOworICAgICAgICAgICAgZGVz
dGluYXRpb24gPSBMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2Rl
KCk7CiAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRD
b2RlUHRyPEpTRW50cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBk
ZXN0aW5hdGlvbiA9IExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgp
OwogCiAgICAgICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlv
biksIEdQUkluZm86OnJlZ1QyKTsKQEAgLTQxNiwyMiArNDE2LDIyIEBAIHZvaWQgYWRqdXN0QW5k
SnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNl
JiBleGl0KQogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29k
ZUJsb2NrRm9yRXhpdC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRh
dGFUYWJsZUdQUik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihjb2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBMTEludDo6UmVn
aXN0ZXJzOjpwYkdQUik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKGJ5dGVjb2RlSW5kZXgub2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwY0dQUik7Ci0g
ICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvZGVCbG9ja0ZvckV4
aXQtPm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7CiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBl
eGl0SW5kZXggPSBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBkZXN0aW5hdGlvbjsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAg
ICBpZiAoZXhpdEluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
TExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFt
cG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JF
eGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChjb2RlQmxvY2tGb3JFeGl0LT5ieXRlY29kZUluZGV4Rm9yRXhpdChleGl0SW5kZXgp
ID09IGV4aXRJbmRleCk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4
aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCk7CisgICAgICAgICAgICBkZXN0aW5hdGlv
biA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCkucmV0YWdn
ZWQ8T1NSRXhpdFB0clRhZz4oKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkZXN0aW5h
dGlvbik7CiAKLSAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPE9TUkV4
aXRQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAganVtcFRhcmdldCA9IGRl
c3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQogCiAgICAgaml0LmFkZFB0cihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihj
b2RlQmxvY2tGb3JFeGl0KSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgQXNzZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaApp
bmRleCAzOTExNGVhNjc3MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkLi5kYmEwZmUzMjJi
Zjg4MWM5NWMyMmRiODUwNjE2MjQyMDRhNmFhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5LDcgKzM5LDYg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVFeGl0Q291bnRz
KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgcmVpZnlJbmxp
bmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBh
ZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFz
ZSYpOwotTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBD
KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2Fs
bEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBj
YWxsZXJJc0xMSW50KTsKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxp
bmVDYWxsRnJhbWUqLCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVl
U2F2ZSk7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGZmOWE4YWZk
MDU5NDVjMjliOTc4YzFmZjNjZjk3YTIyMmJiNGI5MjEuLmQ1NmZjZDhlYTgxOWRjYmFmY2ZjYzEw
NjI0ZjMwZWEzODU0ZjVmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtNDgsNiArNDgsMTggQEAKICNpbmNsdWRlIDxtYWNo
L21hY2guaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgogCisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxz
ZSAvLyBFTkFCTEUoSklUX0NBR0UpCisjaWYgT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VU
QUJMRSBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX1dJVEhfSklUX0NBR0UgTUFQX0pJ
VAorI2Vsc2UgLy8gT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRSAwCisjZGVmaW5l
IE1BUF9FWEVDVVRBQkxFX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9TKERBUldJTikKKyNl
bmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIGV4dGVybiAiQyIgewogICAgIC8qIFJvdXRpbmUg
bWFjaF92bV9yZW1hcCAqLwogI2lmZGVmIG1pZ19leHRlcm5hbApAQCAtMTM5LDggKzE1MSw4IEBA
IHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZChib29sIGVuYWJsZWQpCiAK
ICAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0gMTsKICAgICAgICAgY29uc3RleHByIGlu
dCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQzsKLSAgICAg
ICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfSklU
OwogICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2Vz
OworICAgICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9OIHwgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSA/IE1BUF9FWEVDVVRBQkxFX1dJVEhfSklUX0NBR0UgOiBNQVBfRVhFQ1VU
QUJMRSk7CiAgICAgICAgIHZvaWQqIGFsbG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHBy
b3RlY3Rpb24sIGZsYWdzLCBmZCwgMCk7CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVN
ZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlv
biAhPSBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhh
dmUgYWxsb2NhdGVkIGV4ZWN1dGFibGUgbWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4i
KTsKQEAgLTMyNCw5ICszMzYsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlv
biBpbml0aWFsaXplSklUUGFnZVJlc2VydmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0
aGUgZm9sbG93aW5nIEpJVCBjb2RlIGxvZ2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2Rl
IGlzIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJv
YmxlbSwgd2UgdXNlIGNvbW1pdHRlZCByZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVt
cCBsb2dnaW5nLgogICAgICAgICBpZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAg
ICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3Vh
cmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhF
Q1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBQYWdlUmVz
ZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUs
IE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0
cnVlLCBmYWxzZSk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVz
ZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29k
ZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUpOworICAgICAgICByZXR1cm4g
UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBP
U0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1
ZSwgT3B0aW9uczo6dXNlSklUQ2FnZSgpKTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFn
ZVJlc2VydmF0aW9uID0gdHJ5Q3JlYXRlUGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCA3NGRhZTIyNmY1NDViN2FhYWYz
NDc4NzQ0MzM2NDI3MDAxNWJkMGE0Li5kZWZkNzE4MTEzNjU0MTgxYzUzZTk3OTY5NDVlMzJkZjc0
NTk2YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDYgKzQ2NSwx
MCBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9u
IFdpbmRvd3MpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJn
dW1lbnRHUFIwID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dz
KQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BS
MSA9IFg4NlJlZ2lzdGVyczo6ZWF4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21T
Y3JhdGNoR1BSMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OworI2lmICFPUyhXSU5ET1dTKQorICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMSA9IFg4NlJlZ2lzdGVyczo6cjEw
OworI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSSBiZWxpZXZlIHRoYXQgYWxsIHVzZXMgb2YgdGhp
cyBhcmUgZGVhZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBqdXN0IGNhdXNlcyB0aGUgc2NyYXRjaAog
ICAgIC8vIHJlZ2lzdGVyIGFsbG9jYXRvciB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcmVnaXN0ZXIg
YW5kIHBvdGVudGlhbGx5IHNwaWxsIHRoaW5ncy4gSXQgd291bGQgYmUgYmV0dGVyCkBAIC02NTQs
NiArNjU4LDggQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gQVJNNjRSZWdpc3RlcnM6Ong4OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IEFSTTY0
UmVnaXN0ZXJzOjp4OTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYXRjaHBvaW50U2Ny
YXRjaFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMDsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBBUk02NFJlZ2lzdGVyczo6eDk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIxID0gQVJNNjRSZWdpc3RlcnM6OngxMDsK
IAogICAgIC8vIEdQUlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1hY2hpbmUgcmVnaXN0ZXIg
bnVtYmVycyBjYW4KICAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGluZGljZXMgaW50byB0aGUg
R1BSIFJlZ2lzdGVyQmFuay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMThlNWZmZWU5Y2EzOTNiNmU5
ZmNjMTQ4MGUwNzI3NTBjNDUyOGZkNS4uYzQ1MzQ2ZTkwNGE5ZDEzN2Q3OTZkZjFmNTFjNjhkOTdm
NDBlYjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUG9seW1vcnBoaWND
YWxsTm9kZTo6flBvbHltb3JwaGljQ2FsbE5vZGUoKQogdm9pZCBQb2x5bW9ycGhpY0NhbGxOb2Rl
Ojp1bmxpbmsoVk0mIHZtKQogewogICAgIGlmIChtX2NhbGxMaW5rSW5mbykgewotICAgICAgICBk
YXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlua2luZyBwb2x5bW9y
cGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKSwgIiwg
IiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSk7CisgICAgICAgIGRhdGFMb2dMbklmKE9w
dGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpLCAiVW5saW5raW5nIHBvbHltb3JwaGljIGNhbGwgYXQg
IiwgbV9jYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAiLCBiYyMiLCBtX2NhbGxM
aW5rSW5mby0+Y29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSk7CiAgICAgICAgIG1fY2FsbExp
bmtJbmZvLT51bmxpbmsodm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDcxZGQ5ODAyOGY0N2U5OTdlNTI1MzAwYjdjMGQ2
YWFiOWNiZjJhODMuLjM2MjcyNTUxNGMxMGM4YTkyMmQ1ZjAzMjA1ZmM5MzIzZDBlNTdiYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKQEAgLTQ0
LDEzICs0NCwxNSBAQCBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZhbGlkYXRpb24oQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBlCiB7CiAgICAgaWYgKCFBU1NFUlRf
RU5BQkxFRCkKICAgICAgICAgcmV0dXJuOwotICAgIENDYWxsSGVscGVyczo6SnVtcCBpc05vblpl
cm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIp
OwotICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRlcik7Ci0gICAgaXNOb25a
ZXJvLmxpbmsoJmppdCk7Ci0gICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7Ci0gICAgaml0
LnVudGFnUHRyKHRhZywgcG9pbnRlckdQUik7Ci0gICAgaml0LmxvYWQ4KHBvaW50ZXJHUFIsIHBv
aW50ZXJHUFIpOwotICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGlzTm9u
WmVybyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgcG9pbnRlckdQ
Uik7CisgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRlcik7CisgICAg
ICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOworICAgICAgICBqaXQucHVzaFRvU2F2ZShwb2ludGVy
R1BSKTsKKyAgICAgICAgaml0LnVudGFnUHRyKHRhZywgcG9pbnRlckdQUik7CisgICAgICAgIGpp
dC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKKyAgICAgICAgaml0LnBvcFRvUmVzdG9y
ZShwb2ludGVyR1BSKTsKKyAgICB9CiB9CiAKIC8vIFdlIHdpbGwganVtcCBoZXJlIGlmIHRoZSBK
SVQgY29kZSB0cmllcyB0byBtYWtlIGEgY2FsbCwgYnV0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBiZmE0ZjNiYzhlZTJiODlmNDFiOWNiOTg2MGY2
ZjNiM2NjODFlNTIzLi5iMDUxZDdiODM2YzFkYTZkOGNmMDQxNTgzMTg3YzA5YjRiM2RjNDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMzAsMTIgKzMw
LDEzIEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAj
aW5jbHVkZSAiTExJbnRDTG9vcC5oIgorI2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKKyNpbmNs
dWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIldyaXRl
QmFycmllci5oIgogCiAjZGVmaW5lIFNUQVRJQ19BU1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChj
b25kLCAiTExJbnQgYXNzdW1lcyAiICNjb25kKQogCi0KIG5hbWVzcGFjZSBKU0MgewogCiBuYW1l
c3BhY2UgTExJbnQgewpAQCAtNDksMTIgKzUwLDIyIEBAIGV4dGVybiAiQyIgdm9pZCB3YXNtX2Vu
dHJ5KHZvaWQqLCB2b2lkKiwgdm9pZCopOwogCiAjZW5kaWYgLy8gIUVOQUJMRShDX0xPT1ApCiAK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvSmF2YVNjcmlw
dFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvTmF0aXZlVHJhbXBv
bGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lKHZv
aWQpOworZXh0ZXJuICJDIiB2b2lkIHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZSh2
b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSh2b2lkKTsK
K2V4dGVybiAiQyIgdm9pZCByZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lKHZvaWQpOworI2VuZGlm
CisKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7CiAjaWYgRU5BQkxFKENfTE9PUCkKICAgICBDTG9vcDo6
aW5pdGlhbGl6ZSgpOwogCiAjZWxzZSAvLyAhRU5BQkxFKENfTE9PUCkKKwogICAgIGxsaW50X2Vu
dHJ5KCZnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXAsICZnX2pzY0NvbmZpZy5sbGludC5vcGNv
ZGVNYXBXaWRlMTYsICZnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMzIpOwogCiAjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtNzIsNiArODMsMTMyIEBAIHZvaWQgaW5pdGlhbGl6ZSgp
CiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmV4Y2VwdGlvbkluc3RydWN0aW9uc1tpXSA9IGxs
aW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAgICAgIGdfanNjQ29uZmln
LmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSB3YXNtX3Rocm93X2Zyb21fc2xv
d19wYXRoX3RyYW1wb2xpbmU7CiAgICAgfQorCisgICAgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxh
dGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmVGb3JMTEludCgpOworCisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCisgICAgICAgIGdfanNjQ29uZmln
LmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmppdENhZ2VQdHIpXSA9
IGppdENhZ2VQdHJUaHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworCisjZGVmaW5l
IElOSVRJQUxJWkVfSlNfR0FURShuYW1lLCB0YWcpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPj4gY29kZVJlZjg7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjE2
OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYzMjsgXAorICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUKCkpIHsgXAorICAgICAgICAgICAgY29kZVJlZjguY29uc3RydWN0KGNyZWF0
ZUpTR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRp
b25QdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1l
IyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJl
ZjE2LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
ICJfd2lkZTE2IikpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KGNyZWF0ZUpT
R2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25Q
dHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihu
YW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMzIiKSk7IFwKKyAgICAg
ICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgY29kZVJlZjguY29uc3RydWN0KExMSW50OjpnZXRD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUpKTsgXAor
ICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAg
ICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoTExJbnQ6OmdldFdpZGUzMkNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgIH0gXAorICAg
ICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRl
OjpuYW1lKV0gPSBjb2RlUmVmOC5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAor
ICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihH
YXRlOjpuYW1lIyNfd2lkZTE2KV0gPSBjb2RlUmVmMTYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUzMildID0gY29kZVJlZjMyLmdldCgpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgfSB3aGlsZSAoMCk7CisKKyAgICBKU0NfSlNf
R0FURV9PUENPREVTKElOSVRJQUxJWkVfSlNfR0FURSkKKworI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKKworI2RlZmluZSBJTklUSUFMSVpFX1dBU01fR0FURShuYW1lLCB0YWcpIFwKKyAgICBkbyB7
IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjg7IFwKKyAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPj4gY29kZVJlZjE2OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYzMjsgXAor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsgXAorICAgICAgICAgICAgY29kZVJlZjgu
Y29uc3RydWN0KGNyZWF0ZVdhc21HYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rp
b25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSkpOyBcCisg
ICAgICAgICAgICBjb2RlUmVmMTYuY29uc3RydWN0KGNyZWF0ZVdhc21HYXRlVGh1bmsocmV0YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6Omdl
dFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9j
YXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAgY29kZVJlZjMy
LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0
aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUg
Il93aWRlMzIiKSk7IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgY29kZVJlZjgu
Y29uc3RydWN0KExMSW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4od2FzbV90
cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMTYuY29uc3RydWN0KExM
SW50OjpnZXRXaWRlMTZDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4od2FzbV90cmFtcG9s
aW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50Ojpn
ZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4od2FzbV90cmFtcG9saW5lXyMj
bmFtZSkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFw
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lKV0gPSBjb2RlUmVmOC5nZXQoKS5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRl
TWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lkZTE2KV0gPSBjb2RlUmVm
MTYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25m
aWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUz
MildID0gY29kZVJlZjMyLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAg
fSB3aGlsZSAoMCk7CisKKyAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMoSU5JVElBTElaRV9XQVNN
X0dBVEUpCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyAgICB7CisgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkK
KyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZUpTR2F0ZVRodW5rKHJldGFnQ29k
ZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KCZ2bUVudHJ5VG9K
YXZhU2NyaXB0R2F0ZUFmdGVyKSwgSlNFbnRyeVB0clRhZywgInZtRW50cnlUb0phdmFTY3JpcHQi
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0
ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRh
ZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUp
KSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0KV0gPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+
IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGNyZWF0ZUpTR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1
bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KHZtRW50cnlUb05hdGl2ZUdhdGVBZnRlciks
IEhvc3RGdW5jdGlvblB0clRhZywgInZtRW50cnlUb05hdGl2ZSIpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KCZ2bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25m
aWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvTmF0
aXZlKV0gPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0K
KyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRp
b25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZVRhaWxD
YWxsR2F0ZShKU0VudHJ5UHRyVGFnKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8
dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdGFpbENhbGxK
U0VudHJ5VHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OnRhaWxDYWxsSlNFbnRyeVB0clRhZyldPSBjb2Rl
UmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICB7CisgICAg
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQo
KSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZVRhaWxDYWxsR2F0ZShKU0Vu
dHJ5U2xvd1BhdGhQdHJUYWcpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVJlZi5j
b25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lk
KiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZ0YWlsQ2FsbEpTRW50
cnlTbG93UGF0aFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRl
TWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWlsQ2FsbEpTRW50cnlTbG93UGF0aFB0
clRhZyldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9
CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChleGNlcHRpb25I
YW5kbGVyR2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQq
LCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJmV4Y2VwdGlvbkhhbmRs
ZXJUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6ZXhjZXB0aW9uSGFuZGxlcildID0gY29kZVJlZi5nZXQo
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChyZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnPigmcmV0dXJuRnJvbUxMSW50VHJhbXBvbGluZSkpKSk7CisgICAg
ICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6
OnJldHVybkZyb21MTEludCldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsKKyAgICAgICAgZ19q
c2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bG9vcE9T
UkVudHJ5KV0gPSBsb29wT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oR2F0ZTo6ZW50cnlPU1JFbnRyeSldID0gZW50cnlPU1JFbnRyeUdhdGVUaHVuaygpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRl
TWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp3YXNtT1NSRW50cnkpXSA9IHdhc21PU1JF
bnRyeUdhdGVUaHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKworI2Rl
ZmluZSBJTklUSUFMSVpFX1RBR19BTkRfVU5UQUdfVEhVTktTKG5hbWUpIFwKKyAgICBkbyB7IFwK
KyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdGFnQ29kZVJlZjsgXAorICAgICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+PiB1bnRhZ0NvZGVSZWY7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwK
KyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KHRhZ0dhdGVUaHVuayhyZXRhZ0NvZGVQ
dHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihuYW1lIyNUYWdHYXRl
QWZ0ZXIpKSk7IFwKKyAgICAgICAgICAgIHVudGFnQ29kZVJlZi5jb25zdHJ1Y3QodW50YWdHYXRl
VGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRh
Zz4obmFtZSMjVW50YWdHYXRlQWZ0ZXIpKSk7IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAg
ICAgICAgdGFnQ29kZVJlZi5jb25zdHJ1Y3QoTExJbnQ6OmdldENvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPihqc190cmFtcG9saW5lXyMjbmFtZSMjX3RhZykpOyBcCisgICAgICAgICAgICB1
bnRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUjI191bnRhZykpOyBcCisgICAgICAgIH0gXAorICAg
ICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRl
OjpuYW1lIyNUYWcpXSA9IHRhZ0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oR2F0ZTo6bmFtZSMjVW50YWcpXSA9IHVudGFnQ29kZVJlZi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSU5JVElBTElaRV9U
QUdfQU5EX1VOVEFHX1RIVU5LUyhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7
CisgICAgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RIVU5LUyhsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrKTsKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCiAjZW5k
aWYgLy8gRU5BQkxFKENfTE9PUCkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCmluZGV4IGNiNDQ1ZjVlOTJjZTUyNjRlMjczNjU5Y2QwODcwNTQ2M2UzZGMwN2QuLjA1
YzAyMWExODgyMGY1OTMxNzllNDU2YjBkZjRlMzFmZWEyODE5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTIwNCw2ICsyMDQsOTMgQEAgQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyKE9wY29kZUlEIG9wY29kZUlEKQog
I2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK2lubGluZSBPcGNvZGUgZ2V0
T3Bjb2RlKFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENP
REVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBbbnVtT3Bjb2RlSURz
ICsgaWRdOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlPihpZCk7CisjZW5k
aWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNvZGVXaWRlMTYoV2FzbU9wY29kZUlEIGlkKQor
eworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29u
ZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUxNltudW1PcGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorfQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZVdpZGUzMihXYXNtT3Bjb2RlSUQgaWQp
Cit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2ND
b25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTMyW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGlkKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjx0YWc+IGdldENvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQorewor
ICAgIHZvaWQqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGUob3Bj
b2RlSUQpKTsKKyAgICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+
KGFkZHJlc3MpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRl
RnJvbUV4ZWN1dGFibGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRXaWRlMTZDb2Rl
UHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlV2lkZTE2KG9wY29kZUlEKSk7CisgICAgYWRkcmVz
cyA9IHJldGFnQ29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhhZGRyZXNzKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gZ2V0V2lkZTMyQ29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bj
b2RlSUQpCit7CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdl
dE9wY29kZVdpZGUzMihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0
ZWNvZGVQdHJUYWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjx0YWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3Rl
bXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRDb2RlRnVuY3Rp
b25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4ob3Bjb2Rl
SUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxMTEludENvZGU+KGdldENvZGVQdHI8dGFnPihvcGNvZGVJRCkudGVtcGxhdGUgZXhlY3V0
YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZ
U19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUxNkNvZGVGdW5jdGlvblB0cihXYXNtT3Bjb2RlSUQg
b3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJRCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29k
ZT4oZ2V0V2lkZTE2Q29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1wbGF0ZSBleGVjdXRhYmxlQWRk
cmVzcygpKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJ
RCkKK3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExM
SW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVz
cygpKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRX
aWRlMzJDb2RlUHRyPHRhZz4ob3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkp
OworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZWxzZQogQUxXQVlTX0lOTElORSB2b2lkKiBnZXRD
b2RlUHRyKE9wY29kZUlEIGlkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA2ZDZkMjQ5ZmE2MzRmZDdkZTU2YjljMTVlMzg0MWEz
ZjJiOWYxMWU4Li5kN2MyNmQ1MTdiZDk3MWEwNzMyNGUwNjY1YzRiZmFjMzA2NGViMTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAt
MzUsNiArMzUsMjIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMiIHZvaWQganNUcmFtcG9saW5lUHJvZ3JhbVBy
b2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Q
cm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWUo
dm9pZCk7CitleHRlcm4gIkMiIHZvaWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9n
dWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1
Y3RQcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1RyYW1wb2xpbmVGdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQganNUcmFtcG9s
aW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUodm9pZCk7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGU+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IGVudHJ5cG9pbnRUcmFtcG9saW5lKFB0clR5cGUgYWRkcmVzcykKK3sKKyAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+OjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+OjpjcmVhdGVG
cm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcs
IEpTRW50cnlQdHJUYWc+KGFkZHJlc3MpKSk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgc2V0
RnVuY3Rpb25FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCA9IGNvZGVCbG9jay0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CkBA
IC03MiwxNCArODgsMjIgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsK
ICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAg
aml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKSwgZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFt
cG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKS5jb2RlKCksIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2Vs
c2UKICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShnZXRDb2RlUmVmPEpT
RW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSwgZ2V0Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayksIEpJ
VFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OworI2VuZGlmCiAgICAgICAgIH0pOwogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFr
ZVJlZigqaml0Q29kZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0YXRpYyBEaXJlY3RKSVRD
b2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAg
ICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZW50cnlwb2ludFRyYW1w
b2xpbmUoanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZSksIGVudHJ5cG9p
bnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1By
b2xvZ3VlKS5jb2RlKCksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOworI2Vsc2UKICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGly
ZWN0SklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUpLCBnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsK
ICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9
CkBAIC0xMDMsNyArMTI3LDExIEBAIHN0YXRpYyB2b2lkIHNldEV2YWxFbnRyeXBvaW50KENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVKSVRDb2RlKiBqaXRDb2RlOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBqaXRDb2RlID0gbmV3IE5h
dGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9saW5lRXZhbFByb2xvZ3Vl
KSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0g
bmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3By
b2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNp
YywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZW5kaWYKICAgICB9KTsKICAg
ICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwogfQpAQCAtMTI2LDcg
KzE1NCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2ludChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKICAgICBzdGF0aWMgTmF0aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
eworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRD
b2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSksIEpJ
VFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6
OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBO
YXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMs
IEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE0OSw3ICsx
ODEsMTEgQEAgc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5cG9pbnQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENvZGUqIGppdENvZGU7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZl
SklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJv
bG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2lj
LCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgIGppdENv
ZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmlu
c2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZW5k
aWYKICAgICB9KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkp
OwogfQpAQCAtMTYzLDYgKzE5OSwxNSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUVudHJ5cG9pbnQoKQogICAgIHJldHVybiBnZXRD
b2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVlKTsK
IH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVh
cmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAo
T3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgIHJldHVybiBmdXp6ZXJSZXR1cm5FYXJseUZyb21M
b29wSGludFRodW5rKCk7CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICByZXR1cm4gZ2V0Q29k
ZVJlZjxKU0VudHJ5UHRyVGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsK
K30KKwogdm9pZCBzZXRFbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIHN3
aXRjaCAoY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3
NjFjODQ4NDFkYmZkOC4uMTVhMjM4NjBiNGYxM2E2NTUzMmRlODhmNzk5N2Y0Y2U0MDJlZjZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAt
NDEsNSArNDEsNiBAQCB2b2lkIHNldEVudHJ5cG9pbnQoQ29kZUJsb2NrKik7CiB1bnNpZ25lZCBm
cmFtZVJlZ2lzdGVyQ291bnRGb3IoQ29kZUJsb2NrKik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2ludCgpOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxv
b3BIaW50RW50cnlwb2ludCgpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGJiYTEy
MGE3YzU1ODU4ZjM3N2U3OWJiNDI5ZjU5ZDc5OGUxNjM0ZGEuLjliMTJmODQwMGZkY2M1N2IzMmMz
NzRhYTc2MDFlZDc5ZGI2Y2RiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGlubGluZSBKU1ZhbHVlIGdl
dE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7
IHJldHVyCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1Q
TChjYWxsRnJhbWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwKLSAgICBMTElOVF9SRVRV
Uk5fVFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgU2xvd1BhdGhQdHJUYWc+KGNhbGxU
YXJnZXQpKSwgKGNhbGxGcmFtZSkpCisgICAgTExJTlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRy
PGNhbGxUYXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0clRhZz4oY2FsbFRhcmdldCkpLCAoY2Fs
bEZyYW1lKSkKIAogI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGdsb2JhbE9iamVjdCwgZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBfX2N0X2dsb2JhbE9iamVjdCA9IChnbG9iYWxPYmplY3QpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC00NjcsNyArNDY3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0wobG9vcF9vc3IpCiAgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bS5nZXRMb29wSGludEV4ZWN1
dGlvbkNvdW50ZXIocGMpOwogICAgICAgICAqcHRyICs9IGNvZGVCbG9jay0+bGxpbnRFeGVjdXRl
Q291bnRlcigpLm1fYWN0aXZlVGhyZXNob2xkOwogICAgICAgICBpZiAoKnB0ciA+PSBPcHRpb25z
OjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSkKLSAgICAgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVy
bl9lYXJseV9mcm9tX2xvb3BfaGludCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50
b3BPZkZyYW1lKCkpOworICAgICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhMTEludDo6ZnV6emVy
UmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKICAgICB9CiAgICAgCiAgICAgCkBAIC0x
OTQ1LDcgKzE5NDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0
X3ZhcmFyZ3MpCiAgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cDxPcENvbnN0cnVjdFZhcmFyZ3M+KGNh
bGxGcmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3QsIFNldEFyZ3VtZW50c1dpdGg6Ok9iamVjdCk7
CiB9CiAKLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBj
b21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBj
LCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCiB7CiAg
ICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxP
cENhbGxFdmFsPigpOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24KICAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNv
ZGUubV9hcmdjKTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJhbWUoY2FsbEZyYW1lKTsK
ICAgICBjYWxsZWVGcmFtZS0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlKSkgPSBjYWxsZWVBc1ZhbHVlOwotICAgIGNhbGxlZUZyYW1lLT5zZXRSZXR1cm5Q
QyhyZXR1cm5Qb2ludC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0
UmV0dXJuUEMocmV0dXJuUG9pbnQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIGNh
bGxlZUZyYW1lLT5zZXRDb2RlQmxvY2sobnVsbHB0cik7CiAgICAgY2FsbEZyYW1lLT5zZXRDdXJy
ZW50VlBDKHBjKTsKICAgICAKQEAgLTE5NzAsMTcgKzE5NzAsMTcgQEAgaW5saW5lIFNsb3dQYXRo
UmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5z
dHJ1Y3Rpb24KICAgICAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwp
CiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRD
b2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAg
cmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJu
UG9pbnRUaHVuayhPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxF
dmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFs
KGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhPcGNvZGVTaXpl
OjpXaWRlMTYpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZh
bF93aWRlMzIpCiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExM
SW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50
OjpnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhPcGNvZGVTaXplOjpXaWRlMzIpKTsKIH0KIAogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmNhdCkKQEAgLTIyNjUsOCArMjI2NSw3IEBA
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihUaHJv
d1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrCiAKICAgICBpZiAoT3B0aW9uczo6Zm9yY2VPU1JFeGl0
VG9MTEludCgpIHx8IGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmspIHsKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG5leHRQQyA9IHBjLm5leHQoKS5w
dHIoKTsKLSAgICAgICAgYXV0byBuZXh0Qnl0ZWNvZGUgPSBMTEludDo6Z2V0Q29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPigqcGMubmV4dCgpLnB0cigpKTsKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dChuZXh0UEMsIG5leHRCeXRlY29kZS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRo
dW5rKCkucmV0YWdnZWRDb2RlPEpTRW50cnlQdHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwCmluZGV4IDc4NTM2MGY0ODc2MDcxYWZkNjRhZDFjZmUxYmE4YmVhODM4
YWIzZDIuLjZlOTg4YTM0NjYwYWVkMGMyOWUxMWM0MGFjNGIwOGQ3N2Y2Y2UyMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApAQCAtNDAsNiArNDAsMjYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogCisjaWYgRU5BQkxFKEpJVF9P
UEVSQVRJT05fVkFMSURBVElPTikKKyNkZWZpbmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVS
QVRJT04obmFtZSkgXAorICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRf
IyNuYW1lLCBuYW1lKQorCisjZGVmaW5lIEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
X1dJVEhfREVDTEFSRShuYW1lKSBcCisgICAgZXh0ZXJuICJDIiB2b2lkIG5hbWUodm9pZCk7IFwK
KyAgICBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0XyMjbmFtZSwgbmFtZSkK
KworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdCk7
CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9OYXRpdmUpOworSlND
X0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04oaml0Q2FnZVB0ckdhdGVBZnRlcik7CitKU0Nf
QU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVy
KTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb05hdGl2ZUdhdGVB
ZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9K
SVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFm
dGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJ
TlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
VGFnR2F0ZUFmdGVyKTsKKworI2VuZGlmCisKIG5hbWVzcGFjZSBMTEludCB7CiAKIC8vIFRoZXNl
IHRodW5rcyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgbmVhckNhbGwgdXNlZCBvbiBKSVRlZCBj
b2RlLgpAQCAtNTIsNyArNzIsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwogewogICAgIEpT
SW50ZXJmYWNlSklUIGppdDsKIAotICAgIGFzc2VydElzVGFnZ2VkV2l0aDxKU0VudHJ5UHRyVGFn
Pih0YXJnZXQpOworICAgIGFzc2VydElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdl
dCk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3Rl
cklEIHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0
Y2hHUFJzWzBdOwpAQCAtNjAsMTYgKzgwLDUzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zCiAg
ICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6cmVn
VDA7CiAjZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0
YXJnZXQpLCBzY3JhdGNoKTsKLSAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBKU0VudHJ5UHRyVGFn
KTsKKyAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwg
dGh1bmtLaW5kKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAi
TExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgog
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7Ci0gICAgcmV0dXJu
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4K
K3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
b1Byb2xvZ3VlKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQpCit7Cisg
ICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgTExJbnRDb2RlIHRhcmdldCA9IExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCk7CisgICAgYXNzZXJ0
SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKKworI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKyAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdhc206Ondh
c21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CisjZWxzZQorICAg
IENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1Qw
OworI2VuZGlmCisgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBqaXQubW92ZShKU0lu
dGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBzY3JhdGNoKTsKKyAgICBqaXQuZmFy
SnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIGp1bXAgdG8gcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tp
bmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQoTExJbnRDb2RlIHRh
cmdldCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsK
KyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOworICAgIGpp
dC5mYXJKdW1wKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBPcGVyYXRpb25Q
dHJUYWcpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQp
OworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBy
ZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
Pgorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvUmV0dXJuUG9pbnQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDx0YWc+KExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCksIHRodW5r
S2luZCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rKCkKQEAgLTc3LDcgKzEzNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CiAgICAg
fSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC04Nyw3ICsxNDQsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5r
KCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpKTsK
KyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1
ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCAi
ZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsK
IH0KQEAgLTk3LDcgKzE1NCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
LCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFn
PihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjYWxs
IHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBA
IC0xMDcsNyArMTY0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpT
RW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssICJm
dW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMTcsNyArMTc0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsKKyAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxK
U0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsKICAgICB9KTsKICAg
ICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEyNyw3ICsxODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2Rl
UmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9n
cmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
b1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9ncmFt
IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTM3LDcgKzE5NCw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlU
aHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRf
bW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsKKyAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRy
VGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikpOwog
ICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTQ5LDkgKzIwNiw5IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVuaygp
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKICAgICAgICAgaWYgKFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMoKSkK
LSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJ
VFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwi
KSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
b1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVuY3Rp
b24gZm9yIGNhbGwiKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKSVRUaHVua1B0
clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2FsbCIp
KTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTIxNyw3ICsyNzQsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hU
aHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVmOwog
ICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7CisgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4g
Y29kZVJlZjsKICAgICB9CkBAIC0yMjUsNyArMjgyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXpl
KQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPEpT
RW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bf
Y2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2Rl
UmVmOwogICAgIH0KQEAgLTIzMyw3ICsyOTAsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhj
ZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAg
ICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8SlNFbnRy
eVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gzMiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRj
aCksICJvcF9jYXRjaDMyIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7
CiAgICAgfQpAQCAtMjQyLDYgKzI5OSwyODcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQogICAg
IHJldHVybiB7IH07CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayhPcGNvZGVTaXplIHNpemUpCit7CisgICAgc3dpdGNoIChz
aXplKSB7CisgICAgY2FzZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsKKyAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNv
ZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTElu
dDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1
cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQiKSk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRl
MTY6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAg
ICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Q
b2ludDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPE9wZXJh
dGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQxNiIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBjb2RlUmVmOwor
ICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjogeworICAgICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29k
ZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50
OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmlj
X3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDMyIikpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIH0KK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BI
aW50VGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+
KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsICJmdXp6ZXJfcmV0dXJuX2Vhcmx5
X2Zyb21fbG9vcF9oaW50IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBj
b25zdCBjaGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuY2Fs
bChHUFJJbmZvOjpyZWdUMywgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuZmFySnVtcChHUFJJ
bmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsi
LCBuYW1lKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25zdCBj
aGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuY2FsbChHUFJJ
bmZvOjp3YXNtU2NyYXRjaEdQUjAsIHRhZyk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEpOworICAgIGpp
dC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSwgT3BlcmF0aW9uUHRyVGFnKTsKKwor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJl
dHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJM
TEludCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2FsbEdhdGUoUHRyVGFn
IHRhZykKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LnVudGFnUHRyKEdQUklu
Zm86OmFyZ3VtZW50R1BSMiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjpyZWdUMCwgdGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBH
TE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCB0YWlsIGNhbGwgZ2F0ZSB0aHVuayIpOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NSRW50
cnlHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQuZmFySnVtcChHUFJJ
bmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJs
b29wIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JF
bnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC51bnRhZ1JldHVy
bkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBK
U0VudHJ5UHRyVGFnKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZW50cnkgT1NSIGVudHJ5IHRodW5r
IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKKworICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAg
IGppdC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMCwgV2FzbUVudHJ5UHRyVGFnKTsK
KworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnLCAid2FzbSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsK
KworICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMCwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImV4Y2VwdGlvbiBoYW5kbGVyIHRodW5rIikpOwor
ICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKQoreworICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKKworICAgICAgICBqaXQucmV0KCk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInJldHVy
bkZyb21MTEludCB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRodW5r
KHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFS
TTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0LnN0b3JlUHRyKEFSTTY0UmVnaXN0ZXJzOjpsciwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCA4KSk7Cisg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZv
OjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRh
Zyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnLCAidGFnIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKKworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgOCksIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0
LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJl
Z1QzLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQ
UkluZm86OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInVudGFnIHRodW5rIik7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVu
aygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAg
ICBDQ2FsbEhlbHBlcnMgaml0OworICAgICAgICBKU0NfSklUX0NBR0VfQ09NUElMRShqaXQpOwor
ICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAiaml0Q2FnZVB0ciB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gY29kZVJlZjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmso
KQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRh
Zz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsICJub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGlu
ZSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworI2lmIEVOQUJM
RShERkdfSklUKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hlY2tw
b2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9s
aW5lLCAiY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAgIH0pOwor
ICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0
clRhZz4gY2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKQor
eworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9T
UkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4o
Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lLCAiY2hlY2tw
b2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lIHRodW5rIikpOworICAg
IH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NS
RXhpdFB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhPcGNvZGVJRCBvcGNvZGVJRCwgT3Bjb2Rl
U2l6ZSBzaXplKQoreworI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgXAorICAg
IGNhc2UgbmFtZSMjX3JldHVybl9sb2NhdGlvbjogeyBcCisgICAgICAgIHN3aXRjaCAoc2l6ZSkg
eyBcCisgICAgICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7IFwKKyAgICAgICAgICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJU
YWc+PiBjb2RlUmVmOyBcCisgICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsgXAorICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAg
ICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJu
UG9pbnQ8T1NSRXhpdFB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25Q
dHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25hbWUgIl9yZXR1cm5fbG9jYXRpb24g
dGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4gY29kZVJl
ZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsgXAor
ICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiksICAjbmFt
ZSAiX3JldHVybl9sb2NhdGlvbjE2IHRodW5rIikpOyBcCisgICAgICAgICAgICB9KTsgXAorICAg
ICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgT3Bj
b2RlU2l6ZTo6V2lkZTMyOiB7IFwKKyAgICAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOyBcCisgICAg
ICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsgXAorICAgICAgICAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAgICAgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4o
TExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pLCAjbmFtZSAiX3JldHVybl9sb2NhdGlvbjMyIHRodW5rIikpOyBcCisg
ICAgICAgICAgICB9KTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAg
fSBcCisgICAgICAgIH0gXAorICAgICAgICByZXR1cm4geyB9OyBcCisgICAgfQorCisgICAgc3dp
dGNoIChvcGNvZGVJRCkgeworICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKQorICAg
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKQorICAgIExMSU5UX1JFVFVS
Tl9MT0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihv
cF9jb25zdHJ1Y3QpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGxfdmFyYXJnc19z
bG93KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93
KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfaWQpCisgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2dldF9ieV92YWwpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9w
X3B1dF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIExMSW50
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAppbmRleCAwMzY4Y2U5YTJkYTA2MDRmNDM3MjQ1MmVlMTJmODdjNGU2MzhkYjBk
Li40MWVmOTFmOTI2MDI0YjFiMTEyNTQ0YWI0NGZhNzFiMzIwNTBhZDE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNDAsNiArNDAsMjAgQEAgZXh0ZXJu
ICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvTmF0aXZlKHZvaWQqLCBWTSosIFBy
b3RvQ2FsbEZyYW1lKik7CiB9CiAKKyNpZiBDUFUoQVJNNjRFKQorZXh0ZXJuICJDIiB7CisgICAg
dm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQpOworCisgICAgdm9pZCB2bUVudHJ5VG9KYXZh
U2NyaXB0R2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVy
KHZvaWQpOworCisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1Vu
dGFnR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZvaWQpOwor
fQorI2VuZGlmCisKIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9XYXNtKHZvaWQqIGNv
ZGUsIFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIGZyYW1lKQogewogICAgIGF1dG8gY2xvYmJlcml6
ZVZhbGlkYXRvciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKQEAgLTU5LDExICs3MywzMiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVudHJ5VGh1bmsoKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBwcm9ncmFtRW50cnlUaHVuaygpOwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2Vu
ZXJpY1JldHVyblBvaW50VGh1bmsoT3Bjb2RlU2l6ZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpOwogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3dU
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZVVuY2F1Z2h0RXhjZXB0aW9uVGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUpOwogCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBqaXRDYWdlUHRyVGh1bmso
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZUpT
R2F0ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVdhc21HYXRlVGh1bmsodm9pZCosIFB0
clRhZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gY3JlYXRlVGFpbENhbGxHYXRlKFB0clRhZyk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NSRW50cnlHYXRlVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGVudHJ5T1NSRW50cnlHYXRl
VGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHdh
c21PU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4gZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gcmV0dXJuRnJvbUxMSW50R2F0ZVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB1bnRhZ0dhdGVU
aHVuayh2b2lkKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
PiB0YWdHYXRlVGh1bmsodm9pZCopOworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0
clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOworI2lmIEVOQUJMRShERkdfSklU
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0
VHJhbXBvbGluZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4g
Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1cm5Mb2NhdGlvblRodW5rKE9wY29k
ZUlELCBPcGNvZGVTaXplKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5r
KCk7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDllM2NkZTk5MDRj
MTAyYmVlZWY0N2IxNGYzNWZmNjk1MTY5ZmE5N2YuLmQxZTJiODM3MGQ3Y2EyN2NkY2ExZTc1OGEw
Y2FjYzAxZDM3ZDllZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1Niw5ICsyNTYsMTIgQEAgY29uc3QgQXJpdGhQ
cm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkTnVtYmVyTnUKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCiBjb25zdCBKU0VudHJ5UHRyVGFnID0gY29uc3RleHByIEpTRW50cnlQdHJUYWcKIGNvbnN0
IEhvc3RGdW5jdGlvblB0clRhZyA9IGNvbnN0ZXhwciBIb3N0RnVuY3Rpb25QdHJUYWcKK2NvbnN0
IEpTRW50cnlTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
K2NvbnN0IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyA9IGNvbnN0ZXhwciBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcKIGNvbnN0IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcgPSBjb25zdGV4cHIgRXhjZXB0aW9u
SGFuZGxlclB0clRhZworY29uc3QgWWFyckVudHJ5UHRyVGFnID0gY29uc3RleHByIFlhcnJFbnRy
eVB0clRhZwogY29uc3QgTm9QdHJUYWcgPSBjb25zdGV4cHIgTm9QdHJUYWcKLWNvbnN0IFNsb3dQ
YXRoUHRyVGFnID0gY29uc3RleHByIFNsb3dQYXRoUHRyVGFnCisgCiAKICMgU29tZSByZWdpc3Rl
ciBjb252ZW50aW9ucy4KICMgLSBXZSB1c2UgYSBwYWlyIG9mIHJlZ2lzdGVycyB0byByZXByZXNl
bnQgdGhlIFBDOiBvbmUgcmVnaXN0ZXIgZm9yIHRoZQpAQCAtNDE3LDcgKzQyMCw3IEBAIGVuZAog
CiBtYWNybyBjb21tb25PcChsYWJlbCwgcHJvbG9ndWUsIGZuKQogXyVsYWJlbCU6Ci0gICAgcHJv
bG9ndWUoKQorICAgIHByb2xvZ3VlKG5hcnJvdykKICAgICBmbihuYXJyb3cpCiAgICAgaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgYnJlYWsKQEAgLTQzMCw3ICs0MzMsNyBAQCBfJWxhYmVsJToK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODI4MwogaWYgbm90
IENfTE9PUF9XSU4KIF8lbGFiZWwlX3dpZGUxNjoKLSAgICBwcm9sb2d1ZSgpCisgICAgcHJvbG9n
dWUod2lkZTE2KQogICAgIGZuKHdpZGUxNikKICAgICBpZiBBU1NFUlRfRU5BQkxFRAogICAgICAg
ICBicmVhawpAQCAtNDM5LDcgKzQ0Miw3IEBAIF8lbGFiZWwlX3dpZGUxNjoKIGVuZAogCiBfJWxh
YmVsJV93aWRlMzI6Ci0gICAgcHJvbG9ndWUoKQorICAgIHByb2xvZ3VlKHdpZGUzMikKICAgICBm
bih3aWRlMzIpCiAgICAgaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgYnJlYWsKQEAgLTQ0OCw3
ICs0NTEsNyBAQCBfJWxhYmVsJV93aWRlMzI6CiBlbmQKIAogbWFjcm8gb3AobCwgZm4pCi0gICAg
Y29tbW9uT3AobCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKKyAgICBjb21tb25PcChsLCBt
YWNybyAoc2l6ZSkgZW5kLCBtYWNybyAoc2l6ZSkKICAgICAgICAgc2l6ZShmbiwgbWFjcm8oKSBl
bmQsIG1hY3JvKCkgZW5kLCBtYWNybyhnZW4pIGdlbigpIGVuZCkKICAgICBlbmQpCiBlbmQKQEAg
LTEwMjAsMTMgKzEwMjMsMTMgQEAgbWFjcm8gcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgp
CiAgICAgZW5kCiBlbmQKIAotbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorbWFjcm8gdHJhY2VFeGVj
dXRpb24oc2l6ZSkKICAgICBpZiBUUkFDSU5HCiAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
dHJhY2UpCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9w
Y29kZU5hbWUsIHNpemUpCittYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXpl
KQogICAgIG1hY3JvIGRlZmluZU5hcnJvdygpCiAgICAgICAgIGlmIG5vdCBDX0xPT1BfV0lOCiAg
ICAgICAgICAgICBfJW9wY29kZU5hbWUlX3JldHVybl9sb2NhdGlvbjoKQEAgLTEwNDgsMzIgKzEw
NTEsNzUgQEAgbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUp
CiAgICAgc2l6ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNy
byAoZikgZigpIGVuZCkKIGVuZAogCitpZiBBUk02NEUKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAg
ICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRl
QWZ0ZXIKK2VuZAorCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwg
b3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3Bh
dGNoLCBjYWxsZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAg
ICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICBlbHNpZiBBUk02NEUKKyAgICAg
ICAgbWFjcm8gY2FsbE5hcnJvdygpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0
ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9w
Y29kZU5hbWUlKSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9w
Y29kZU5hbWUlOgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0clRhZworICAgICAgICBlbmQK
KworICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmln
ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBH
YXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAg
W2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pz
X3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgICAgIGNhbGwgdDMsIGNh
bGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gY2FsbFdpZGUzMigpCisgICAg
ICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXpl
LCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQ
dHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6Cisg
ICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVuZAorCisgICAgICAgIG1v
dmUgY2FsbGVlLCB0MworICAgICAgICBzaXplKGNhbGxOYXJyb3csIGNhbGxXaWRlMTYsIGNhbGxX
aWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKICAgICBlbHNlCi0gICAgICAgIGNhbGwgY2Fs
bGVlLCBjYWxsUHRyVGFnCi0gICAgZW5kCisgICAgICAgIG1hY3JvIGxhYmVsTmFycm93KCkKKyAg
ICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAgZW5kCiAKLSAg
ICBpZiBBUk12NyBvciBNSVBTCi0gICAgICAgICMgSXQgaXMgcmVxdWlyZWQgaW4gQVJNdjcgYW5k
IE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKLSAgICAgICAgIyBmb3IgdGhv
c2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCi0gICAgICAg
ICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVj
dGVkCi0gICAgICAgICMgY3Jhc2hlcy4KLSAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVy
Q2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKKyAgICAgICAgbWFj
cm8gbGFiZWxXaWRlMTYoKQorICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUl
X3dpZGUxNjoKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gbGFiZWxXaWRlMzIoKQorICAg
ICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgZW5k
CisKKyAgICAgICAgc2l6ZShsYWJlbE5hcnJvdywgbGFiZWxXaWRlMTYsIGxhYmVsV2lkZTMyLCBt
YWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgIGNhbGwgY2FsbGVlLCBjYWxsUHRyVGFnCisg
ICAgICAgIGlmIEFSTXY3IG9yIE1JUFMKKyAgICAgICAgICAgICMgSXQgaXMgcmVxdWlyZWQgaW4g
QVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKKyAgICAgICAg
ICAgICMgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9mIGluc3RydWN0
aW9ucworICAgICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVz
dWx0aW5nIGluIHVuZXhwZWN0ZWQKKyAgICAgICAgICAgICMgY3Jhc2hlcy4KKyAgICAgICAgICAg
IHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIGRpc3BhdGNoKQorICAgICAgICBlbmQKICAgICBlbmQKLSAgICBkZWZpbmVPU1JFeGl0
UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNv
ZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxh
ckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJl
cGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNh
bGxQdHJUYWcpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCiAjIHNw
IHBvaW50cyB0byB0aGUgbmV3IGZyYW1lCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVl
LCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclRhaWxD
YWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAg
cmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5LDggKzEx
NTUsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRl
bXAzLCBjYWxsUHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAgIGFkZHAg
MTYsIGNmciwgdGVtcDMKLSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisgICAgICAg
IGFkZHAgMTYsIGNmciwgdGVtcDQKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRlbXAxCkBA
IC0xMTMwLDcgKzExNzUsMTQgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVt
cDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEs
IHNwCi0gICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBt
b3ZlIHRlbXA0LCBhMgorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OnRhaWxDYWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCisgICAgICAgIGpt
cCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBlbHNlCisg
ICAgICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNybyBzbG93
UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpAQCAtMTE0NCwxNiArMTE5NiwxNiBAQCBtYWNybyBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikK
ICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAg
ICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxs
ZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwo
Y2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICAu
ZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1l
JV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBK
U0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkgIyBXZSBk
b24ndCByZWFjaCB0aGlzIGluIHN0cmFpZ2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFjaCBpdCB2
aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2RlIGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3RhY2sg
ZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4KIAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChv
cE5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAg
cmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tj
ZnJdLCBQQwpAQCAtMTM1MSw3ICsxNDAzLDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxzbyB0cmln
Z2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwg
Y29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1
cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdSZXR1
cm5BZGRyZXNzIHNwCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBpZiBUUkFD
SU5HCkBAIC0xMzgxLDE0ICsxNDMyLDIwIEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAg
IyBwb3AgdGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdpbGwganVtcCB0byBhIGZ1bmN0aW9uIHRo
YXQgd2FudHMgdG8gc2F2ZSBpdAogICAgICAgICBpZiBBUk02NCBvciBBUk02NEUKICAgICAgICAg
ICAgIHBvcCBsciwgY2ZyCi0gICAgICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAg
ICAgZWxzaWYgQVJNdjcgb3IgTUlQUwogICAgICAgICAgICAgcG9wIGNmcgogICAgICAgICAgICAg
cG9wIGxyCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgZW5kCi0g
ICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworCisgICAgICAgIGlmIEFSTTY0RQorICAgICAg
ICAgICAgbW92ZSByMCwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHBy
IEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9T
UkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAg
cjAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6CiAgICAgICAgIG5v
dEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKQEAgLTE0OTQsNyAr
MTU1MSwxMiBAQCBlbmQKIG1hY3JvIGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNV
c2VkQnlMTEludCgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBp
ZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQ
dHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAg
ZWxzZQorICAgICAgICByZXQKKyAgICBlbmQKIGVuZAogCiAjIFRoaXMgYnJlYWsgaW5zdHJ1Y3Rp
b24gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHN5bnRoZXNpemVkIGxsaW50UENSYW5nZVN0YXJ0IGxh
YmVsCkBAIC0xNTI1LDYgKzE1ODcsMTcgQEAgZWxzZQogZW5kCiAgICAgZG9WTUVudHJ5KG1ha2VI
b3N0RnVuY3Rpb25DYWxsKQogCitnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcgorZ2xvYmFs
IF92bUVudHJ5VG9ZYXJySklUCitfdm1FbnRyeVRvWWFyckpJVDoKKyAgICBmdW5jdGlvblByb2xv
Z3VlKCkKK2lmIEFSTTY0IG9yIEFSTTY0RQorICAgIGptcCB0NSwgWWFyckVudHJ5UHRyVGFnCisg
ICAgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcjoKK2VuZAorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQor
ICAgIHJldAorCiAKIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgIyB2b2lkIHNh
bml0aXplU3RhY2tGb3JWTUltcGwoVk0qIHZtKQpAQCAtMTU3MCw2ICsxNjQzLDcxIEBAIGlmIG5v
dCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgICAgIHJldAogZW5kCiAKK2lmIEFSTTY0RQor
ICAgICMgdm9pZCogaml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKQorICAg
IGVtaXQgIi5nbG9ibCBfaml0Q2FnZVB0ciIKKyAgICBlbWl0ICJfaml0Q2FnZVB0cjoiCisgICAg
ICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmppdENh
Z2VQdHIpICogUHRyU2l6ZSwgdDIKKyAgICAgICAgam1wIFt0Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZworICAgICAgICBnbG9iYWwgX2ppdENhZ2VQdHJHYXRlQWZ0ZXIKKyAgICAgICAgX2ppdENh
Z2VQdHJHYXRlQWZ0ZXI6CisgICAgICAgIHJldAorCisgICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50
cnlUcmFtcG9saW5lCisgICAgX3RhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmU6CisgICAgICAgIHVu
dGFnUmV0dXJuQWRkcmVzcyBhMgorICAgICAgICBqbXAgYTAsIEpTRW50cnlQdHJUYWcKKworICAg
IGdsb2JhbCBfdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lCisgICAgX3RhaWxDYWxs
SlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZToKKyAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEy
CisgICAgICAgIGptcCBhMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisKKyAgICBnbG9iYWwgX2V4
Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lCisgICAgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5l
OgorICAgICAgICBqbXAgYTAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKworICAgIGdsb2JhbCBf
cmV0dXJuRnJvbUxMSW50VHJhbXBvbGluZQorICAgIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5l
OgorICAgICAgICByZXQKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3Vl
CisgICAgX2pzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRk
cmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X3Byb2dyYW1fcHJvbG9ndWUKKworICAgIGdsb2Jh
bCBfanNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZU1v
ZHVsZVByb2dyYW1Qcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAg
ICBqbXAgX2xsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJh
bXBvbGluZUV2YWxQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWU6CisgICAg
ICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9ldmFsX3Byb2xvZ3Vl
CisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlCisgICAg
X2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5B
ZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUK
KworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZQor
ICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlOgorICAgICAgICB0
YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxB
cml0eUNoZWNrUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1Byb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBf
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2sKKworICAgIGdsb2JhbCBfanNUcmFt
cG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUKKyAgICBfanNUcmFt
cG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWU6CisgICAgICAgIHRh
Z1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrCitlbmQKKwogaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAjIER1
bW15IGVudHJ5IHBvaW50IHRoZSBDIExvb3AgdXNlcyB0byBpbml0aWFsaXplLgogICAgIF9sbGlu
dF9lbnRyeToKQEAgLTE3MjQsMjEgKzE4NjIsMzAgQEAgZW5kKQogCiBvcChsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNo
ZWNrX2Zvcl9jYWxsKQotICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVn
aW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2lu
LCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAg
ICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAotCiBv
cChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAg
IHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVu
Y3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwg
X3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJl
Z2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5k
KQogCisjIE5lZWQgdGhlc2Ugc3R1YiBsYWJlbHMgdG8gbWFrZSBqc190cmFtcG9saW5lX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnIGV0Yy4gTExJbnQgaGVscGVyIG9w
Y29kZXMuCitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a191bnRhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVja191bnRhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTE2OgorX2pz
X3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRh
Z193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6CisgICAgYnJlYWsKIAogIyBWYWx1ZS1y
ZXByZXNlbnRhdGlvbi1zcGVjaWZpYyBjb2RlLgogaWYgSlNWQUxVRTY0CkBAIC0yMTA5LDcgKzIy
NTYsNyBAQCBlbmQpCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgc2xvd1BhdGhGb3JDb21t
b25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAorICAgICAgICBvcF9jYWxsX2V2
YWwsCiAgICAgICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8g
KCkgZGlzcGF0Y2hPcChuYXJyb3csIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjExOCw3ICsyMjY1
LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6
CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2
LAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxs
RXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMTYsIG9wX2NhbGxfZXZhbCkg
ZW5kLApAQCAtMjEyNyw3ICsyMjc0LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAK
IF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgK
LSAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAg
ICAgICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3Bh
dGNoT3Aod2lkZTMyLCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIxMzUsNyArMjI4Miw3IEBAIF9s
bGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogICAgICAgICBwcmVwYXJlRm9yUmVndWxhckNhbGwp
CiAKIAotY29tbW9uT3AobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQsIG1hY3JvICgpIGVuZCwg
bWFjcm8gKHNpemUpCitjb21tb25PcChsbGludF9nZW5lcmljX3JldHVybl9wb2ludCwgbWFjcm8g
KHNpemUpIGVuZCwgbWFjcm8gKHNpemUpCiAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgT3BD
YWxsRXZhbCwgbV9wcm9maWxlLCBtX2RzdCwgbWFjcm8gKCkKICAgICAgICAgZGlzcGF0Y2hPcChz
aXplLCBvcF9jYWxsX2V2YWwpCiAgICAgZW5kKQpAQCAtMjIxMiw3ICsyMzU5LDEzIEBAIG9wKGNo
ZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkK
IAogICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKICAgICAgICAgYnJhbmNoSWZFeGNl
cHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCi0gICAgICAgIGpt
cCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgIG1vdmUg
cjEsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNl
dE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0
clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMg
SlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjEsIEpTRW50cnlQ
dHJUYWcKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICBub3RTdXBwb3J0ZWQoKQogICAg
IGVuZApAQCAtMjIyOSwxMiArMjM4MiwyMyBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X3RyYW1w
b2xpbmUsIG1hY3JvICgpCiAgICAgICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2NoZWNrcG9p
bnRfb3NyX2V4aXQpCiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBi
cmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkK
LSAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGlmIEFSTTY0RQorICAgICAg
ICAgICAgbW92ZSByMSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHBy
IEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NS
RW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGptcCBy
MSwgSlNFbnRyeVB0clRhZworICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBv
cnRlZCgpCiAgICAgZW5kCiBlbmQpCiAKK29wKG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCBt
YWNybyAoKQorICAgIGRpc3BhdGNoKDApCitlbmQpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0
aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMu
CiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3Ig
ZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDYy
NmE0NjgxN2IxNTNiM2Q1NDY0N2MzZDgyYzFiNDc0OWZlNjI2ODQuLjcwMDVjODM3ZGNlMGM2MjE1
ZDg3MjQ4YzE0Yjg0NTQ5ZWY4YWMwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02ODYsNyArNjg2
LDcgQEAgZW5kCiAjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCiAKICMgRXhwZWN0
cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZl
cyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkK
K21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNvZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRo
KQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tj
ZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRv
bmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKQEAgLTIxMTUsNyArMjExNSw3IEBA
IG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxl
ZSArIFRhZ09mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwg
dDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCiAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVh
bFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogLm9wQ2FsbFNs
b3c6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCmluZGV4IGFhMTU3MjNjNjQwZjJkNzdlYThhN2ZlODhhOThiYWVhODZkMmI5
YjkuLjRkYjk3ZTAwZTNmOGQyNjMyNzlkNWZlYmIwYzQ5ZGE3Mzc0YjNjNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CkBAIC0zMDAsMTIgKzMwMCwyMCBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcmV0
CiBlbmQKIAotCiAjIGEwLCBhMiwgdDMsIHQ0CiBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50
cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBp
ZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5
CisgICAgZWxzaWYgQVJNNjRFCisgICAgICAgIG1vdmUgZW50cnksIHQzCisgICAgICAgIGxlYXAg
SlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNv
bnN0ZXhwciBHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0KSAqIFB0clNpemUsIGEyCisgICAgICAg
IGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAg
IGdsb2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlU
b0phdmFTY3JpcHRUcmFtcG9saW5lOgorICAgICAgICBjYWxsIHQzLCBKU0VudHJ5UHRyVGFnCisg
ICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcgorICAgICAgICBfdm1F
bnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcjoKICAgICBlbHNlCiAgICAgICAgIGNhbGwgZW50cnks
IEpTRW50cnlQdHJUYWcKICAgICBlbmQKQEAgLTMyNiw2ICszMzQsMTUgQEAgbWFjcm8gbWFrZUhv
c3RGdW5jdGlvbkNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAg
ICAgIHN1YnAgMzIsIHNwCiAgICAgICAgIGNhbGwgdGVtcDEsIEhvc3RGdW5jdGlvblB0clRhZwog
ICAgICAgICBhZGRwIDMyLCBzcAorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBtb3ZlIHRlbXAx
LCB0MworICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6dm1FbnRyeVRvTmF0aXZlKSAqIFB0clNp
emUsIGEyCisgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBIb3N0RnVu
Y3Rpb25QdHJUYWcKKyAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lCisg
ICAgICAgIF92bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lOgorICAgICAgICBjYWxsIHQzLCBIb3N0
RnVuY3Rpb25QdHJUYWcKKyAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIK
KyAgICAgICAgX3ZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcjoKICAgICBlbHNlCiAgICAgICAgIGNh
bGwgdGVtcDEsIEhvc3RGdW5jdGlvblB0clRhZwogICAgIGVuZApAQCAtNDMxLDggKzQ0OCwxNCBA
QCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBtb3ZlIFBDLCBh
MQogICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zcikKICAgICAgICAgICAgIGJ0cHog
cjAsIC5yZWNvdmVyCisKICAgICAgICAgICAgIG1vdmUgcjEsIHNwCi0gICAgICAgICAgICBqbXAg
cjAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAg
ICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwor
ICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbG9hZFBDKCkK
ICAgICAgICAgZW5kKQpAQCAtNjQ1LDcgKzY2OCw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBpbnRv
IHRoZSBpbnRlcnByZXRlci4KIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3
aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3JvIGZ1bmN0aW9uQXJp
dHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKG9w
Y29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAr
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVC
bG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9y
Q0NhbGwoKQpAQCAtNjgyLDkgKzcwNSwxNSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9u
ZUxhYmVsLCBzbG93UGF0aCkKIAogLm5vRXh0cmFTbG90OgogICAgIGlmIEFSTTY0RQorICAgICAg
ICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1h
cCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVW50YWcpICogUHRyU2l6ZSwgdDMKKyAg
ICAgICAgam1wIFt0M10sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAgICBfanNfdHJhbXBv
bGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CiAgICAgICAgIGxvYWRwIDhbY2ZyXSwgbHIKICAgICAg
ICAgYWRkcCAxNiwgY2ZyLCB0MwogICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDMKKyAgICAg
ICAgXyVvcGNvZGVOYW1lJVVudGFnR2F0ZUFmdGVyOgorICAgIGVsc2UKKyAgICAgICAgX2pzX3Ry
YW1wb2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgIGVuZAogCiAgICAgLy8gTW92ZSBmcmFt
ZSB1cCB0MSBzbG90cwpAQCAtNzEyLDkgKzc0MSwxNSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hl
Y2soZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKIAog
ICAgIGlmIEFSTTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVGFn
KSAqIFB0clNpemUsIHQzCisgICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcK
KyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICAgICAgYWRkcCAx
NiwgY2ZyLCB0MQogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAgICAgIHN0b3JlcCBs
ciwgOFtjZnJdCisgICAgICAgIF8lb3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6CisgICAgZWxzZQor
ICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgogICAgIGVuZAogCiAuY29u
dGludWU6CkBAIC03MjgsNyArNzYzLDcgQEAgZW5kCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0
aW9ucwogCiBfbGxpbnRfb3BfZW50ZXI6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHRyYWNl
RXhlY3V0aW9uKG5hcnJvdykKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MiwgMHhk
ZWFkMDBlMSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIgICAgICAgICAgICAgICAgLy8g
dDI8Q29kZUJsb2NrPiA9IGNmci5Db2RlQmxvY2sKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVt
VmFyc1t0Ml0sIHQyICAgICAgLy8gdDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJz
CkBAIC0yMTc1LDkgKzIyMTAsMTUgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKICAgICBzdG9y
ZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9h
ZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQorICAgIGlmIEFSTTY0RQor
ICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1f
bWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBwcmVwYXJlQ2FsbCh0MCwgdDIsIHQz
LCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQwCisgICAg
ICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHQwLCBKU0VudHJ5
UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0
NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdp
c3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
bV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgZW5kCiAub3BDYWxs
U2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0
aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyArMjI4Niw3IEBAIGxsaW50T3BXaXRoUmV0
dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5S2V5LCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxpbnRfb3BfY2F0Y2gsIG1hY3JvKCkgZW5k
LCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybyAoc2l6ZSkgZW5k
LCBtYWNybyAoc2l6ZSkKICAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJ
VCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCiAgICAgIyBtYWNoaW5lIGNvZGUgcmV0
dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KICAg
ICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3df
dHJhbXBvbGluZSkuCkBAIC0yMjgxLDcgKzIzMjIsNyBAQCBjb21tb25PcChsbGludF9vcF9jYXRj
aCwgbWFjcm8oKSBlbmQsIG1hY3JvIChzaXplKQogICAgIGdldChzaXplLCBPcENhdGNoLCBtX3Ro
cm93blZhbHVlLCB0MikKICAgICBzdG9yZXEgdDMsIFtjZnIsIHQyLCA4XQogCi0gICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHRyYWNlRXhlY3V0aW9uKHNpemUpCiAKICAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQogCkBAIC0yMzEwLDcgKzIzNTEsMTMgQEAg
b3AobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICAj
IFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgog
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQogICAgIGNvbnZlcnRDYWxsZWVUb1ZNKHQxKQotICAg
IGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5kbGVyUHRy
VGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIGxvYWRwIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JU
aHJvd1t0MV0sIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zm
c2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpleGNlcHRpb25IYW5kbGVy
KSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcg
IyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAgICBqbXAgVk06OnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZworICAgIGVuZAog
ZW5kKQogCiAKQEAgLTMwMTgsNCArMzA2NSwzIEBAIG9wKGZ1enplcl9yZXR1cm5fZWFybHlfZnJv
bV9sb29wX2hpbnQsIG1hY3JvICgpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCiAgICAgZG9SZXR1cm4oKQogZW5kKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCBiOTMyMjEzNDgzNDJlOWFhODg4ODMyZDVjN2Jh
ZDE2NjQ3YWNiNDViLi5mODA2ZWQ2M2Y2ZDQ3M2JlNzJjNjY0YmQyODlhYzY4OWQ1MzRhYzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTEzOSw4
ICsxMzksMTIgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKGNvZGVCbG9ja1Jl
Z2lzdGVyKQogCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAg
ICAgICAgICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgICAgICAgICB1bnRhZ1JldHVy
bkFkZHJlc3Mgc3AKLSAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZworICAgICAg
ICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Ondhc21P
U1JFbnRyeSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAg
ICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIo
Y29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgIGVuZCkKQEAgLTE1OSw5ICsxNjMsMTQgQEAgbWFj
cm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAgYnRweiByMSwgLnJlY292
ZXIKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAgICAg
ICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVz
cyBzcAogICAgICAgICAgICAgbW92ZSByMCwgYTAKLSAgICAgICAgICAgIGptcCByMSwgV2FzbUVu
dHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBtb3ZlIHIx
LCB3czAKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5KSAq
IFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgam1wIHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVuZAogICAgICAgICAucmVj
b3ZlcjoKICAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKQEAgLTI1Myw3ICsyNjIsNiBAQCBlbmQKIAog
bWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2Fk
V2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3
ZSBzaG91bGQgT1NSLgotICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBwcmVzZXJ2ZUNhbGxl
clBDQW5kQ0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgbG9h
ZFdhc21JbnN0YW5jZSgpCkBAIC0zMDUsNyArMzEzLDcgQEAgbWFjcm8gd2FzbVByb2xvZ3VlKGNv
ZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogLnplcm9J
bml0aWFsaXplTG9jYWxzRG9uZToKIGVuZAogCi1tYWNybyB0cmFjZUV4ZWN1dGlvbigpCittYWNy
byB0cmFjZUV4ZWN1dGlvbihzaXplKQogICAgIGlmIFRSQUNJTkcKICAgICAgICAgY2FsbFdhc21T
bG93UGF0aChfc2xvd19wYXRoX3dhc21fdHJhY2UpCiAgICAgZW5kCkBAIC00NTYsNyArNDY0LDEy
IEBAIGVuZAogbWFjcm8gZG9SZXR1cm4oKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdh
c20oKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0CisgICAgaWYgQVJNNjRF
CisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25m
aWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6ZSwg
YTIKKyAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgIGVsc2UKKyAg
ICAgICAgcmV0CisgICAgZW5kCiBlbmQKIAogIyBFbnRyeSBwb2ludApAQCAtNDk3LDcgKzUxMCwx
MyBAQCBvcCh3YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUsIG1hY3JvICgpCiAg
ICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IGEzCiAgICAgY0NhbGw0KF9zbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24pCiAKLSAgICBq
bXAgcjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbW92
ZSByMCwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICog
UHRyU2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCByMCwgRXhjZXB0aW9u
SGFuZGxlclB0clRhZworICAgIGVuZAogZW5kKQogCiAjIERpc2FibGUgd2lkZSB2ZXJzaW9uIG9m
IG5hcnJvdy1vbmx5IG9wY29kZXMKQEAgLTUzMSw3ICs1NTAsNyBAQCBfd2FzbV93aWRlMzI6CiAg
ICAgd2FzbU5leHRJbnN0cnVjdGlvbldpZGUzMigpCiAKIF93YXNtX2VudGVyOgotICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICB0cmFjZUV4ZWN1dGlvbihuYXJyb3cpCiAgICAgY2hlY2tTdGFja1Bv
aW50ZXJBbGlnbm1lbnQodDIsIDB4ZGVhZDAwZTEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQyICAgICAgICAgICAgICAgIC8vIHQyPENvZGVCbG9jaz4gPSBjZnIuQ29kZUJsb2NrCiAgICAg
bG9hZGkgV2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyICAgICAgLy8g
dDI8c2l6ZV90PiA9IHQyPENvZGVCbG9jaz4ubV9udW1WYXJzCkBAIC03MDUsNyArNzI0LDM4IEBA
IG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFu
Y2UpCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQ
Q1NpemUsIHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJUYWcKKworICAgICAg
ICAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKKyAgICAgICAg
ICAgICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRF
CisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUl
KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5h
bWUlOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
CisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsV2lkZTE2
KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAg
ICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1h
cCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEK
KyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
ICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAg
ICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAg
ICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQorICAgICAg
ICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlND
Q29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0
ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIHdzMQorICAgICAgICAg
ICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5
U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
ICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgICAg
ICAgICAgY2FsbCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVu
ZAorCisgICAgICAgICAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lk
ZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICAgICAgZGVmaW5lUmV0dXJu
TGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHdzMQogICAgICAgICAgICAgbG9hZGkgV2FzbTo6RnVuY3Rp
b25Db2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBmOWU1NzMyZmFmMTRiMDgwOWJjMmJiNmMx
OWIxYzgwMmM1OWY4MzAyLi5hNWEwYmNkYTU0MTRhNmYwYjZiOWRiZmRkNDFkMWMwNWM0MGZiNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtNDMsNiAr
NDMsNyBAQAogIyAgeDMgID0+IHQzLCBhMwogIyAgeDQgID0+IHQ0CiAjICB4NSAgPT4gdDUKKyMg
IHg2ICA9PiB0NgogIyB4MTMgID0+ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAjIHgxNiAg
PT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE3ICA9PiAgICAgICAgICAgICAgICAg
IChzY3JhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMz
NzQ2ZjQ3MzRjMjFiYmIyYmU1OGYwNjNkYTU3ODJhYmQ3Y2Q3YjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTAsMCArMSw5NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJ
T04pCisKKyNkZWZpbmUgSlNDX1VUSUxJVFlfR0FURVModikgXAorICAgIHYoaml0Q2FnZVB0ciwg
Tm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVB0clRhZywgTm9QdHJUYWcpIFwKKyAg
ICB2KHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYobG9v
cE9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYoZW50cnlPU1JFbnRyeSwgTm9QdHJUYWcpIFwK
KyAgICB2KHdhc21PU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KGV4Y2VwdGlvbkhhbmRsZXIs
IE5vUHRyVGFnKSBcCisgICAgdihyZXR1cm5Gcm9tTExJbnQsIE5vUHRyVGFnKSBcCisgICAgdihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAorICAg
IHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisg
ICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWcsIE5vUHRy
VGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFn
LCBOb1B0clRhZykgXAorICAgIHYodm1FbnRyeVRvSmF2YVNjcmlwdCwgSlNFbnRyeVB0clRhZykg
XAorICAgIHYodm1FbnRyeVRvTmF0aXZlLCBIb3N0RnVuY3Rpb25QdHJUYWcpIFwKKworI2RlZmlu
ZSBKU0NfSlNfR0FURV9PUENPREVTKHYpIFwKKyAgICB2KG9wX2NhbGwsIEpTRW50cnlQdHJUYWcp
IFwKKyAgICB2KG9wX3RhaWxfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfY29uc3Ry
dWN0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9uZXh0LCBKU0VudHJ5UHRy
VGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuLCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihv
cF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxs
X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY29uc3RydWN0X3Nsb3cs
IEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF92YXJhcmdzX3Nsb3csIEpT
RW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvdywg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHNfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3Rf
dmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfZXZh
bF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX25leHRf
c2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuX3Ns
b3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQor
CisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KSBcCisgICAgdih3YXNtX2NhbGwsIEpT
RW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX25vX3RscywgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfaW5kaXJlY3QsIEpTRW50cnlTbG93UGF0
aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX2luZGlyZWN0X25vX3RscywgSlNFbnRyeVNsb3dQ
YXRoUHRyVGFnKSBcCisKKyNlbHNlCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVTKHYpCisjZW5kaWYK
KworZW51bSBjbGFzcyBHYXRlIDogdWludDhfdCB7CisjZGVmaW5lIEpTQ19ERUZJTkVfR0FURV9F
TlVNKGdhdGVOYW1lLCB0YWcpIGdhdGVOYW1lLAorI2RlZmluZSBKU0NfREVGSU5FX09QQ09ERV9H
QVRFX0VOVU0oZ2F0ZU5hbWUsIHRhZykgZ2F0ZU5hbWUsIGdhdGVOYW1lIyNfd2lkZTE2LCBnYXRl
TmFtZSMjX3dpZGUzMiwKKyAgICBKU0NfVVRJTElUWV9HQVRFUyhKU0NfREVGSU5FX0dBVEVfRU5V
TSkKKyAgICBKU0NfSlNfR0FURV9PUENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkK
KyAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMoSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQor
I3VuZGVmIEpTQ19ERUZJTkVfR0FURV9FTlVNCit9OworCisjZGVmaW5lIEpTQ19DT1VOVChnYXRl
TmFtZSwgdGFnKSArIDEKKyNkZWZpbmUgSlNDX09QQ09ERV9DT1VOVChnYXRlTmFtZSwgdGFnKSAr
IDMKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9IDAgSlNDX1VUSUxJ
VFlfR0FURVMoSlNDX0NPVU5UKSBKU0NfSlNfR0FURV9PUENPREVTKEpTQ19PUENPREVfQ09VTlQp
IEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhKU0NfT1BDT0RFX0NPVU5UKTsKKyN1bmRlZiBKU0NfQ09V
TlQKKyN1bmRlZiBKU0NfT1BDT0RFX0NPVU5UCisjZWxzZQorLy8gS2VlcCBpdCBub24temVybyB0
byBtYWtlIEpTQ0NvbmZpZydzIGFycmF5IG5vdCBbMF0uCitzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mR2F0ZXMgPSAxOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDQ29uZmlnLmgKaW5kZXggNWE0NzMxN2M2MmE1ZWJhNjY2Njc1NzM1Zjc3NDAz
NTAwYzY4MGI0MS4uN2Y5NmVjNTJlZDIxYWZkZTMzZGExMzBkYjdkZDQ2OTRlYzYxOThkNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHYXRlLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+
CkBAIC05Miw2ICs5Myw3IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICBPcGNvZGUgb3Bjb2Rl
TWFwW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBPcGNvZGUgb3Bj
b2RlTWFwV2lkZTE2W251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBP
cGNvZGUgb3Bjb2RlTWFwV2lkZTMyW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwor
ICAgICAgICBjb25zdCB2b2lkKiBnYXRlTWFwW251bWJlck9mR2F0ZXNdOwogICAgIH0gbGxpbnQ7
CiAKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTExNyw2
ICsxMTksNyBAQCBleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX2pzY0NvbmZp
ZzsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVNYXAgPSBvZmZzZXRv
ZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwKTsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0
T2ZKU0NDb25maWdPcGNvZGVNYXBXaWRlMTYgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQu
b3Bjb2RlTWFwV2lkZTE2KTsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNv
ZGVNYXBXaWRlMzIgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwV2lkZTMy
KTsKK2NvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwID0gb2Zmc2V0b2Yo
SlNDOjpDb25maWcsIGxsaW50LmdhdGVNYXApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKaW5kZXggYTk0MTYzNGJm
ZmRhN2E0NjMxNTZjNDU5MDZmNzc0OWJlYTIyNmFjNy4uOTkxMWUxOWI4NzI5MjY2ZmQxNmMzOTYx
NzkyYjIxOTU0Mzg0MjFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUHRyVGFnLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQ
dHJUYWcuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8bWFjaGluZS9jcHVfY2FwYWJpbGl0aWVz
Lmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdf
REVCVUdHSU5HKQpAQCAtNjEsNCArNjcsMzIgQEAgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3Vw
KCkKIAogI2VuZGlmIC8vIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQog
CisjaWYgQ1BVKEFSTTY0RSkKKworUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyB0
YWcpCit7CisjZGVmaW5lIFJFVFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwg
Y2FsbGVyVHlwZSkgY2FzZSBfdGFnTmFtZTogcmV0dXJuIGNhbGxlclR5cGU7CisgICAgc3dpdGNo
ICh0YWcpIHsKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUp
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsK
KyAgICB9CisjdW5kZWYgUkVUVVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxl
clR5cGU6Ok5hdGl2ZTsKK30KKworUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0clRhZyB0
YWcpCit7CisjZGVmaW5lIFJFVFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwg
Y2FsbGVyVHlwZSkgY2FzZSBfdGFnTmFtZTogcmV0dXJuIGNhbGxlZVR5cGU7CisgICAgc3dpdGNo
ICh0YWcpIHsKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUp
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsK
KyAgICB9CisjdW5kZWYgUkVUVVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAppbmRleCBkZjhiNDAyMjY2ZTBlMDIw
MTlhZjM1ZjY4ZTkxZmFhNzhiZTc5MzViLi4zMzhhYWFlYWU2YTEyNTUzNjQ0ZWQ1NTczYWY1YjFi
YzRmMDM5MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQ
dHJUYWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaApA
QCAtMjcsNDYgKzI3LDUzIEBACiAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5j
bHVkZSA8d3RmL1B0clRhZy5oPgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGppdENhZ2VQdHIodm9p
ZCogcG9pbnRlciwgdWludHB0cl90IHRhZyk7CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAK
IHVzaW5nIFB0clRhZyA9IFdURjo6UHRyVGFnOwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19QVFJU
QUcodikgXAotICAgIC8qIE5hdGl2ZSBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENh
bGxlcjpOb25lICovIFwKICAgICB2KERPTUpJVEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVU
eXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KERpc2Fzc2VtYmx5
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUp
IFwKICAgICB2KFB1dFZhbHVlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5vbmUpIFwKLSAgICAvKiBKSVQgTm9uZSAqLyBcCisgICAgLyogQ2FsbGVl
OkpJVCBDYWxsZXI6Tm9uZSAqLyBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFi
bGVNZW1vcnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6
Tm9uZSkgXAogICAgIHYoTGlua0J1ZmZlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCi0gICAgLyogTmF0aXZlIE5hdGl2ZSAqLyBcCisgICAg
dihZYXJyOEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBl
OjpOb25lKSBcCisgICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYo
WWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0Nh
bGxlclR5cGU6Ok5vbmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOYXRpdmUgKi8g
XAogICAgIHYoQnl0ZWNvZGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFn
Q2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZVB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2Jl
RXhlY3V0b3JQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlw
ZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUp
IFwKLSAgICB2KFNsb3dQYXRoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAotICAgIC8qIEpJVCBOYXRpdmUgKi8gXAorICAgIC8qIENh
bGxlZTpKSVQgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAgICAgdihOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAg
LyogTmF0aXZlIEpJVCAqLyBcCisgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2
ZSBDYWxsZXI6SklUICovIFwKICAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwK
LSAgICB2KEpJVFRvTmF0aXZlR2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICAvKiBKSVQgSklUICovIFwKKyAgICAvKiBDYWxs
ZWU6SklUIENhbGxlcjpKSVQgKi8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFRo
dW5rUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkg
XAogICAgIHYoSklUU3R1YlJvdXRpbmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRy
VGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKU0VudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVU
eXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAorICAgIHYoSlNFbnRyeVNsb3dQYXRo
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAog
ICAgIHYoSlNJbnRlcm5hbFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKICAgICB2KEpTU3dpdGNoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpK
SVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoT1NSRW50cnlQdHJUYWcsIFB0clRh
Z0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFeGl0
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAog
ICAgIHYoV2FzbUVudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxl
clR5cGU6OkpJVCkgXAotICAgIHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRh
Z0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0
Y2hPbmx5OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBl
OjpKSVQpIFwKLSAgICB2KFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KFlhcnJCYWNrdHJhY2tQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAKICNk
ZWZpbmUgSlNDX0RFQ0xBUkVfUFRSVEFHKG5hbWUsIHR5cGUsIHRhcmdldCkgV1RGX0RFQ0xBUkVf
UFRSVEFHKG5hbWUpCkBAIC0xMDgsMTggKzExNSwyOCBAQCBGT1JfRUFDSF9KU0NfUFRSVEFHKEpT
Q19ERUNMQVJFX1BUUlRBRykKICNwcmFnbWEgd2FybmluZyhwb3ApCiAjZW5kaWYKIAorSlNfRVhQ
T1JUX1BSSVZBVEUgUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyk7CitKU19FWFBP
UlRfUFJJVkFURSBQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnKTsKKwogdGVtcGxh
dGU8UHRyVGFnIHRhZywgUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlLCBQdHJUYWdDYWxsZXJU
eXBlIGNhbGxlclR5cGUsIHR5cGVuYW1lIFB0clR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQ
dHJUeXBlIHRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3Nl
cnQoY2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhw
ciAoY2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYg
Y29uc3RleHByICh0YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlv
blB0clRhZyk7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJU
YWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0pJVE9wZXJhdGlvbihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9
PSBIb3N0RnVuY3Rpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6
aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOwotICAgICAgICB9CisgICAgICAg
IHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0
aW9uUHRyVGFnKTsKKyAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFn
KQorICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9w
ZXJhdGlvbihwdHIpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5j
dGlvblB0clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNz
ZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFB0clR5cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9j
YXN0PHZvaWQqPihwdHIpKSk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVRf
Q0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oaml0Q2FnZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHB0ciksIHRhZykpOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBXVEY6OnRhZ05hdGl2ZUNv
ZGVQdHJJbXBsPHRhZz4ocHRyKTsKIH0KQEAgLTEyOSwxNyArMTQ2LDY0IEBAIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFB0clR5cGUgdW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsKICAg
ICBzdGF0aWNfYXNzZXJ0KGNhbGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAg
ICBpZiBjb25zdGV4cHIgKGNhbGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlKSB7
Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykgewot
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9
PSBIb3N0RnVuY3Rpb25QdHJUYWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0g
T3BlcmF0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3Rh
bmNlKCkuYXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYgY29u
c3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9w
ZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVu
Y3Rpb25QdHJUYWcpOworICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJU
YWcpCisgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklU
T3BlcmF0aW9uKHB0cik7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1
bmN0aW9uUHRyVGFnKQorICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5h
c3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Yml0d2lzZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFp
bnMoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVy
biByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gZWxzZSB7
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgp
KSB7CisgICAgICAgICAgICBQdHJUeXBlIHJlbW92ZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgodGFnSlNDQ29kZVB0ckltcGw8dGFnLCBjYWxs
ZWVUeXBlLCBjYWxsZXJUeXBlPihyZW1vdmVkKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVy
biByZW1vdmVkOwogICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dW50
YWdOYXRpdmVDb2RlUHRySW1wbDx0YWc+KHB0cik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0
clR5cGU+CitpbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENh
bGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQo
cHRyKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxQdHJUeXBlPihKU0NfSklUX0NBR0UoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpLCBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdGFja1BvaW50ZXIpKSk7CisjZW5kaWYKKyNpZiBDUFUo
QVJNNjRFKQorICAgIHJldHVybiBwdHJhdXRoX3NpZ25fdW5hdXRoZW50aWNhdGVkKHB0ciwgcHRy
YXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3Rh
Y2tQb2ludGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgUHRyVHlwZT4KK2lubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0cldpdGhTdGFj
a1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIp
Cit7CisgICAgQVNTRVJUKHB0cik7CisgICAgVU5VU0VEX1BBUkFNKHN0YWNrUG9pbnRlcik7Cisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAg
ICAgICAgUHRyVHlwZSB1bmNhZ2VkID0gcmVtb3ZlQ29kZVB0clRhZyhwdHIpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVCh0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwodW5jYWdl
ZCwgc3RhY2tQb2ludGVyKSA9PSBwdHIpOworICAgICAgICByZXR1cm4gdW5jYWdlZDsKKyAgICB9
CisjZW5kaWYKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9h
dXRoKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0
PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYK
K30KKwogI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogdm9pZCBp
bml0aWFsaXplUHRyVGFnTG9va3VwKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGNoUmVzdWx0LmgKaW5kZXggYWRkMjY0ZTkwOTc1YjI2NWZkNWJlMTBmMjYzMmZk
NzVlMjg2YzgxYy4uZjMwNWU0YTE2NGQwMWZmYjFmODFjNzllYjVlNDlmMDQ1YjgxODVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCkBAIC0zNCw3ICsz
NCwxMCBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQ7CiAjaWYgQ1BVKEFERFJFU1MzMikKIHVzaW5nIEVu
Y29kZWRNYXRjaFJlc3VsdCA9IHVpbnQ2NF90OwogI2Vsc2UKLXVzaW5nIEVuY29kZWRNYXRjaFJl
c3VsdCA9IE1hdGNoUmVzdWx0Oworc3RydWN0IEVuY29kZWRNYXRjaFJlc3VsdCB7CisgICAgc2l6
ZV90IHN0YXJ0OworICAgIHNpemVfdCBlbmQ7Cit9OwogI2VuZGlmCiAKIHN0cnVjdCBNYXRjaFJl
c3VsdCB7CkBAIC01Niw2ICs1OSwxMiBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICAs
IGVuZChiaXR3aXNlX2Nhc3Q8TWF0Y2hSZXN1bHQ+KG1hdGNoKS5lbmQpCiAgICAgewogICAgIH0K
KyNlbHNlCisgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdChFbmNvZGVkTWF0Y2hSZXN1bHQg
bWF0Y2gpCisgICAgICAgIDogc3RhcnQobWF0Y2guc3RhcnQpCisgICAgICAgICwgZW5kKG1hdGNo
LmVuZCkKKyAgICB7CisgICAgfQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBN
YXRjaFJlc3VsdCBmYWlsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAppbmRleCAwZDJmNWFjZjc5Y2RmNTc0OThlNmE3M2MwNjcyZDZkZDRiZjg4NDc4Li5lNzE3
ZDMwZTY0ZDE1OTczNDc5MmEzZjQ4YjkyMTY1NzJmYjQwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtNTAsNiArNTAsMTEgQEAKICNpbmNsdWRlIDxj
cnRfZXh0ZXJucy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8
V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2Nw
dV9jYXBhYmlsaXRpZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTM5Miw2ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQWxsSklU
T3B0aW9ucygpCiAgICAgT3B0aW9uczo6dXNlT01HSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25z
Ojp1c2VET01KSVQoKSA9IGZhbHNlOwogICAgIE9wdGlvbnM6OnVzZVJlZ0V4cEpJVCgpID0gZmFs
c2U7CisgICAgT3B0aW9uczo6dXNlSklUQ2FnZSgpID0gZmFsc2U7CiB9CiAKIHZvaWQgT3B0aW9u
czo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCkBAIC0xMTE0LDQgKzExMjAsMTAgQEAgYm9v
bCBPcHRpb25SZWFkZXI6Ok9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2Jvb2wg
Y2FuVXNlSklUQ2FnZSgpIHsgcmV0dXJuIEpTQ19KSVRfQ0FHRV9WRVJTSU9OKCk7IH0KKyNlbHNl
Citib29sIGNhblVzZUpJVENhZ2UoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKaW5kZXggYTlkZjU1ZWJkMjc2Y2UxNGRkYzliODdjZDAxZTZlYmM3ZjJmNzdmNS4uYjBhMDUy
MDYzMGU4ZDBlYWZkMTcwMjQ1ZTE0Y2YzMTE3ZDE2OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00Myw2ICs0Myw4IEBAIGNvbnN0ZXhwciBi
b29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gdHJ1ZTsKIGNvbnN0ZXhwciBib29s
IGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAjZW5kaWYKIAorSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CisKIC8vIEhvdyBkbyBKU0MgVk0gb3B0
aW9ucyB3b3JrPwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VB
Q0hfSlNDX09QVElPTigpIG1hY3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0
aW9ucyBpbiB1c2UsCkBAIC01MjAsNiArNTIyLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzZWVkRm9yTElD
TUZ1enplciwgNDI0MjQyLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJsZSwgYWxsb3dI
b2lzdGluZ0xJQ01Qcm9iYWJpbGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJv
b2wsIGV4cG9zZUN1c3RvbVNldHRlcnNPbkdsb2JhbE9iamVjdEZvclRlc3RpbmcsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZUpJVENhZ2UsIGNhblVzZUpJVENhZ2Uo
KSwgTm9ybWFsLCBudWxscHRyKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNh
bWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3Bw
CmluZGV4IDljNGI1OTU0NmU2Zjk2MGFiNzU4ZTNhNTNmMmI2MWRiYjY3NGMyMWUuLjkwNjIxMTIx
YTgxZTMxYjUyMTc1YjU5N2Q5YmM0MTI2NDg2NzYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgewogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIFdB
U01fQ0FMTF9SRVRVUk4odGFyZ2V0SW5zdGFuY2UsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcp
IGRvIHsgXAotICAgICAgICBXQVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0
VGFnLCBTbG93UGF0aFB0clRhZz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0YW5jZSk7IFwKKyAg
ICAgICAgV0FTTV9SRVRVUk5fVFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRy
eVNsb3dQYXRoUHRyVGFnPihjYWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAogICAgIH0g
d2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIENPREVfQkxPQ0soKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IDIyYmY2NmQ4YzgyMmRhOTFlMDMxODA2YTJmNjlkMzZl
NGJkOGY3YmQuLjk0ZDMwMmFlYWZkNTE2YTViM2ZjN2Y0YmY1Zjc5NWEzZjU2Y2E3NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCisjaWYgQ1BVKEFSTTY0KQorSlNDX0FO
Tk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZt
RW50cnlUb1lhcnJKSVRBZnRlcik7CisjZW5kaWYKKwogTWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpN
YXRjaGluZ0NvbnRleHRIb2xkZXIoVk0mIHZtLCBZYXJyQ29kZUJsb2NrKiB5YXJyQ29kZUJsb2Nr
LCBNYXRjaEZyb20gbWF0Y2hGcm9tKQogICAgIDogbV92bSh2bSkKIHsKQEAgLTM3NDYsOSArMzc1
MCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWN4KTsK
ICNlbmRpZgogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CiAg
ICAgICAgIGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKSB7Ci0gICAgICAgICAgICBwdXNoUGFp
cihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUo
VHJ1c3RlZEltbTMyKDB4MTAwMDApLCBzdXBwbGVtZW50YXJ5UGxhbmVzQmFzZSk7CiAgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigweGQ4MDApLCBsZWFkaW5nU3Vycm9nYXRlVGFnKTsKICAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4ZGMwMCksIHRyYWlsaW5nU3Vycm9nYXRlVGFn
KTsKQEAgLTM4MDMsOCArMzgwNSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgcG9w
KFg4NlJlZ2lzdGVyczo6ZWJ4KTsKICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKICNl
bGlmIENQVShBUk02NCkKLSAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAg
ICAgICAgICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworICAg
ICAgICAvLyBEbyBub3RoaW5nCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgcG9wKEFS
TVJlZ2lzdGVyczo6cjgpOwogICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyNik7CkBAIC0zODEz
LDcgKzM4MTQsMTMgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjZWxpZiBDUFUoTUlQUykKICAgICAgICAg
Ly8gRG8gbm90aGluZwogI2VuZGlmCisKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9u
UHRyVGFnPigmdm1FbnRyeVRvWWFyckpJVEFmdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgZmFySnVt
cChyZWdUMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIHJldCgpOworI2VuZGlm
CiAgICAgfQogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXgg
NjY0MjhlMDY2M2YzMzIwOTE3NzgxZGJiOWQwYzczMGQyYjZkNjg1Yi4uMTViN2JkNmEyNmZmNmU0
YjAwMTIxMjk4OWU4ZmRjZWVhNWE0YjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJK
SVQuaApAQCAtNzYsNiArNzYsOSBAQCBjbGFzcyBNYXRjaGluZ0NvbnRleHRIb2xkZXIgewogI2Vu
ZGlmCiB9OwogCitleHRlcm4gIkMiIEVuY29kZWRNYXRjaFJlc3VsdCB2bUVudHJ5VG9ZYXJySklU
KGNvbnN0IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQq
IG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBtYXRjaGluZ0NvbnRleHQsIGNvbnN0IHZv
aWQqIGNvZGVQdHIpOworZXh0ZXJuICJDIiB2b2lkIHZtRW50cnlUb1lhcnJKSVRBZnRlcih2b2lk
KTsKKwogY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWWFyckNvZGVCbG9jayk7CkBAIC0xMDksMjUgKzEx
Miw0MSBAQCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNv
bnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBv
dXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhczhCaXRDb2RlKCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0
dXJuIE1hdGNoUmVzdWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91
dHB1dCwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnI4Qml0UHRyVGFnLCBZYXJy
RW50cnlQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNl
CiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29k
ZTgsIFlhcnI4Qml0UHRyVGFnPihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlu
cHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRI
b2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENv
ZGUoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRy
eVRvWWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0
LCByZXRhZ0NvZGVQdHI8WWFycjE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmMTYu
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0
Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFn
PihtX3JlZjE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0
aCwgb3V0cHV0LCBtYXRjaGluZ0NvbnRleHQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNo
UmVzdWx0IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoLCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFy
dCwgbGVuZ3RoLCBudWxscHRyLCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1h
dGNoT25seThCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0
KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThC
aXRQdHJUYWc+KG1fbWF0Y2hPbmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQs
IHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAg
fQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdD
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsK
KyNpZiBDUFUoQVJNNjRFKQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFy
ckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0
YWdDb2RlUHRyPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21h
dGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAg
cmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5
MTYsIFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29u
dGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09T
QWxsb2NhdG9yLmgKaW5kZXggNzcxMzYyYjkyYTJlNTIyOTM5ODRlMTE2NTFiZDJhOTM5M2Q5ODNh
Mi4uMjY4OGE0ZWZkZjgxN2RiN2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9j
YXRvci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyByZWxl
YXNlRGVjb21taXR0ZWQgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0
ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBj
dXJyZW50bHkgYmUgaW4gYSBkZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2ZVVuY29tbWl0dGVkIHJl
dHVybnMgdG8KICAgICAvLyB5b3UgbWVtb3J5IHRoYXQgaXMgemVyb2VkLgotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2Ug
PSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBm
YWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVu
a25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNl
LCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0g
ZmFsc2UpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21t
aXR0ZWQodm9pZCosIHNpemVfdCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRy
aWM7IHRoZXkgY29tbWl0IG9yIGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBW
TSBzaG91bGQKQEAgLTU1LDI3ICs1NSwyNyBAQCBjbGFzcyBPU0FsbG9jYXRvciB7CiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBW
TSBpbiBhbiBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2Vy
dmF0aW9uLAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29t
bWl0dGVkIHN0YXRlLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2
ZUFuZENvbW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0g
dHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0g
ZmFsc2UpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9v
bCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21taXRB
bmRSZWxlYXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFib3Zl
IC0gaG93ZXZlciByYXRoZXIgdGhhbgogICAgIC8vIGNvbW1pdHRpbmcvZGVjb21taXR0aW5nIHRo
ZSBlbnRpcmUgcmVnaW9uIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyBhIHN1YnJlZ2lvbiB0
byBiZQogICAgIC8vIHNwZWNpZmllZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6
ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1
dGFibGUgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNl
cnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdl
ID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFsbG9jYXRl
IGFuIGV4aXN0aW5nLCBjb21taXR0ZWQgYWxsb2NhdGlvbi4KICAgICAvLyBUaGUgcHJpb3IgYWxs
b2NhdGlvbiBtdXN0IGJlIGZ1bGx5IGNvbWl0dGVkLCBhbmQgdGhlIG5ldyBzaXplIHdpbGwgYWxz
byBiZSBmdWxseSBjb21taXR0ZWQuCiAgICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgcHJvdmlkZWQg
c2luY2UgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIG9wdGltaXplIHRoaXMgb3BlcmF0aW9uIG9uIHNv
bWUgcGxhdGZvcm1zLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHJl
YWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNh
Z2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSk7CisgICAgc3RhdGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBv
bGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFi
bGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9
IGZhbHNlKTsKIAogICAgIC8vIEhpbnQgdG8gdGhlIE9TIHRoYXQgYW4gYWRkcmVzcyByYW5nZSBp
cyBub3QgZXhwZWN0ZWQgdG8gYmUgYWNjZXNzZWQgYW55dGltZSBzb29uLgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbih2b2lkKiwgc2l6
ZV90KTsKIH07CiAKLWlubGluZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChz
aXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3
cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQoraW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNl
cnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdl
IHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJs
ZWQpCiB7Ci0gICAgdm9pZCogYmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwg
dXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVu
Y29tbWl0dGVkKHJlc2VydmVTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENh
Z2VFbmFibGVkKTsKICAgICBjb21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUpOwogICAgIHJldHVybiBiYXNlOwogfQpAQCAtODYsOSArODYsOSBAQCBpbmxpbmUgdm9p
ZCBPU0FsbG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIHJlbGVhc2VCYXNlLCBzaXpl
X3QgcmVsZWFzZVNpegogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIE9TQWxs
b2NhdG9yOjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBz
aXplX3QgbmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJs
ZSkKK2lubGluZSBUKiBPU0FsbG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNl
LCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCog
bmV3QmFzZSA9IHJlc2VydmVBbmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVj
dXRhYmxlKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBtZW1jcHko
bmV3QmFzZSwgb2xkQmFzZSwgc3RkOjptaW4ob2xkU2l6ZSwgbmV3U2l6ZSkpOwogICAgIGRlY29t
bWl0QW5kUmVsZWFzZShvbGRCYXNlLCBvbGRTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VCo+KG5ld0Jhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9u
LmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAppbmRleCBhMmFlZTg4NGU5ODY0
Y2Q5MzIxYTZiNDk0ZTllNjk4ODI0NDMxMDMwLi40OTRiZjA1ZTAwMTcxNTM4NTFlYjEwYTU1MzNj
MjJmYzY1Y2I3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaApAQCAtNTUsMTIgKzU1LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFn
ZUJsb2NrIHsKIHB1YmxpYzoKLSAgICBQYWdlUmVzZXJ2YXRpb24oKQotICAgICAgICA6IG1fY29t
bWl0dGVkKDApCi0gICAgICAgICwgbV93cml0YWJsZShmYWxzZSkKLSAgICAgICAgLCBtX2V4ZWN1
dGFibGUoZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBQYWdlUmVzZXJ2YXRpb24oKSA9IGRlZmF1
bHQ7CiAKICAgICB1c2luZyBQYWdlQmxvY2s6OmJhc2U7CiAgICAgdXNpbmcgUGFnZUJsb2NrOjpz
aXplOwpAQCAtOTMsMjIgKzg4LDIyIEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUg
UGFnZUJsb2NrIHsKICAgICAgICAgcmV0dXJuIG1fY29tbWl0dGVkOwogICAgIH0KIAotICAgIHN0
YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVz
YWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRy
dWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24g
cmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0
b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9
IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NF
UlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24o
T1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgZmFsc2UpOworICAgICAgICBy
ZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6
ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpLCBz
aXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGZhbHNlKTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMo
c2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtu
b3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkK
KyAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qg
c2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2Fn
ZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGpp
dENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25l
ZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJl
c2VydmVVbmNvbW1pdHRlZChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwg
ZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAg
ICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0
dGVkKHNpemUgKyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBq
aXRDYWdlRW5hYmxlZCwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdl
RW5hYmxlZCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNl
cnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2Fn
ZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVl
LCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJl
c2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVz
YWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRy
dWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2Up
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJl
dHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSAr
IHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXpl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2
YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAy
LCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAK
ICAgICB2b2lkIGRlYWxsb2NhdGUoKQpAQCAtMTI3LDcgKzEyMiw3IEBAIGNsYXNzIFBhZ2VSZXNl
cnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUGFn
ZVJlc2VydmF0aW9uKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29s
IGV4ZWN1dGFibGUsIGJvb2wgaGFzR3VhcmRQYWdlcykKKyAgICBQYWdlUmVzZXJ2YXRpb24odm9p
ZCogYmFzZSwgc2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCwgYm9vbCBoYXNHdWFyZFBhZ2VzKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBo
YXNHdWFyZFBhZ2VzKQogICAgICAgICAsIG1fY29tbWl0dGVkKDApCiAgICAgICAgICwgbV93cml0
YWJsZSh3cml0YWJsZSkKQEAgLTEzNSw5ICsxMzAsOSBAQCBjbGFzcyBQYWdlUmVzZXJ2YXRpb24g
OiBwcml2YXRlIFBhZ2VCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIHNpemVfdCBtX2NvbW1p
dHRlZDsKLSAgICBib29sIG1fd3JpdGFibGU7Ci0gICAgYm9vbCBtX2V4ZWN1dGFibGU7CisgICAg
c2l6ZV90IG1fY29tbWl0dGVkIHsgMCB9OworICAgIGJvb2wgbV93cml0YWJsZSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2V4ZWN1dGFibGUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmgKaW5kZXggZTIyMjk4NzViNDc3YjFjNmJhYmJjNWZlZGQ5N2NhNTcyOTFkM2MyMy4u
NWJjN2U4NmI2ZWY2OWQ4ZThmZWMwYzZiZjhjNjY1NDdkNWU3ZjVhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCkBAIC04ODQsMTAgKzg4NCwxMCBAQAogI2Vycm9yICJFTkFCTEUoV0hMU0xfQ09N
UElMRVIpIHJlcXVpcmVzIEVOQUJMRShXRUJHUFUpIgogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQp
ICYmIENQVShBRERSRVNTNjQpCi0jZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2lmIE9TKERB
UldJTikgJiYgRU5BQkxFKEpJVCkgJiYgKChVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBDUFUo
QVJNNjRFKSkpCisjZGVmaW5lIEVOQUJMRV9KSVRfQ0FHRSAxCiAjZW5kaWYKIAotI2lmIE9TKERB
UldJTikgJiYgRU5BQkxFKEpJVCkgJiYgQVNTRVJUX0VOQUJMRUQKKyNpZiBPUyhEQVJXSU4pICYm
IEVOQUJMRShKSVQpICYmIChFTkFCTEUoSklUX0NBR0UpIHx8IEFTU0VSVF9FTkFCTEVEKQogI2Rl
ZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKaW5kZXggMjJmNDYyYjJhNjRkYWJmOGMwODQ5YTkyMGRlYWJkOWExYzFlNWJlMi4uZmNl
OWVkYTEzM2M5YmIzMTY3MGUzMmU5ZGYzYTA3YTRhMmRjMzhjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5o
CkBAIC0zMDgsMyArMzA4LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKICNkZWZpbmUg
VVNFX0NURk9OVEdFVEFEVkFOQ0VTX1dPUktBUk9VTkQgMQogI2VuZGlmCisKKyNpZiBDUFUoQVJN
NjQpICYmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaCBiL1NvdXJjZS9XVEYvd3RmL1B0
clRhZy5oCmluZGV4IDhmYjNmZjY5ZThhNjUxZmFlMGJkNWVjYzk0Y2RkNDY0MDRkNTY0ZTUuLjlm
OTU1NmNhZWU3OThiZTVmMzQ5OTFiY2I2ZTNhZDg5ODQwOTA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oCkBAIC00NDIs
MjAgKzQ0Miw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IG9sZExl
bmd0aCwgc2l6ZV90IG5ld0xlbmd0aCkKICAgICByZXR1cm4gcHRyYXV0aF9hdXRoX2FuZF9yZXNp
Z24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRMZW5ndGgsIHB0
cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNr
UG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikK
LXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVudGlj
YXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2Fz
dDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBl
PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwo
UHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRy
KTsKLSAgICByZXR1cm4gX19idWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5X3By
b2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikp
OwotfQotCiB0ZW1wbGF0ZSA8UHRyVGFnIHRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJ
bnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTUwNiwxMiArNDkyLDYgQEAgaW5s
aW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3QsIHNpemVfdCkKICAgICByZXR1cm4g
cHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+Ci1pbmxpbmUgUHRyVHlw
ZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0
IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+
PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwo
UHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQogdGVtcGxhdGUgPFB0
clRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0
ckludCkKIHsKQEAgLTU0NCw5ICs1MjQsNyBAQCB1c2luZyBXVEY6OnJldGFnQXJyYXlQdHI7CiB1
c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOwogCiB1c2luZyBXVEY6OnRhZ0NvZGVQdHI7Ci11
c2luZyBXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdU
Rjo6dW50YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVy
Rm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6cmV0YWdDb2RlUHRyOwogdXNpbmcgV1RGOjpyZW1vdmVD
b2RlUHRyVGFnOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDQ0NTQwNTljNTE1ZDJhNDEyYjQzMmQwNzE0NmNm
NmYwMTFkNDc2MGIuLjk1NzZhOTMzNWY1NWFiMmRmOGIyYTY4YTcwYWFiZWVlMzM2ZDY1N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBAIC0zMSw5ICszMSwy
MSBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VCbG9j
ay5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9K
SVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUoSklUX0NBR0UpCisjaWYgT1MoREFS
V0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRSBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRB
QkxFX1dJVEhfSklUX0NBR0UgTUFQX0pJVAorI2Vsc2UgLy8gT1MoREFSV0lOKQorI2RlZmluZSBN
QVBfRVhFQ1VUQUJMRSAwCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX1dJVEhfSklUX0NBR0UgMAor
I2VuZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIG5hbWVz
cGFjZSBXVEYgewogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVf
dCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0
dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0
YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAj
aWYgT1MoTElOVVgpCiAgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKQEAgLTQ2LDcgKzU4LDcgQEAg
dm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdl
IHVzYWdlLCBib29sIHdyaXRhYmxlLAogICAgICAgICBDUkFTSCgpOwogICAgIG1hZHZpc2UocmVz
dWx0LCBieXRlcywgTUFEVl9ET05UTkVFRCk7CiAjZWxzZQotICAgIHZvaWQqIHJlc3VsdCA9IHJl
c2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaW5jbHVk
ZXNHdWFyZFBhZ2VzKTsKKyAgICB2b2lkKiByZXN1bHQgPSByZXNlcnZlQW5kQ29tbWl0KGJ5dGVz
LCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBpbmNsdWRlc0d1
YXJkUGFnZXMpOwogI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQogICAgIGlmIChyZXN1bHQpIHsK
ICAgICAgICAgLy8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUgdGhlbiBjb21taXQiIG1vZGVsLCB3
ZSBoYXZlIHRvIGluaXRpYWxseSBkZWNvbW1pdC4KQEAgLTU5LDcgKzcxLDcgQEAgdm9pZCogT1NB
bGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBi
b29sIHdyaXRhYmxlLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFi
bGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29s
IHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5j
bHVkZXNHdWFyZFBhZ2VzKQogewogICAgIC8vIEFsbCBQT1NJWCByZXNlcnZhdGlvbnMgc3RhcnQg
b3V0IGxvZ2ljYWxseSBjb21taXR0ZWQuCiAgICAgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQ7
CkBAIC03MCw4ICs4MiwxNCBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChz
aXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBibwogCiAgICAgaW50IGZs
YWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfQU5PTjsKICNpZiBPUyhEQVJXSU4pCi0gICAgaWYgKGV4
ZWN1dGFibGUpCi0gICAgICAgIGZsYWdzIHw9IE1BUF9KSVQ7CisgICAgaWYgKGV4ZWN1dGFibGUp
IHsKKyAgICAgICAgaWYgKGppdENhZ2VFbmFibGVkKQorICAgICAgICAgICAgZmxhZ3MgfD0gTUFQ
X0VYRUNVVEFCTEVfV0lUSF9KSVRfQ0FHRTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmxh
Z3MgfD0gTUFQX0VYRUNVVEFCTEU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0
Q2FnZUVuYWJsZWQpOwogI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL09T
QWxsb2NhdG9yV2luLmNwcAppbmRleCA5ZDZjMGFhNzQxMTM2Y2M4YTg0NmQwNDEyYTkyMWJkYTJh
YzM4YjQ3Li42ZDUyYzY2MmRmMDZmOTQ4MWE5MzM1YTdlZDJiNDUxNDM2NjQ2NGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlu
bGluZSBEV09SRCBwcm90ZWN0aW9uKGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKICAg
ICAgICAgKHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0KIAot
dm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdl
LCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRv
cjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUs
IGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBWaXJ0
dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRhYmxl
LCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQq
IE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9v
bCB3cml0YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxv
Y2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJs
ZSwgYm9vbCBleGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRD
b21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxl
LCBib29sLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYyhudWxscHRy
LCBieXRlcywgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBl
eGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCg==
</data>
<flag name="commit-queue"
          id="428624"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412222</attachid>
            <date>2020-10-23 18:52:23 -0700</date>
            <delta_ts>2020-10-23 19:11:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201023185223.patch</filename>
            <type>text/plain</type>
            <size>168460</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjU1YTUwNmQyZmQ5MWIwYmNjMTYwNDA4NjMzZjExMTEzNzM5ZWFlLi43N2JmZTQyMDMxZGY5Y2U5
MGExZGViNjM1ZTJlYTBjMDI0ZjgxMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVu
a3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZSk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9n
cmFtRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtRnVuY3Rpb25FbnRyeVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUNhdGNoVGh1bmspOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2VuZXJpY1JldHVyblBvaW50VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZnV6emVy
UmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVh
dGVKU0dhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVhdGVXYXNtR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVRhaWxDYWxsR2F0ZSk6CisgICAgICAgIChK
U0M6OkxMSW50Ojpsb29wT1NSRW50cnlHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6
ZW50cnlPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtT1NSRW50
cnlHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZXhjZXB0aW9uSGFuZGxlckdhdGVU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6dGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnVudGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENhZ2VQdHJUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBv
bGluZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkxvY2F0aW9uVGh1bmspOgor
ICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybTY0LnJi
OgorICAgICAgICAqIHJ1bnRpbWUvR2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
Q0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDUHRyVGFnLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y2FsbGVyVHlwZSk6CisgICAgICAgIChKU0M6OmNhbGxlZVR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDUHRyVGFnLmg6CisgICAgICAgIChKU0M6OnRhZ0pTQ0NvZGVQdHJJbXBsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdKU0NDb2RlUHRySW1wbCk6CisgICAgICAgIChKU0M6OnRhZ0NvZGVQ
dHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6CisgICAgICAgIChKU0M6OnVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAgICAgICAgKiBydW50aW1lL01hdGNoUmVz
dWx0Lmg6CisgICAgICAgIChKU0M6Ok1hdGNoUmVzdWx0OjpNYXRjaFJlc3VsdCk6CisgICAgICAg
ICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZGlzYWJsZUFsbEpJVE9wdGlv
bnMpOgorICAgICAgICAoSlNDOjpjYW5Vc2VKSVRDYWdlKToKKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnNMaXN0Lmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpleGVjdXRlKToKKwogMjAyMC0xMC0yMyAgQW5nZWxv
cyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBG
aXggYXJndW1lbnQgb3JkZXIgZm9yIGRvdWJsZSBhbmQvb3Igb3BzIG9uIEFSTXY3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDli
OGNjYmM4YjgzMTI0OTdlNTYyMzhmOWM5MjE1OTU2OTYxZTQ1ZWQuLmE3MzFhZGMyZjFlMDFmODU4
Njg2NzljMjJkNjQ4ZmIwNzQwZjk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMTAtMjMg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQg
SklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9PU0FsbG9jYXRvci5oOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6
cmVzZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKToKKyAgICAgICAgKiB3dGYvUGFnZVJlc2VydmF0aW9uLmg6CisgICAgICAgIChX
VEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZSk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZh
dGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0
aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdl
UmVzZXJ2YXRpb246OlBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogd3RmL1BsYXRmb3JtRW5h
YmxlLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisgICAgICAgICogd3RmL1B0clRh
Zy5oOgorICAgICAgICAoV1RGOjp0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9y
SklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKToKKyAg
ICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQpOgorICAgICAgICAqIHd0
Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZVVuY29tbWl0dGVkKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRD
b21taXQpOgorCiAyMDIwLTEwLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIGFuZCBwYXNzIG5ldyBVUkwgd2ViIHBsYXRmb3Jt
IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWI0YzU4NDhjNThj
YTY2YmM2NTZlZGFhOGZmM2M5Y2ZmN2VjZjAxZi4uMmViNTY2ZGI0NmFkZDdjOTg5NjBjZDhhZGVh
MDg1ZGE5ZWM3MzJjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODY1
LDYgKzg2NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCiAgICAgcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmgKICAgICBydW50aW1lL0Z1enplckFnZW50LmgKKyAgICBydW50aW1lL0dhdGUuaAog
ICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNldC5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4OTlkMjA5Y2I3NzFmMTE0NjVjNmQ0NDA2MGVj
ZGI0NmFkNTg2ZmQuLjNkZmQ5ODAzYzZmOThlNGQ2NmMyZjVmNDY5ZmZkMDY4OGMyZTk1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZC
NzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3
MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNG
QTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1l
Rm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQg
LyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKQEAg
LTUwNTEsNiArNTA1Miw3IEBACiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENF
NDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc1MEND
NzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzI3MCw2ICs3MjcyLDcgQEAKIAkJCQlFMzNBOTQ5MjIyNTUzMjI5MDBENDJCMDYgLyog
RnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVy
UHJlZGljdGlvbnMuY3BwICovLAogCQkJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6
ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRl
LmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTk2ODUsNiArOTY4
OCw3IEBACiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0E5NDk3MjI1NTMyMzMwMEQ0MkIwNiAvKiBGdXp6ZXJB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDRkFEMzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1
enplclByZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzcxMTk5MjI1M0ZBODdGMDBC
QTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQw
MTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUx
NEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9w
ZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVy
YXRpb25MaXN0LmNwcAppbmRleCBiM2NlMTc3OTJkMDE2N2Y0ZWM3YmVjY2E0ZmRlODVjNDVjYmIx
MGIwLi5lNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAK
QEAgLTI2LDYgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9uTGlzdC5oIgogCisjaW5jbHVkZSAiR2F0ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5o
IgorI2luY2x1ZGUgIk9wY29kZS5oIgorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYKKwogbmFtZXNwYWNl
IEpTQyB7CiAKIExhenlOZXZlckRlc3Ryb3llZDxKSVRPcGVyYXRpb25MaXN0PiBqaXRPcGVyYXRp
b25MaXN0OwpAQCAtNDUsMTggKzUzLDIyIEBAIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6aW5pdGlh
bGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKIHN0YXRpYyBTVVBQ
UkVTU19BU0FOIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQb2ludGVycyhIYXNoTWFwPHZvaWQqLCB2
b2lkKj4mIG1hcCwgY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCog
ZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJf
dCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9
IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsKLSAgICAgICAgdm9p
ZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVu
dCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRy
VGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpIHsKKyAgICAgICAgSlNDX0pJVF9DQUdFRF9QT0lOVEVSX1JFR0lTVFJBVElPTigpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50
ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkg
ewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxP
cGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNO
ZXdFbnRyeSk7CisjZW5kaWYKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVEKSB7Cisg
ICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50
ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgeworICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJl
bW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkpOworICAgICAgICAg
ICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRh
Z05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRhZz4oY29kZVB0cikpOworICAgICAg
ICB9CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRp
b25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgeworICAgICAgICAgICAg
dm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3Vy
cmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFk
ZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29k
ZVB0cikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMsNiArODUsNTYgQEAgdm9pZCBKSVRP
cGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpCiAjZW5kaWYK
IH0KIAordm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0
Q29yZUZvckxMSW50KCkKK3sKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFtdIHsKKworI2RlZmluZSBMTElOVF9PUChuYW1lKSBcCisgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5h
bWUpKSwgXAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksIFwKKyAgICBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4obmFtZSkpLAorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lLCAuLi4pIFwK
KyAgICBMTElOVF9PUChuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKQorCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBvcGVyYXRpb25zW10gPSB7CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4o
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSksCisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPih3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscykpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9oYW5k
bGVfdW5jYXVnaHRfZXhjZXB0aW9uKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4oY2hlY2twb2lu
dF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4oY2hlY2twb2lu
dF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KSksCisKKyAgICAgICAgICAg
IExMSU5UX09QKG9wX2NhdGNoKQorICAgICAgICAgICAgTExJTlRfT1AobGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpCisKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfZ2V0X2J5X3ZhbCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfaWQpCisgICAgICAg
ICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKworICAgICAgICAgICAg
SlNDX0pTX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAgICAgICAgICBK
U0NfV0FTTV9HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJOX0xPQ0FUSU9OKQorICAgICAgICB9Owor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBhZGRQb2ludGVycyhq
aXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIG51bGxwdHIsIG51bGxwdHIs
IG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJSQVlfTEVOR1RIKG9wZXJhdGlvbnMpKTsK
KyN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KKyAgICB9KTsKKyNlbmRpZgorfQorCisKIHZv
aWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3QgdWlu
dHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0
cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsK
ICAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5kZXggMDk4NDkzZjUwYjJhZDMzY2Qx
ZDk3NTc0YTI4M2U5ZmY4Yjk2ODM2OS4uNWE0MGZmN2M4Y2ZhZDZiNDIwMzc3M2JkMjRhZDU1N2I0
Y2U0MjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRP
cGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRP
cGVyYXRpb25MaXN0LmgKQEAgLTM5LDEyICszOSwxNSBAQCBjbGFzcyBKSVRPcGVyYXRpb25MaXN0
IHsKIAogICAgIHZvaWQqIGNvbnRhaW5zKHZvaWQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiBjb25zdGV4cHIoQVNTRVJUX0VOQUJMRUQpCi0gICAgICAgICAgICByZXR1cm4gbV92
YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorICAgICAgICByZXR1cm4gbV92YWxpZGF0
ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBwb2ludGVyOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcG9w
dWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKTsKKyAgICBzdGF0aWMgdm9pZCBwb3B1bGF0
ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCk7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihjb25zdCB1aW50cHRy
X3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3Qq
IGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0NWI0YjNiNDY5Njg1NTJkN2RhYzk3ODhhZmY2Y2YwYjQzZGIyNmM2Li40Yzlh
OWViYTRiNjRmNDFjMTBlOTQ0ZGYyNDM4YTZmZGVhMTdiYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzM5
Miw2ICszMzkyLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuYnIodGFy
Z2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0
clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5icihkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMzllYTE1MTE0NzYxYTAw
ZTAwMDUwMzEwMGJlNzZiZGU0NGEyZjhjNC4uZDE4N2Q2OTMwZTZmZDlmNjY4Mzc5OGRhMzM5YzVh
MTM2ZDAzNGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkFS
TTY0RUFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQVJNNjQuaCIKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTEwLDIwICsxMTMsMjggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJs
aWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4oLTEpOwogCiAgICAgZW51bSBj
bGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAgIENGdW5jdGlvbkNhbGwsCi0gICAgICAg
IE90aGVyQ2FsbAorICAgICAgICBKSVRDYWxsLAorICAgICAgICBOYXRpdmVDYWxsLAorICAgIH07
CisKKyAgICBlbnVtIGNsYXNzIEp1bXBTaWduYXR1cmVUeXBlIHsKKyAgICAgICAgSklUSnVtcCwK
KyAgICAgICAgTmF0aXZlSnVtcCwKICAgICB9OwogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVy
ZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFRydXN0ZWRQdHIoUmVnaXN0
ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5
cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOwogICAg
ICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgaW52YWxpZGF0ZUFs
bFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6
OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYXooZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfQ0FM
TCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIoZGF0YVRlbXBSZWdpc3RlciwgdGFnR1BS
KTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwo
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFSTTY0QXNzZW1ibGVyOjpn
ZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFiZWwsIHBvaW50ZXJMYWJlbCkgPT0gUkVQ
QVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAgLTEzMiw1MSArMTQzLDUzIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAg
ICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlm
ICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02
NDo6Y2FsbCh0YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAg
ICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9u
Q2FsbD4oKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lz
dGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5
cGU6Ok90aGVyQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxlZVR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJVENhbGw+KEFSTTY0UmVnaXN0ZXJzOjps
cik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0
aXZlQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IENhbGwgY2FsbChSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
VHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YWdHUFIpOworICAgICAg
ICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRh
Z0dQUik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAg
ICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBS
ZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURfUEFS
QU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAg
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNp
Z25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJh
YXoodGFyZ2V0R1BSKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9DQUdF
RF9DQUxMKHR5cGUsIHRhcmdldEdQUiwgdGFnR1BSKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFiKHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICAg
ICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRh
ZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCB0YWcpOwotICAgICAg
ICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIHJldHVybiBjYWxsUmVn
aXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KHRhcmdldEdQUik7CisgICAg
ICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7Cisg
ICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAg
ICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0
YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRh
ZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxSZWdp
c3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4odGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVy
czo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpO
YXRpdmVDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQg
dGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJl
VHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgICAgIHJldHVybiBjYWxs
UmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgdGFnR1BS
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3Ms
IFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwoYWRkcmVzcywgdGFnKTsKLQor
ICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcp
OworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJ
VCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0
YWcpOwogICAgIH0KQEAgLTE5Nyw5MCArMjEwLDEyOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFS
TTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKIAogICAgIEFMV0FZU19JTkxJTkUg
SnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6anVtcCgpOyB9CiAKLSAg
ICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZyB0YWcpCisgICAgdGVtcGxh
dGU8SnVtcFNpZ25hdHVyZVR5cGUgdHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmFySnVt
cFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFs
aWRHUFIpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgICAgIEFTU0VS
VCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfRkFS
X0pVTVAodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQor
CisgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBQdHJUYWcgdGFnKQogICAg
IHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRh
ZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJU
KGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogCiAgICAgICAgIEFT
U0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNp
dHlHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIGZhckp1
bXAodGFyZ2V0LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1w
U2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5h
dGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZh
ckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVt
cChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh0YWcgIT0gdGFyZ2V0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXQsIHRhZyk7
CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BS
ID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAg
IG1vdmUodGFyZ2V0LCB0YXJnZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcp
LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+
KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRk
cmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRh
cmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5v
UHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAo
YWRkcmVzcywgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAg
ICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQ
UiwgdGFnR1BSKTsKKyAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcpOworICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BS
KQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5
R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAg
ICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwor
ICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgdGFnR1BSKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VS
VCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIp
OwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2ln
bmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZv
aWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKKyAgICB2b2lkIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisgICAgICAgIFJlZ2lzdGVySUQgdGFy
Z2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAg
ICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
dGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWdu
YXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQogCi0gICAgICAg
IEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICB2b2lkIGZhckp1bXAoQWRkcmVz
cyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVu
Y3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRh
cmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZh
ckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZl
cnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVt
cFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAg
ICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFn
KQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7
CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BS
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdl
dEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2Fs
bGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1
bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNp
dHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNp
Z25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9
CiAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcp
CiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKLQorICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAg
ICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChBZGRy
ZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRh
ZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBk
aXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdl
dEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0
YWcpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBm
YXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwg
ZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmV0KCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7CisgICAgICAgIGlmIChPcHRpb25zOjp1
c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0NfSklU
X0NBR0VEX1JFVCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIucmV0YWIoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDBjNzU5N2JhZjY0MjY2
NDk5NjM0YTU5ODAxN2JmYjY0YzMxNmE1NjQuLjJjOWI4ZmY4MDk1MTZlYjA3NzQ0YmRmZjgyNjc3
YTBjNmM0ZmRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzE5LDYgKzE3MTksMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
cj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQg
ZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92
ZSh0YXJnZXQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5ieChkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0
aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZvaWQgZmFySnVtcChB
ZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBlNjNhYjQ3NTVmZjhh
MWIwNjk3Y2NkNzNiNjIyMDIyZDZlYzAxOTYzLi5hZGFkNTRjYjAyNjE3ZDExOTcxYmIyNDVlMGEw
M2Y0ZDhkYWRmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwMDQsNiArMjAwNCwxMyBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+
IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1w
KFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAgICAgICBtb3ZlKHRhcmdl
dCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihNSVBTUmVnaXN0
ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgIH0KKwogICAgIHZvaWQg
ZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIG1fZml4ZWRX
aWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMjhmYWUyZTcyZjI1NjU3ZTYxMzMw
NWYyMDAzZGZjYmVhNWVlY2E5YS4uNzZkZGI1NzY5NGRhMjRmNGFlODA1YjA0OTNiNDJhOGU2NDJm
MzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1MCw2ICsyNzUwLDEyIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgLy8gQWRkcmVzcyBpcyBh
IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1bXAgdG8KICAgICB2
b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmZlZDE4MmU0NTdm
NzQ2NjI2NWY2NWIxNGM1OTQzMWYyM2U4NGFkMS4uMDU3YjMwNzhjMmI3ZTg2OTM5MzJiOTA1ZjE5
NGQzZjc3YjQ2NDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCkBAIC0xNDAzLDYgKzE0MDMsNyBAQAogb3AgOmxsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9t
X2lubGluZWRfY2FsbF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9s
aW5lCitvcCA6bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUKIG9wIDpmdXp6ZXJfcmV0dXJuX2Vh
cmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6bGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUK
IG9wIDpsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCkBAIC0xNDE5LDYgKzE0MjAsNDAg
QEAKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9jb25z
dHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVuX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9zbG93X3JldHVybl9sb2NhdGlvbgor
b3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfc2xvd19y
ZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19y
ZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2Nh
dGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgorCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsCitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGwKK29wIDpqc190
cmFtcG9saW5lX29wX2NvbnN0cnVjdAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4
dAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbgorb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfc2xvdworb3AgOmpz
X3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2NhbGxf
dmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdwor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdworb3AgOmpzX3RyYW1w
b2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25l
eHRfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbl9zbG93CitvcCA6anNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZworb3Ag
OmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnCitv
cCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
X3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGwKK29wIDp3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rscwor
CiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwogCiBiZWdpbl9zZWN0aW9uIDpXYXNtLApAQCAt
MTQzMyw2ICsxNDY4LDExIEBACiAKIG9wIDp0aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
CiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVj
dF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKICMgRklYTUU6IFdhc20gYW5kIEpTIExMSW50IHNo
b3VsZCBzaGFyZSBjb21tb24gb3Bjb2RlcwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNjU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBkMTUwM2JmMDM4NDdhNjQ4NTMzOTExMjc3NjhkNzAyNTBlODlh
NTM4Li5iMDYxNTBmY2NmNGM3ZGRhNWU1MWNjNWZhZDYzY2QzMTFkMTgyMzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0zMjAsNiArMzIw
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGxsaW50X2hhbmRsZV91bmNh
dWdodF9leGNlcHRpb246CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5l
ZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xp
bmU6CisgICAgY2FzZSBub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQ6CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVu
X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0
aW9uOgpAQCAtMzMxLDggKzMzMiw0MCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
cmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246
CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfY29u
c3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfc2xvd19yZXR1
cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ug
b3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9j
YWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3By
b2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHM6CisgICAgY2Fz
ZSBqc190cmFtcG9saW5lX29wX2NhbGw6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxf
Y2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0OgorICAgIGNhc2UganNf
dHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9p
dGVyYXRvcl9vcGVuOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX3Nsb3c6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9jb25zdHJ1Y3Rfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJhcmdz
X3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50c19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19z
bG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdzoKKyAgICBjYXNl
IGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnOgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50
YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKKyAg
ICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorICAgIGNhc2Ugd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93
YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
ICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggZGQ2NjZm
YWE4M2U4MzUwOWU2NWIwNzU1NzYyMmYwOGE5NDk0MjFiZC4uYWM0YjhjNTczYjgyNmI2YTMwYzYz
ZmVkYjQyNThiNWFmYmViNTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTM4LDIxICsxMzgsMjEgQEAg
dm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2Rl
SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNh
bGxlcklzTExJbnQpCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+
IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5
dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVl
Q2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCiB7CiAgICAgY2FsbGVySXNMTElu
dCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBiYXNlbGluZUNvZGVCbG9ja0Zv
ckNhbGxlci0+aml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bms7CiAKICAgICBp
ZiAoY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAgIGlmICghY2FsbGVy
SXNMTEludCkKICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5tX2hhc0xp
bmtlZE9TUkV4aXQgPSB0cnVlOwotICAgICAgICByZXR1cm4gTExJbnQ6OmdldENvZGVQdHI8SlNF
bnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9s
aW5lKTsKKyAgICAgICAgcmV0dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVk
Q2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8T1NSRXhpdFB0clRhZz4ganVtcFRhcmdldDsKIAogICAgIGNvbnN0IEluc3RydWN0aW9u
JiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3RydWN0
aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAoY2FsbGVySXNMTElu
dCkgewotI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlv
bi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFt
ZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTElu
dDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRp
b24pKSkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5M
b2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9jYXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0
aCgpKS5jb2RlKCkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewogICAg
ICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogewpAQCAtMjA5LDcgKzIwOSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tG
b3JDYWxsZXItPmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2FsbEJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKIAotICAgICAg
ICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0
YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlu
a0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMjYsMTMgKzIyNiwxMyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICAgICAgICAgIC8vIDYuIChCKSBnZXRzIE9TUiBl
eGl0LiAoQikgYXR0ZW1wdHMgdG8gc2VhcmNoIGZvciBTdHJ1Y3R1cmVTdHViSW5mbyBpbiAoQSkg
Zm9yIFB1dEJ5SWQgKG9yaWdpbmFsbHksIHB1dF9ieV92YWwpLiBCdXQgaXQgZG9lcyBub3QgZXhp
c3Qgc2luY2UgKEEpJ3MgSklURGF0YSBpcyBjbGVhcmVkIG9uY2UuCiAgICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZEJ5
VmFsSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYnlWYWxJbmZvKTsKLSAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0g
YnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CisgICAgICAg
ICAgICAgICAganVtcFRhcmdldCA9IGJ5VmFsSW5mby0+ZG9uZVRhcmdldC5yZXRhZ2dlZDxPU1JF
eGl0UHRyVGFnPigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBiYXNlbGluZUNvZGVCbG9j
a0ZvckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7
CisgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVMb2NhdGlvbi5yZXRhZ2dl
ZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MjkyLDcgKzI5Miw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gaml0LmJhc2VsaW5l
Q29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKICAgICAgICAgICAgIGF1dG8gY2FsbEJ5dGVjb2Rl
SW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldCA9IGNhbGxlclJldHVyblBD
KGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBjYWxsQnl0ZWNvZGVJbmRleCwgdHJ1ZUNhbGxl
ckNhbGxLaW5kLCBjYWxsZXJJc0xMSW50KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVyUmV0dXJuUEMoYmFzZWxpbmVD
b2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0cnVlQ2FsbGVyQ2FsbEtpbmQs
IGNhbGxlcklzTExJbnQpOwogCiAgICAgICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2Fs
bEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAtNDAyLDExICs0MDIs
MTEgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgaWYgKGV4aXRUb0xMSW50KSB7CiAgICAg
ICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KTsKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpjb2Rl
QmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRlc3RpbmF0aW9uOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4gZGVzdGluYXRpb247
CiAgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9v
c3JfZXhpdF90cmFtcG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNo
ZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIAot
ICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFn
PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6
bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKIAogICAgICAgICBpZiAoZXhp
dC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBHUFJJbmZvOjpyZWdUMik7
CkBAIC00MTYsMjIgKzQxNiwyMiBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0s
IENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0ZvckV4aXQtPm1ldGFk
YXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVHUFIpOwogICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhpdC0+
aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGJHUFIpOwogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGNHUFIpOwotICAgICAgICBqdW1wVGFyZ2V0ID0g
ZGVzdGluYXRpb24ucmV0YWdnZWQ8T1NSRXhpdFB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgICAgICBqdW1wVGFyZ2V0ID0gZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBjb2RlQmxvY2tGb3JFeGl0LT5tX2hhc0xpbmtlZE9TUkV4
aXQgPSB0cnVlOwogCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4ID0gZXhpdC5tX2Nv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxPU1JFeGl0UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGV4aXRJbmRleC5jaGVj
a3BvaW50KCkpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSk7CisgICAgICAgICAg
ICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygp
LmNvZGUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoY29kZUJsb2NrRm9y
RXhpdC0+Ynl0ZWNvZGVJbmRleEZvckV4aXQoZXhpdEluZGV4KSA9PSBleGl0SW5kZXgpOwotICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCkuZmlu
ZChleGl0SW5kZXgpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0
LT5qaXRDb2RlTWFwKCkuZmluZChleGl0SW5kZXgpLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwogCi0gICAgICAgIGp1
bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpOwogICAgIH0KIAogICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2NrRm9yRXhpdCkgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFzc2VtYmx5SGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKaW5kZXggMzkxMTRlYTY3NzAwMmE5
ODJmMmViODFlN2QyOGY4NmYyMjhmNmQwZC4uZGJhMGZlMzIyYmY4ODFjOTVjMjJkYjg1MDYxNjI0
MjA0YTZhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIHZvaWQgaGFuZGxlRXhpdENvdW50cyhWTSYsIENDYWxsSGVscGVycyYs
IGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4LCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQgY2FsbGVyS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCk7CiBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5saW5lQ2FsbEZyYW1lKiwgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSklUQ29kZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBmZjlhOGFmZDA1OTQ1YzI5Yjk3OGMxZmYzY2Y5
N2EyMjJiYjRiOTIxLi45YmU2NGJiZGYwZjI4ZmQ1NzRhNDI1ODg0Y2Q1MzQxZGYxYTY2NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKQEAgLTQ4LDYgKzQ4LDE4IEBACiAjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CiAjaW5jbHVkZSA8
bWFjaC9tYWNoX3RpbWUuaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdF
KQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklU
CisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisj
ZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2Rl
ZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9T
KERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIGV4dGVybiAiQyIgewogICAg
IC8qIFJvdXRpbmUgbWFjaF92bV9yZW1hcCAqLwogI2lmZGVmIG1pZ19leHRlcm5hbApAQCAtMTM5
LDggKzE1MSw4IEBAIHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZChib29s
IGVuYWJsZWQpCiAKICAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0gMTsKICAgICAgICAg
Y29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1Rf
RVhFQzsKLSAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQX0FO
T04gfCBNQVBfSklUOwogICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NBbGxvY2F0b3I6OkpT
SklUQ29kZVBhZ2VzOworICAgICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9O
IHwgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSA/IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9K
SVRfQ0FHRSA6IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQpOwogICAgICAgICB2b2lkKiBhbGxvY2F0
aW9uID0gbW1hcChudWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApOwogICAg
ICAgICBjb25zdCB2b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigtMSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRShhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRp
b25GYWlsdXJlLCAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVjdXRhYmxlIG1lbW9y
eSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBKSVQuIik7CkBAIC0zMjQsOSArMzM2LDkgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlv
bigpCiAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBKSVQgY29kZSBsb2dnaW5n
IGJyb2tlbiBhbmQgc29tZSBvZiBKSVQgY29kZSBpcyBub3QgcmVjb3JkZWQgY29ycmVjdGx5Lgog
ICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIHVzZSBjb21taXR0ZWQgcmVzZXJ2
YXRpb24gaWYgd2UgbmVlZCBwZXJmIEpJVER1bXAgbG9nZ2luZy4KICAgICAgICAgaWYgKE9wdGlv
bnM6OmxvZ0pJVENvZGVGb3JQZXJmKCkpCi0gICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0Fs
bG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7
CisgICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0
aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMs
IEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgZmFsc2UpOwogI2VuZGlmCi0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlv
blNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRB
QkxFLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhH
dWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBF
WEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIE9wdGlvbnM6OnVzZUpJVENhZ2UoKSk7CiAg
ICAgfTsKIAogICAgIHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbiA9IHRyeUNyZWF0ZVBhZ2VS
ZXNlcnZhdGlvbihyZXNlcnZhdGlvbi5zaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKaW5kZXggNzRkYWUyMjZmNTQ1YjdhYWFmMzQ3ODc0NDMzNjQyNzAwMTViZDBhNC4uZGVmZDcx
ODExMzY1NDE4MWM1M2U5Nzk2OTQ1ZTMyZGY3NDU5NmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQ2NSw2ICs0NjUsMTAgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEw
OyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBYODZSZWdpc3RlcnM6OmVh
eDsKKyNpZiAhT1MoV0lORE9XUykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2Ny
YXRjaEdQUjEgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgogCiAgICAgLy8gRklYTUU6IEkg
YmVsaWV2ZSB0aGF0IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRlYWQgaW4gdGhlIHNlbnNlIHRoYXQg
aXQganVzdCBjYXVzZXMgdGhlIHNjcmF0Y2gKICAgICAvLyByZWdpc3RlciBhbGxvY2F0b3IgdG8g
c2VsZWN0IGEgZGlmZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3RlbnRpYWxseSBzcGlsbCB0aGluZ3Mu
IEl0IHdvdWxkIGJlIGJldHRlcgpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9
IEFSTTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
OjppcDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJN
NjRSZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNo
R1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBk
aXJlY3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBk
aXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwCmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0
NmU5MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2Rl
KCkKIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAo
bV9jYWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fz
c2VtYmx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
KCkpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVu
bGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJu
TG9jYXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29k
ZUluZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3
MWRkOTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5
MjJkNWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1p
dFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwg
VGFnVHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRH
SW52YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNo
VG9TYXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwot
ICAgIGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0
b3JlKHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVh
c29uKFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAg
ICAgICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0
YWcsIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQ
Uik7CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAv
LyBXZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGws
IGJ1dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
YmZhNGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2
ZDhjZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNs
dWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNf
QVNTRVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkK
IAotCiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwy
MiBAQCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAog
I2VuZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJu
ICJDIiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
dGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2Fs
bEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0
aW9uSGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxM
SW50VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lm
IEVOQUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVO
QUJMRShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2Rl
TWFwLCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYg
KzgzLDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5l
eGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zW2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKwor
ICAgIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9y
TExJbnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFn
KSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAg
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAg
ICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9p
ZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1
bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4o
TExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcs
ICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNv
ZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
KGpzX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1
Y3QoTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFt
cG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50
OjpnZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8j
I25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0
ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJl
ZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29u
ZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRl
MzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAg
IH0gd2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dB
VEUpCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNN
X0dBVEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNv
ZGVSZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgp
KSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5r
KHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xv
Y2F0aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVj
dChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFn
LCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYi
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihM
TEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxz
ZSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAg
ICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01f
R0FURV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkFTU0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywg
T3BlcmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQ
dHJUYWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZt
RW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxp
bnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlw
dCldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9u
czo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVU
aHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFn
Pih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5
VG9OYXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBv
bGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhl
Y3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAg
ICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0
YWlsQ2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdf
anNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2Vw
dGlvbkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0
dXJuRnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRy
PHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZy
b21MTEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFw
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYu
Z2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRo
dW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9
IGVudHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFH
X1RIVU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0Nv
ZGVSZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0
cnVjdCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9w
ZXJhdGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRh
Z0NvZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1
bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBc
CisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExM
SW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUjI190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6
Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNf
dW50YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdl
dCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1
bnRhZ0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdo
aWxlICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRB
R19USFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0
ZTI3MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMx
ZmVhMjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0y
MDQsNiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5j
dGlvblB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7Cisj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcu
bGxpbnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bj
b2RlV2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19P
UENPREVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVt
T3Bjb2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRP
cGNvZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltu
dW1PcGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRy
KFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFn
Q29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNz
KTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7
CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdp
ZGUxNihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJU
YWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0
clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdp
ZGUzMkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAg
ICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOwor
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lO
TElORSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkK
K3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50
Q29kZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNl
bHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisK
K3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZD
b2RlRnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1T
VkMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2Rl
UHRyPHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNv
ZGVJRCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxh
dGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5j
dGlvblB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFn
PihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50
ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vs
c2UKIEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2
ZDI0OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uN2ZjYzlhMTg0YzgwMWM0YmI4
ZmNiYWJmOGQ4MzBkMTQxOGY0ZGRkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9p
ZCBqc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpz
VHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMi
IHZvaWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQp
OworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGlu
ZShQdHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29k
ZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOwor
fQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxv
Y2stPnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lk
IHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3Rh
dGljIERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShl
bnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSks
IGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3
IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRD
b2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBE
aXJlY3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9y
Q29uc3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5j
dGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRl
cnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAg
ICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
KSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMg
dm9pZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMg
TmF0aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9s
aW5lKGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OworI2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8
SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VS
ZWYoKmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJv
Z3JhbUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJ
VENvZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
ICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1Ry
YW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRy
aW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNl
bHNlCiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50
cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRo
dW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hh
cmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVm
KCpqaXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVs
ZVByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRp
dmVKSVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUo
anNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29k
ZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5
cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNo
YXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzIgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVF
bnRyeXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAg
IHJldHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0
dXJuX3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4o
bGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBv
aW50KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAg
ICAgICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQo
T3Bjb2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVz
ZUpJVCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29k
ZVNpemU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6
OldpZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6
OldpZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CiB9CiAKIHZvaWQgc2V0
RW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAppbmRleCA0M2ViMjg2NDA4NjU3ODU2ZDBiOWIxZDJk
YTc2MWM4NDg0MWRiZmQ4Li4yNWVlODIzYWU5Y2JjZWFlYTVjZGQ5NThiYzgyYjRlOThiODQ3Yjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgor
I2luY2x1ZGUgIk9wY29kZVNpemUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQxLDUgKzQy
LDcgQEAgdm9pZCBzZXRFbnRyeXBvaW50KENvZGVCbG9jayopOwogdW5zaWduZWQgZnJhbWVSZWdp
c3RlckNvdW50Rm9yKENvZGVCbG9jayopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUVudHJ5cG9pbnQoKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVu
dHJ5cG9pbnQoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmlj
UmV0dXJuUG9pbnRFbnRyeXBvaW50KE9wY29kZVNpemUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IGJiYTEyMGE3YzU1ODU4ZjM3N2U3OWJiNDI5ZjU5ZDc5OGUxNjM0ZGEuLmM3NmM5
ODVkY2JlNTNkOTI3MTJhYmExNjJiNmJkZGU3ODI5OTQyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGlu
bGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKSB7IHJldHVyCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJ
TlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJhbWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwK
LSAgICBMTElOVF9SRVRVUk5fVFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgU2xvd1Bh
dGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgKGNhbGxGcmFtZSkpCisgICAgTExJTlRfUkVUVVJOX1RX
TygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0clRhZz4oY2Fs
bFRhcmdldCkpLCAoY2FsbEZyYW1lKSkKIAogI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGdsb2Jh
bE9iamVjdCwgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBfX2N0X2dsb2JhbE9iamVjdCA9IChnbG9iYWxPYmplY3QpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00NjcsNyArNDY3LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bS5n
ZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIocGMpOwogICAgICAgICAqcHRyICs9IGNvZGVCbG9j
ay0+bGxpbnRFeGVjdXRlQ291bnRlcigpLm1fYWN0aXZlVGhyZXNob2xkOwogICAgICAgICBpZiAo
KnB0ciA+PSBPcHRpb25zOjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSkKLSAg
ICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRh
Zz4oZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgY2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOworICAgICAgICAgICAgTExJTlRfUkVUVVJOX1RX
TyhMTEludDo6ZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKICAgICB9CiAg
ICAgCiAgICAgCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cDxPcENvbnN0
cnVjdFZhcmFyZ3M+KGNhbGxGcmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3QsIFNldEFyZ3VtZW50
c1dpdGg6Ok9iamVjdCk7CiB9CiAKLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2Fs
bEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQoraW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0
dXJuUG9pbnQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcENhbGxFdmFsPigpOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24KICAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJh
bWUoY2FsbEZyYW1lKTsKICAgICBjYWxsZWVGcmFtZS0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgPSBjYWxsZWVBc1ZhbHVlOwotICAgIGNhbGxlZUZy
YW1lLT5zZXRSZXR1cm5QQyhyZXR1cm5Qb2ludC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBj
YWxsZWVGcmFtZS0+c2V0UmV0dXJuUEMocmV0dXJuUG9pbnQuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDb2RlQmxvY2sobnVsbHB0cik7CiAgICAgY2Fs
bEZyYW1lLT5zZXRDdXJyZW50VlBDKHBjKTsKICAgICAKQEAgLTE5NzAsMTcgKzE5NzAsMTcgQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAgICAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jYWxsX2V2YWwpCiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwg
cGMsIExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50
OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KE9wY29kZVNpemU6Ok5hcnJvdykpOwogfQog
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsX3dpZGUxNikKIHsKLSAg
ICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUxNkNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBy
ZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Q
b2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZTo6V2lkZTE2KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWxfd2lkZTMyKQogewotICAgIHJldHVybiBjb21tb25D
YWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIHJldHVybiBjb21tb25DYWxs
RXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludChP
cGNvZGVTaXplOjpXaWRlMzIpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3N0cmNhdCkKQEAgLTIyNjUsOCArMjI2NSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihUaHJvd1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrCiAK
ICAgICBpZiAoT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspIHsKICAgICAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIG5leHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKLSAgICAgICAgYXV0byBuZXh0Qnl0
ZWNvZGUgPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPigqcGMubmV4dCgpLnB0cigp
KTsKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIG5leHRCeXRlY29kZS5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExM
SW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkucmV0YWdnZWRDb2RlPEpTRW50cnlQ
dHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDc4NTM2
MGY0ODc2MDcxYWZkNjRhZDFjZmUxYmE4YmVhODM4YWIzZDIuLmE2MTYyNWRhODk0ZjQ5OGU5NDBi
ZWMxNDUyYzVlOWU2ZTk1ZjI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcApAQCAtNDAsNiArNDAsMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBF
TkFCTEUoSklUKQogCisjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKyNkZWZp
bmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obmFtZSkgXAorICAgIEpTQ19BTk5P
VEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNuYW1lLCBuYW1lKQorCisjZGVmaW5lIEpT
Q19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OX1dJVEhfREVDTEFSRShuYW1lKSBcCisgICAg
ZXh0ZXJuICJDIiB2b2lkIG5hbWUodm9pZCk7IFwKKyAgICBKU0NfQU5OT1RBVEVfSklUX09QRVJB
VElPTihfSklUVGFyZ2V0XyMjbmFtZSwgbmFtZSkKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKK0pT
Q19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGppdENhZ2VQdHJHYXRlQWZ0ZXIpOworI2Vu
ZGlmCitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9KYXZhU2NyaXB0
KTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb05hdGl2ZSk7CitK
U0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFm
dGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb05hdGl2ZUdh
dGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElO
VF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0
ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVf
TExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrVGFnR2F0ZUFmdGVyKTsKKworI2VuZGlmCisKIG5hbWVzcGFjZSBMTEludCB7CiAKIC8vIFRo
ZXNlIHRodW5rcyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgbmVhckNhbGwgdXNlZCBvbiBKSVRl
ZCBjb2RlLgpAQCAtNTIsNyArNzQsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRh
Zz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwogewogICAg
IEpTSW50ZXJmYWNlSklUIGppdDsKIAotICAgIGFzc2VydElzVGFnZ2VkV2l0aDxKU0VudHJ5UHRy
VGFnPih0YXJnZXQpOworICAgIGFzc2VydElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRh
cmdldCk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdp
c3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNj
cmF0Y2hHUFJzWzBdOwpAQCAtNjAsMTYgKzgyLDUzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25z
CiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6
cmVnVDA7CiAjZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0
cih0YXJnZXQpLCBzY3JhdGNoKTsKLSAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBKU0VudHJ5UHRy
VGFnKTsKKyAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHByb2xvZ3VlIHRodW5r
IiwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFn
LCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFn
Pgogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7Ci0gICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxKU0VudHJ5UHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRh
Zz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1Byb2xvZ3VlKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQpCit7
CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgTExJbnRDb2RlIHRhcmdldCA9IExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCk7CisgICAgYXNz
ZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKKworI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKKyAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdhc206
Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CisjZWxzZQor
ICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwOworI2VuZGlmCisgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBqaXQubW92ZShK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBzY3JhdGNoKTsKKyAgICBqaXQu
ZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIGp1bXAgdG8gcHJvbG9ndWUgdGh1bmsiLCB0aHVu
a0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQoTExJbnRDb2Rl
IHRhcmdldCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIEpTSW50ZXJmYWNlSklUIGpp
dDsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOworICAg
IGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBPcGVyYXRp
b25QdHJUYWcpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAl
cyByZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvUmV0dXJuUG9pbnQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2lu
ZCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDx0YWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCksIHRo
dW5rS2luZCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5j
dGlvbkZvckNhbGxFbnRyeVRodW5rKCkKQEAgLTc3LDcgKzEzNiw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC04Nyw3ICsxNDYsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIp
KTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9s
b2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
LCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJl
ZjsKIH0KQEAgLTk3LDcgKzE1Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVm
OwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBj
YWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9
CkBAIC0xMDcsNyArMTY2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJl
ZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3Vl
PEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ss
ICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMTcsNyArMTc2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJl
ZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsK
KyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1
ZTxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsKICAgICB9KTsK
ICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEyNyw3ICsxODYsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJw
cm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9n
cmFtIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTM3LDcgKzE5Niw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50
cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxp
bnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5
UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikp
OwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTQ5LDkgKzIwOCw5IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVu
aygpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgaWYgKFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMo
KSkKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
PEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNh
bGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKSVRUaHVu
a1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2Fs
bCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTIxNyw3ICsyNzYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0
Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVm
OwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRD
b2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7Cisg
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1
cm4gY29kZVJlZjsKICAgICB9CkBAIC0yMjUsNyArMjg0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBz
aXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
bzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRy
PEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BfY2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBj
b2RlUmVmOwogICAgIH0KQEAgLTIzMyw3ICsyOTIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUp
CiAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8SlNF
bnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gzMiIpKTsKKyAgICAgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9j
YXRjaCksICJvcF9jYXRjaDMyIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVS
ZWY7CiAgICAgfQpAQCAtMjQyLDYgKzMwMSwyODcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQog
ICAgIHJldHVybiB7IH07CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhPcGNvZGVTaXplIHNpemUpCit7CisgICAgc3dpdGNo
IChzaXplKSB7CisgICAgY2FzZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsKKyAgICAgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+
IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQiKSk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpX
aWRlMTY6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1
cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQxNiIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBjb2RlUmVm
OworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjogeworICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4g
Y29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExM
SW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDMyIikpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIH0KK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxv
b3BIaW50VGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAg
ICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJU
YWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsICJmdXp6ZXJfcmV0dXJuX2Vh
cmx5X2Zyb21fbG9vcF9oaW50IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQor
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFn
LCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQu
Y2FsbChHUFJJbmZvOjpyZWdUMywgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1
bmsiLCBuYW1lKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25z
dCBjaGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuY2FsbChH
UFJJbmZvOjp3YXNtU2NyYXRjaEdQUjAsIHRhZyk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEpOworICAg
IGppdC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSwgT3BlcmF0aW9uUHRyVGFnKTsK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJMTEludCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2FsbEdhdGUoUHRy
VGFnIHRhZykKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LnVudGFnUHRyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuZmFySnVt
cChHUFJJbmZvOjpyZWdUMCwgdGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCB0YWlsIGNhbGwgZ2F0ZSB0aHVuayIpOwor
fQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NS
RW50cnlHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJsb29wIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlP
U1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC51bnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBKU0VudHJ5UHRyVGFnKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZW50cnkgT1NSIGVudHJ5IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKQor
eworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAg
ICAgIGppdC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMCwgV2FzbUVudHJ5UHRyVGFn
KTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAid2FzbSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7
CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKQoreworICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKKworICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMCwgRXhjZXB0aW9uSGFuZGxl
clB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImV4Y2VwdGlvbiBoYW5kbGVyIHRodW5rIikp
OworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKKworICAgICAgICBqaXQucmV0KCk7CisKKyAgICAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInJl
dHVybkZyb21MTEludCB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRo
dW5rKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDMs
IEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0LnN0b3JlUHRyKEFSTTY0UmVnaXN0ZXJzOjps
ciwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCA4KSk7
CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJ
bmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0
clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnLCAidGFnIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKKworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgOCksIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAg
aml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnVudGFnUHRyKEdQUkluZm86
OnJlZ1QzLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1w
KEdQUkluZm86OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInVudGFnIHRodW5rIik7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJU
aHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAg
ICAgICBDQ2FsbEhlbHBlcnMgaml0OworICAgICAgICBKU0NfSklUX0NBR0VfQ09NUElMRShqaXQp
OworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnLCAiaml0Q2FnZVB0ciB0aHVuayIpKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gY29kZVJlZjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1
bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0
clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsICJub3JtYWxfb3NyX2V4aXRfdHJhbXBv
bGluZSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworI2lmIEVO
QUJMRShERkdfSklUKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hl
Y2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFt
cG9saW5lLCAiY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAgIH0p
OworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhp
dFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmso
KQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRh
Zz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lLCAiY2hl
Y2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lIHRodW5rIikpOwor
ICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
T1NSRXhpdFB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhPcGNvZGVJRCBvcGNvZGVJRCwgT3Bj
b2RlU2l6ZSBzaXplKQoreworI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgXAor
ICAgIGNhc2UgbmFtZSMjX3JldHVybl9sb2NhdGlvbjogeyBcCisgICAgICAgIHN3aXRjaCAoc2l6
ZSkgeyBcCisgICAgICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7IFwKKyAgICAgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQ
dHJUYWc+PiBjb2RlUmVmOyBcCisgICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsgXAorICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAg
ICAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0
dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25hbWUgIl9yZXR1cm5fbG9jYXRp
b24gdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4gY29k
ZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsg
XAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29k
ZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiksICAj
bmFtZSAiX3JldHVybl9sb2NhdGlvbjE2IHRodW5rIikpOyBcCisgICAgICAgICAgICB9KTsgXAor
ICAgICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2Ug
T3Bjb2RlU2l6ZTo6V2lkZTMyOiB7IFwKKyAgICAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOyBcCisg
ICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsgXAorICAgICAgICAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUj
I19yZXR1cm5fbG9jYXRpb24pLCAjbmFtZSAiX3JldHVybl9sb2NhdGlvbjMyIHRodW5rIikpOyBc
CisgICAgICAgICAgICB9KTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAg
ICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICByZXR1cm4geyB9OyBcCisgICAgfQorCisgICAg
c3dpdGNoIChvcGNvZGVJRCkgeworICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKQor
ICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKQorICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElP
TihvcF9jb25zdHJ1Y3QpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGxfdmFyYXJn
c19zbG93KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3RfdmFyYXJnc19z
bG93KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfaWQpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2dldF9ieV92YWwpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX3B1dF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkK
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIExM
SW50CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaAppbmRleCAwMzY4Y2U5YTJkYTA2MDRmNDM3MjQ1MmVlMTJmODdjNGU2Mzhk
YjBkLi5hOTIyYjI1OTliOWM2Mzk0OWI1NWIzYTE0ZjViNzZjNWViNWU2MWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNDAsNiArNDAsMjIgQEAgZXh0
ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvTmF0aXZlKHZvaWQqLCBWTSos
IFByb3RvQ2FsbEZyYW1lKik7CiB9CiAKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFU
SU9OKQorZXh0ZXJuICJDIiB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIHZvaWQgaml0Q2Fn
ZVB0ckdhdGVBZnRlcih2b2lkKTsKKyNlbmRpZgorCisgICAgdm9pZCB2bUVudHJ5VG9KYXZhU2Ny
aXB0R2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKHZv
aWQpOworCisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFn
R2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZvaWQpOworfQor
I2VuZGlmCisKIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9XYXNtKHZvaWQqIGNvZGUs
IFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIGZyYW1lKQogewogICAgIGF1dG8gY2xvYmJlcml6ZVZh
bGlkYXRvciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKQEAgLTU5LDExICs3NSwzMiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVudHJ5VGh1bmsoKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBwcm9ncmFtRW50cnlUaHVuaygpOwogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCk7
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJp
Y1JldHVyblBvaW50VGh1bmsoT3Bjb2RlU2l6ZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpOwogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3dUaHVu
aygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRs
ZVVuY2F1Z2h0RXhjZXB0aW9uVGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUpOwogCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBqaXRDYWdlUHRyVGh1bmsoKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZUpTR2F0
ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVdhc21HYXRlVGh1bmsodm9pZCosIFB0clRh
ZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlVGFpbENhbGxHYXRlKFB0clRhZyk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NSRW50cnlHYXRlVGh1bmsoKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGVudHJ5T1NSRW50cnlHYXRlVGh1
bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHdhc21P
U1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gcmV0dXJuRnJvbUxMSW50R2F0ZVRodW5rKCk7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB1bnRhZ0dhdGVUaHVu
ayh2b2lkKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0
YWdHYXRlVGh1bmsodm9pZCopOworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRh
Zz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOworI2lmIEVOQUJMRShERkdfSklUKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0VHJh
bXBvbGluZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hl
Y2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1cm5Mb2NhdGlvblRodW5rKE9wY29kZUlE
LCBPcGNvZGVTaXplKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCk7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDllM2NkZTk5MDRjMTAy
YmVlZWY0N2IxNGYzNWZmNjk1MTY5ZmE5N2YuLjQ1MjIwZDNmZWVkZjg3YzdhYmU3ZjM4ZGMyOTY1
NzQ5YTIwY2M5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1Niw5ICsyNTYsMTIgQEAgY29uc3QgQXJpdGhQcm9m
aWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
TnVtYmVyTnUKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRyVGFn
CiBjb25zdCBKU0VudHJ5UHRyVGFnID0gY29uc3RleHByIEpTRW50cnlQdHJUYWcKIGNvbnN0IEhv
c3RGdW5jdGlvblB0clRhZyA9IGNvbnN0ZXhwciBIb3N0RnVuY3Rpb25QdHJUYWcKK2NvbnN0IEpT
RW50cnlTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKK2Nv
bnN0IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyA9IGNvbnN0ZXhwciBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcKIGNvbnN0IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcgPSBjb25zdGV4cHIgRXhjZXB0aW9uSGFu
ZGxlclB0clRhZworY29uc3QgWWFyckVudHJ5UHRyVGFnID0gY29uc3RleHByIFlhcnJFbnRyeVB0
clRhZwogY29uc3QgTm9QdHJUYWcgPSBjb25zdGV4cHIgTm9QdHJUYWcKLWNvbnN0IFNsb3dQYXRo
UHRyVGFnID0gY29uc3RleHByIFNsb3dQYXRoUHRyVGFnCisgCiAKICMgU29tZSByZWdpc3RlciBj
b252ZW50aW9ucy4KICMgLSBXZSB1c2UgYSBwYWlyIG9mIHJlZ2lzdGVycyB0byByZXByZXNlbnQg
dGhlIFBDOiBvbmUgcmVnaXN0ZXIgZm9yIHRoZQpAQCAtMTAyNiw3ICsxMDI5LDcgQEAgbWFjcm8g
dHJhY2VFeGVjdXRpb24oKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRlZmluZU9TUkV4aXRSZXR1
cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorbWFjcm8gZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2Rl
TmFtZSwgc2l6ZSkKICAgICBtYWNybyBkZWZpbmVOYXJyb3coKQogICAgICAgICBpZiBub3QgQ19M
T09QX1dJTgogICAgICAgICAgICAgXyVvcGNvZGVOYW1lJV9yZXR1cm5fbG9jYXRpb246CkBAIC0x
MDQ4LDMyICsxMDUxLDc2IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVO
YW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdp
ZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAoraWYgQVJNNjRFCisgICAgZ2xvYmFsIF9s
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyCisgICAgZ2xv
YmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcgorICAg
IGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFnR2F0
ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrVGFnR2F0ZUFmdGVyCitlbmQKKwogbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQorICAgIG1hY3JvIGxhYmVsTmFycm93
KCkKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgorICAgIGVuZAorCisgICAg
bWFjcm8gbGFiZWxXaWRlMTYoKQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
d2lkZTE2OgorICAgIGVuZAorCisgICAgbWFjcm8gbGFiZWxXaWRlMzIoKQorICAgICAgICBfanNf
dHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgIGVuZAorCiAgICAgaWYgQ19MT09Q
IG9yIENfTE9PUF9XSU4KKyAgICAgICAgc2l6ZShsYWJlbE5hcnJvdywgbGFiZWxXaWRlMTYsIGxh
YmVsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCiAgICAgICAgIGNsb29wQ2FsbEpTRnVu
Y3Rpb24gY2FsbGVlCisgICAgZWxzaWYgQVJNNjRFCisgICAgICAgIG1hY3JvIGNhbGxOYXJyb3co
KQorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJTaXpl
LCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQ
dHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAg
ICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gY2Fs
bFdpZGUxNigpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dp
ZGUxNikgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0
ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVO
YW1lJV93aWRlMTY6CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVu
ZAorCisgICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQorICAgICAgICAgICAgbGVhcCBKU0NDb25m
aWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHBy
IEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGpt
cCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBf
anNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgY2FsbCB0Mywg
Y2FsbFB0clRhZworICAgICAgICBlbmQKKworICAgICAgICBtb3ZlIGNhbGxlZSwgdDMKKyAgICAg
ICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBn
ZW4oKSBlbmQpCiAgICAgZWxzZQorICAgICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJlbFdpZGUx
NiwgbGFiZWxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKICAgICAgICAgY2FsbCBjYWxs
ZWUsIGNhbGxQdHJUYWcKKyAgICAgICAgaWYgQVJNdjcgb3IgTUlQUworICAgICAgICAgICAgIyBJ
dCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZp
bml0aW9ucworICAgICAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMg
YSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisgICAgICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJ
bnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAorICAgICAgICAgICAgIyBjcmFz
aGVzLgorICAgICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgICAg
ICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCisgICAgICAgIGVuZAogICAgIGVuZAot
Ci0gICAgaWYgQVJNdjcgb3IgTUlQUwotICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3
IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCi0gICAgICAgICMgZm9y
IHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9mIGluc3RydWN0aW9ucwotICAg
ICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5l
eHBlY3RlZAotICAgICAgICAjIGNyYXNoZXMuCi0gICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJB
ZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCi0gICAgZW5k
Ci0gICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgZGVm
aW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVy
QWZ0ZXJDYWxsKCkKICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiBlbmQKIAotbWFj
cm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2Fs
bFB0clRhZykKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1w
MiwgdGVtcDMsIHRlbXA0LCBjYWxsUHRyVGFnKQogICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUsIHNwCiBlbmQKIAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZQotbWFjcm8gcHJlcGFy
ZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKK21h
Y3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
LCBjYWxsUHRyVGFnKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0
ZW1wMgpAQCAtMTEwOSw4ICsxMTU2LDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIGlmIEFS
TTY0RQotICAgICAgICBhZGRwIDE2LCBjZnIsIHRlbXAzCi0gICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyB0ZW1wMworICAgICAgICBhZGRwIDE2LCBjZnIsIHRlbXA0CiAgICAgZW5kCiAKICAgICBz
dWJwIHRlbXAyLCB0ZW1wMQpAQCAtMTEzMCw3ICsxMTc2LDE0IEBAIG1hY3JvIHByZXBhcmVGb3JU
YWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgZW5k
CiAKICAgICBtb3ZlIHRlbXAxLCBzcAotICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBp
ZiBBUk02NEUKKyAgICAgICAgbW92ZSB0ZW1wNCwgYTIKKyAgICAgICAgbW92ZSBjYWxsZWUsIGEw
CisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25m
aWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp0YWlsQ2FsbCVjYWxsUHRyVGFnJSkgKiBQdHJT
aXplLCBhMQorICAgICAgICBqbXAgW2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgJWNhbGxQ
dHJUYWclCisgICAgZWxzZQorICAgICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCisgICAgZW5k
CiBlbmQKIAogbWFjcm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKQEAgLTExNDQsMTYg
KzExOTcsMTYgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxl
ZSwgY2FsbGVlRnJhbWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9u
dFVwZGF0ZVNQCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAg
ICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKKyAgICAg
ICAgICAgIHByZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlTbG93UGF0
aFB0clRhZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRG
dW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRy
VGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIGNhbGxlZSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBl
bmQKIAogbWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkK
ICAgICBjcmFzaCgpICMgV2UgZG9uJ3QgcmVhY2ggdGhpcyBpbiBzdHJhaWdodCBsaW5lIGNvZGUu
IFdlIG9ubHkgcmVhY2ggaXQgdmlhIHJldHVybmluZyB0byB0aGUgY29kZSBiZWxvdyB3aGVuIHJl
Y29uc3RydWN0aW5nIHN0YWNrIGZyYW1lcyBkdXJpbmcgT1NSIGV4aXQuCiAKLSAgICBkZWZpbmVP
U1JFeGl0UmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQorICAgIGRlZmluZVJldHVybkxhYmVsKG9w
TmFtZSwgc2l6ZSkKIAogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGxv
YWRpIExMSW50UmV0dXJuUENbY2ZyXSwgUEMKQEAgLTEzNTEsNyArMTQwNCw2IEBAIGVuZAogIyBp
biB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCiBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xv
d1BhdGgpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRD
RlIoKQogCiAgICAgaWYgVFJBQ0lORwpAQCAtMTM3OSwxNiArMTQzMSwyNSBAQCBtYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNl
U2xvd1BhdGgpCiAgICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCiAgICAgICAgIG1vdmUgY2ZyLCBz
cCAjIHJlc3RvcmUgdGhlIHByZXZpb3VzIHNwCiAgICAgICAgICMgcG9wIHRoZSBjYWxsZXJGcmFt
ZSBzaW5jZSB3ZSB3aWxsIGp1bXAgdG8gYSBmdW5jdGlvbiB0aGF0IHdhbnRzIHRvIHNhdmUgaXQK
LSAgICAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCisgICAgICAgIGlmIEFSTTY0CisgICAgICAgICAg
ICBwb3AgbHIsIGNmcgorICAgICAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgICAgICMgdW50YWdS
ZXR1cm5BZGRyZXNzIHdpbGwgYmUgcGVyZm9ybWVkIGluIEdhdGU6OmVudHJ5T1NSRW50cnkuCiAg
ICAgICAgICAgICBwb3AgbHIsIGNmcgotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNw
CiAgICAgICAgIGVsc2lmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAg
ICAgICAgIHBvcCBscgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAg
IGVuZAotICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKworICAgICAgICBpZiBBUk02NEUK
KyAgICAgICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
ZW50cnlPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIC5yZWNvdmVyOgogICAg
ICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CkBAIC0x
NDk0LDcgKzE1NTUsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxl
ZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0
CisgICAgaWYgQVJNNjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJ
bnQpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRh
ZworICAgIGVsc2UKKyAgICAgICAgcmV0CisgICAgZW5kCiBlbmQKIAogIyBUaGlzIGJyZWFrIGlu
c3RydWN0aW9uIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBzeW50aGVzaXplZCBsbGludFBDUmFuZ2VT
dGFydCBsYWJlbApAQCAtMTUyNSw2ICsxNTkxLDE3IEBAIGVsc2UKIGVuZAogICAgIGRvVk1FbnRy
eShtYWtlSG9zdEZ1bmN0aW9uQ2FsbCkKIAorZ2xvYmFsIF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIK
K2dsb2JhbCBfdm1FbnRyeVRvWWFyckpJVAorX3ZtRW50cnlUb1lhcnJKSVQ6CisgICAgZnVuY3Rp
b25Qcm9sb2d1ZSgpCitpZiBBUk02NCBvciBBUk02NEUKKyAgICBqbXAgdDUsIFlhcnJFbnRyeVB0
clRhZworICAgIF92bUVudHJ5VG9ZYXJySklUQWZ0ZXI6CitlbmQKKyAgICBmdW5jdGlvbkVwaWxv
Z3VlKCkKKyAgICByZXQKKwogCiBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICMg
dm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1JbXBsKFZNKiB2bSkKQEAgLTE1NzAsNiArMTY0Nyw3MSBA
QCBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICByZXQKIGVuZAogCitpZiBB
Uk02NEUKKyAgICAjIHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0cl90IHRh
ZykKKyAgICBlbWl0ICIuZ2xvYmwgX2ppdENhZ2VQdHIiCisgICAgZW1pdCAiX2ppdENhZ2VQdHI6
IgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsg
Y29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRl
OjpqaXRDYWdlUHRyKSAqIFB0clNpemUsIHQyCisgICAgICAgIGptcCBbdDJdLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcKKyAgICAgICAgZ2xvYmFsIF9qaXRDYWdlUHRyR2F0ZUFmdGVyCisgICAgICAg
IF9qaXRDYWdlUHRyR2F0ZUFmdGVyOgorICAgICAgICByZXQKKworICAgIGdsb2JhbCBfdGFpbENh
bGxKU0VudHJ5VHJhbXBvbGluZQorICAgIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lOgorICAg
ICAgICB1bnRhZ1JldHVybkFkZHJlc3MgYTIKKyAgICAgICAgam1wIGEwLCBKU0VudHJ5UHRyVGFn
CisKKyAgICBnbG9iYWwgX3RhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZQorICAgIF90
YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyBhMgorICAgICAgICBqbXAgYTAsIEpTRW50cnlTbG93UGF0aFB0clRhZworCisgICAgZ2xv
YmFsIF9leGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZQorICAgIF9leGNlcHRpb25IYW5kbGVyVHJh
bXBvbGluZToKKyAgICAgICAgam1wIGEwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisKKyAgICBn
bG9iYWwgX3JldHVybkZyb21MTEludFRyYW1wb2xpbmUKKyAgICBfcmV0dXJuRnJvbUxMSW50VHJh
bXBvbGluZToKKyAgICAgICAgcmV0CisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZVByb2dyYW1Q
cm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVQcm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1Jl
dHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlCisKKyAg
ICBnbG9iYWwgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZQorICAgIF9qc1RyYW1w
b2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AK
KyAgICAgICAgam1wIF9sbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZQorCisgICAgZ2xvYmFs
IF9qc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRXZhbFByb2xvZ3Vl
OgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZXZhbF9w
cm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1
ZQorICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZToKKyAgICAgICAgdGFn
UmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJv
bG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZToKKyAg
ICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAg
ICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrCisKKyAgICBnbG9iYWwg
X2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlCisgICAg
X2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlOgorICAg
ICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaworZW5kCisKIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAg
ICAgIyBEdW1teSBlbnRyeSBwb2ludCB0aGUgQyBMb29wIHVzZXMgdG8gaW5pdGlhbGl6ZS4KICAg
ICBfbGxpbnRfZW50cnk6CkBAIC0xNzI0LDIxICsxODY2LDMwIEBAIGVuZCkKIAogb3AobGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiAgICAgcHJvbG9ndWUoZnVu
Y3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xs
aW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2Vf
YXJpdHlDaGVja19mb3JfY2FsbCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9y
Q2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5
Q2hlY2sobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNh
bGxCZWdpbiwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVn
aW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQp
CiAKLQogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8g
KCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQot
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ29uc3RydWN0
QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2go
MCkKIGVuZCkKIAorIyBOZWVkIHRoZXNlIHN0dWIgbGFiZWxzIHRvIG1ha2UganNfdHJhbXBvbGlu
ZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZyBldGMuIExMSW50IGhl
bHBlciBvcGNvZGVzLgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2tfdW50YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6CitfanNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnX3dpZGUx
NjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2tfdW50YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja190YWdfd2lkZTMyOgorICAgIGNyYXNoKCkKIAog
IyBWYWx1ZS1yZXByZXNlbnRhdGlvbi1zcGVjaWZpYyBjb2RlLgogaWYgSlNWQUxVRTY0CkBAIC0y
MTA5LDcgKzIyNjAsNyBAQCBlbmQpCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAorICAgICAgICBv
cF9jYWxsX2V2YWwsCiAgICAgICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAg
ICAgbWFjcm8gKCkgZGlzcGF0Y2hPcChuYXJyb3csIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjEx
OCw3ICsyMjY5LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKIAogX2xsaW50X29wX2NhbGxfZXZh
bF93aWRlMTY6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2
YWxfd2lkZTE2LAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUxNiwKICAgICAg
ICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMTYsIG9wX2Nh
bGxfZXZhbCkgZW5kLApAQCAtMjEyNyw3ICsyMjc4LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93
aWRlMTY6CiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogICAgIHNsb3dQYXRoRm9yQ29t
bW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKKyAgICAgICAgb3BfY2FsbF9l
dmFsLAogICAgICAgICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3Jv
ICgpIGRpc3BhdGNoT3Aod2lkZTMyLCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIyMTIsNyArMjM2
MywxMyBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xp
bmUsIG1hY3JvICgpCiAKICAgICAgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCiAgICAgICAg
IGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
KQotICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgaWYgQVJNNjRFCisgICAg
ICAgICAgICBtb3ZlIHIxLCBhMAorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BP
U1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1w
IHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgbm90U3Vw
cG9ydGVkKCkKICAgICBlbmQKQEAgLTIyMjksMTIgKzIzODYsMjMgQEAgb3AoY2hlY2twb2ludF9v
c3JfZXhpdF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICAgICBjQ2FsbDIoX2xsaW50X3Nsb3df
cGF0aF9jaGVja3BvaW50X29zcl9leGl0KQogICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxs
KCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRo
X3RyYW1wb2xpbmUpCi0gICAgICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBpZiBB
Uk02NEUKKyAgICAgICAgICAgIG1vdmUgcjEsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZp
ZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIg
R2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAg
ICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVuZAogZW5kKQogCitvcChub3JtYWxfb3NyX2V4aXRf
dHJhbXBvbGluZSwgbWFjcm8gKCkKKyAgICBkaXNwYXRjaCgwKQorZW5kKQorCisKICMgTGFzdGx5
LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0
IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVz
aW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAogIyBhcyBtdWNoLgpAQCAtMjI3OSw0
ICsyNDQ3LDE4IEBAIG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAoKQog
ICAgIGNyYXNoKCkKIGVuZCkKIAorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6Citfd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9p
bmRpcmVjdDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsX25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93
aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTE2
OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93
YXNtX2NhbGxfbm9fdGxzX3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193
aWRlMzI6CisgICAgY3Jhc2goKQorCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNjI2YTQ2ODE3
YjE1M2IzZDU0NjQ3YzNkODJjMWI0NzQ5ZmU2MjY4NC4uYmU1NjE0OWYxYTU0ZjM2ZTI3ZTcxZjk2
Njk4YWE0MjdiNjYzMjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY4Niw3ICs2ODYsNyBAQCBl
bmQKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKIAogIyBFeHBlY3RzIHRoYXQg
Q29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGlu
ZC4KLW1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8g
ZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQw
CiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVs
CiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQpAQCAtNzI0LDYgKzcyNCw3IEBAIG1hY3JvIGZ1
bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGJ0aXogdDEsIC5jb250
aW51ZQogCiAubm9FeHRyYVNsb3Q6CisgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3Vu
dGFnOgogICAgIC8vIE1vdmUgZnJhbWUgdXAgdDEgc2xvdHMKICAgICBuZWdpIHQxCiAgICAgbW92
ZSBjZnIsIHQzCkBAIC03NTAsNiArNzUxLDcgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRv
bmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxLCA4XQog
ICAgIGFkZHAgOCwgdDMKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKKyAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgogCiAuY29udGludWU6CiAgICAgIyBSZWxvYWQgQ29k
ZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgaXQuCkBAIC0yMTE1
LDcgKzIxMTcsNyBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogICAgIHN0b3JlaSB0MiwgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgIHN0b3JlaSBD
ZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgbW92ZSB0Mywgc3AKLSAgICBwcmVw
YXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIHByZXBhcmVD
YWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRyVGFnKQogICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcp
CiAKIC5vcENhbGxTbG93OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhYTE1NzIzYzY0MGYyZDc3ZWE4YTdmZTg4
YTk4YmFlYTg2ZDJiOWI5Li5iZWE3YzU4MWFmZTQyMDYwYWNlM2M5YWIxZTQ4ZGMyZGMwNWMxYmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtMzAwLDE1ICszMDAsMjMgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VD
YWxsKQogICAgIHJldAogZW5kCiAKLQogIyBhMCwgYTIsIHQzLCB0NAogbWFjcm8gbWFrZUphdmFT
Y3JpcHRDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGFkZHAg
MTYsIHNwCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNG
dW5jdGlvbiBlbnRyeQorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBtb3ZlIGVudHJ5LCB0Mwor
ICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCkgKiBQdHJTaXpl
LCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0
clRhZworICAgICAgICBnbG9iYWwgX3ZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lCisgICAg
ICAgIF92bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSlNF
bnRyeVB0clRhZwogICAgIGVsc2UKICAgICAgICAgY2FsbCBlbnRyeSwgSlNFbnRyeVB0clRhZwog
ICAgIGVuZAorICAgIGdsb2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcgorICAgIF92
bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyOgogICAgIHN1YnAgMTYsIHNwCiBlbmQKIApAQCAt
MzI2LDkgKzMzNCwxOCBAQCBtYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9D
YWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICAgICAgc3VicCAzMiwgc3AKICAgICAgICAgY2Fs
bCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgICAgIGFkZHAgMzIsIHNwCisgICAgZWxz
aWYgQVJNNjRFCisgICAgICAgIG1vdmUgdGVtcDEsIHQzCisgICAgICAgIGxlYXAgSlNDQ29uZmln
ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBH
YXRlOjp2bUVudHJ5VG9OYXRpdmUpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgam1wIFthMl0sIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZyAjIEhvc3RGdW5jdGlvblB0clRhZworICAgICAgICBnbG9iYWwg
X3ZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb05hdGl2ZVRyYW1w
b2xpbmU6CisgICAgICAgIGNhbGwgdDMsIEhvc3RGdW5jdGlvblB0clRhZwogICAgIGVsc2UKICAg
ICAgICAgY2FsbCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZW5kCisgICAgZ2xvYmFs
IF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIKKyAgICBfdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVy
OgogZW5kCiAKIG9wKGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24sIG1hY3JvICgpCkBA
IC00MzEsOCArNDQ4LDE0IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAg
ICAgICAgIG1vdmUgUEMsIGExCiAgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyKQog
ICAgICAgICAgICAgYnRweiByMCwgLnJlY292ZXIKKwogICAgICAgICAgICAgbW92ZSByMSwgc3AK
LSAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgaWYgQVJNNjRF
CisgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQdHJT
aXplLCBhMgorICAgICAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcg
IyBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgam1wIHIw
LCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6CiAgICAg
ICAgICAgICBsb2FkUEMoKQogICAgICAgICBlbmQpCkBAIC02NDUsNyArNjY4LDcgQEAgZW5kCiAj
IEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyLgogCiAjIEV4cGVjdHMgdGhhdCBDb2Rl
QmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgot
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCittYWNybyBmdW5j
dGlvbkFyaXR5Q2hlY2sob3Bjb2RlTmFtZSwgZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAg
ICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAg
ICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCkBAIC02ODIsOSArNzA1LDE2IEBAIG1hY3JvIGZ1bmN0
aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogCiAubm9FeHRyYVNsb3Q6CiAgICAg
aWYgQVJNNjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVVbnRhZykg
KiBQdHJTaXplLCB0MworICAgICAgICBqbXAgW3QzXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisg
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKICAgICAgICAgbG9hZHAg
OFtjZnJdLCBscgogICAgICAgICBhZGRwIDE2LCBjZnIsIHQzCiAgICAgICAgIHVudGFnUmV0dXJu
QWRkcmVzcyB0MworICAgICAgICBfJW9wY29kZU5hbWUlVW50YWdHYXRlQWZ0ZXI6CisgICAgZWxz
ZQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CisgICAgICAgIF8l
b3Bjb2RlTmFtZSVVbnRhZ0dhdGVBZnRlcjoKICAgICBlbmQKIAogICAgIC8vIE1vdmUgZnJhbWUg
dXAgdDEgc2xvdHMKQEAgLTcxMiw5ICs3NDIsMTYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNr
KGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYmFkZGlueiAxLCB0MiwgLmZpbGxMb29wCiAKICAg
ICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVRhZykg
KiBQdHJTaXplLCB0MworICAgICAgICBqbXAgW3QzXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisg
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV90YWc6CiAgICAgICAgIGFkZHAgMTYs
IGNmciwgdDEKICAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyB0MQogICAgICAgICBzdG9yZXAgbHIs
IDhbY2ZyXQorICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVyOgorICAgIGVsc2UKKyAg
ICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKKyAgICAgICAgXyVvcGNvZGVO
YW1lJVRhZ0dhdGVBZnRlcjoKICAgICBlbmQKIAogLmNvbnRpbnVlOgpAQCAtMjE3NSw5ICsyMjEy
LDE1IEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3RvcmVQQygpCiAgICAgc3RvcmVp
IHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAg
bW92ZSB0Mywgc3AKLSAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5
UHRyVGFnKQotICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIEpTRW50cnlQdHJUYWcpCi0KKyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgdDAKKyAgICAgICAgcHJlcGFyZUNhbGwodDAsIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5
UHRyVGFnKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCB0MCwgSlNFbnRyeVB0clRhZykKKyAgICBlbHNl
CisgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRy
VGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgIGVuZAogLm9wQ2FsbFNsb3c6CiAgICAgc2xvd1Bh
dGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQog
ZW5kCkBAIC0yMjQ1LDcgKzIyODgsNyBAQCBsbGludE9wV2l0aFJldHVybihvcF90b19wcm9wZXJ0
eV9rZXksIE9wVG9Qcm9wZXJ0eUtleSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQog
CiAKLWNvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybygpIGVuZCwgbWFjcm8gKHNpemUpCitj
b21tb25PcChsbGludF9vcF9jYXRjaCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKICAgICAj
IFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUg
KGJlY2F1c2UgdGhlCiAgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBz
ZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KICAgICAjIHRoZSBpbnRlcnByZXRlcidz
IHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCkBAIC0yMzEw
LDcgKzIzNTMsMTMgQEAgb3AobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwg
bWFjcm8gKCkKICAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93
aW5nIHByb3RvY29sLgogICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQogICAgIGNvbnZlcnRDYWxs
ZWVUb1ZNKHQxKQotICAgIGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBFeGNl
cHRpb25IYW5kbGVyUHRyVGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIGxvYWRwIFZNOjp0YXJn
ZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29u
c3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpl
eGNlcHRpb25IYW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAg
ICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZworICAgIGVuZAogZW5kKQogCiAKQEAgLTMwMTgsNCArMzA2NywzIEBAIG9wKGZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIG1hY3JvICgpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgZG9SZXR1cm4oKQogZW5kKQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCBiOTMyMjEzNDgzNDJl
OWFhODg4ODMyZDVjN2JhZDE2NjQ3YWNiNDViLi42ZDE1Njk2NDMwNmZmMzRhYmY2NWIxNmU5NWVi
MjM1MjYxNDlkNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2Vi
QXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJs
eS5hc20KQEAgLTEzOSw4ICsxMzksMTIgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xv
Z3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNV
c2VkQnlXYXNtKCkKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgICAg
ICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKLSAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRy
eVB0clRhZworICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6Ondhc21PU1JFbnRyeSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICBq
bXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIFdhc21FbnRyeVB0clRhZworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZworICAg
ICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgIGVuZCkKQEAgLTE1OSw5
ICsxNjMsMTQgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAg
YnRweiByMSwgLnJlY292ZXIKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdh
c20oKQogICAgICAgICAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVu
dGFnUmV0dXJuQWRkcmVzcyBzcAogICAgICAgICAgICAgbW92ZSByMCwgYTAKLSAgICAgICAgICAg
IGptcCByMSwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAg
ICAgICAgICBtb3ZlIHIxLCB3czAKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
d2FzbU9TUkVudHJ5KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVu
ZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKQEAgLTI1Myw3ICsy
NjIsNiBAQCBlbmQKIAogbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1l
IGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgotICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKICAg
ICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5
V2FzbSgpCiAgICAgbG9hZFdhc21JbnN0YW5jZSgpCkBAIC00NTYsNyArNDY0LDEyIEBAIGVuZAog
bWFjcm8gZG9SZXR1cm4oKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAg
IHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0CisgICAgaWYgQVJNNjRFCisgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6ZSwgYTIKKyAgICAg
ICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgIGVsc2UKKyAgICAgICAgcmV0
CisgICAgZW5kCiBlbmQKIAogIyBFbnRyeSBwb2ludApAQCAtNDk3LDcgKzUxMCwxMyBAQCBvcCh3
YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUsIG1hY3JvICgpCiAgICAgbG9hZGkg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCiAgICAg
Y0NhbGw0KF9zbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24pCiAKLSAgICBqbXAgcjAsIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbW92ZSByMCwgYTAK
KyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZp
Z0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRyU2l6ZSwg
YTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCByMCwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZworICAgIGVuZAogZW5kKQogCiAjIERpc2FibGUgd2lkZSB2ZXJzaW9uIG9mIG5hcnJvdy1v
bmx5IG9wY29kZXMKQEAgLTcwNSw3ICs3MjQsMzggQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2Fs
bChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgIGVuZCkKIAog
ICAgICAgICAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKLSAgICAgICAgICAgIGNh
bGwgd3MwLCBTbG93UGF0aFB0clRhZworCisgICAgICAgICAgICBjdHgobWFjcm8ob3Bjb2RlTmFt
ZSwgb3Bjb2RlU3RydWN0LCBzaXplKQorICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxOYXJyb3co
KQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUpICogUHRyU2l6ZSwgd3MxCisgICAgICAg
ICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50
cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAg
ICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgICAgICAgICAgICAgICAg
IGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKwor
ICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMTYoKQorICAgICAgICAgICAgICAgICAgICBp
ZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3Rl
eHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bj
b2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAg
am1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
KyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAs
IEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAg
ICAgICAgbWFjcm8gY2FsbFdpZGUzMigpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93
aWRlMzIpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0s
IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bj
b2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBzaXpl
KGNhbGxOYXJyb3csIGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVu
ZCkKKyAgICAgICAgICAgICAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQor
ICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgd3Mx
CiAgICAgICAgICAgICBsb2FkaSBXYXNtOjpGdW5jdGlvbkNvZGVCbG9jazo6bV9udW1DYWxsZWVM
b2NhbHNbd3MxXSwgd3MxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJi
CmluZGV4IGY5ZTU3MzJmYWYxNGIwODA5YmMyYmI2YzE5YjFjODAyYzU5ZjgzMDIuLmE1YTBiY2Rh
NTQxNGE2ZjBiNmI5ZGJmZGQ0MWQxYzA1YzQwZmI3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC00Myw2ICs0Myw3IEBACiAjICB4MyAgPT4gdDMsIGEz
CiAjICB4NCAgPT4gdDQKICMgIHg1ICA9PiB0NQorIyAgeDYgID0+IHQ2CiAjIHgxMyAgPT4gICAg
ICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE2ICA9PiAgICAgICAgICAgICAgICAgIChzY3Jh
dGNoKQogIyB4MTcgID0+ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVmNWEzMmQ1MTBmYzgwYzA2MzhhMzllZDY1
MWFlZjVhOWQwZmZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dhdGUuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCisj
aWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKworI2RlZmluZSBKU0NfVVRJTElU
WV9HQVRFUyh2KSBcCisgICAgdihqaXRDYWdlUHRyLCBOb1B0clRhZykgXAorICAgIHYodGFpbENh
bGxKU0VudHJ5UHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYodGFpbENhbGxKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcsIE5vUHRyVGFnKSBcCisgICAgdihsb29wT1NSRW50cnksIE5vUHRyVGFnKSBcCisg
ICAgdihlbnRyeU9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYod2FzbU9TUkVudHJ5LCBOb1B0
clRhZykgXAorICAgIHYoZXhjZXB0aW9uSGFuZGxlciwgTm9QdHJUYWcpIFwKKyAgICB2KHJldHVy
bkZyb21MTEludCwgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrVW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVja1RhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisgICAgdih2bUVu
dHJ5VG9KYXZhU2NyaXB0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdih2bUVudHJ5VG9OYXRpdmUs
IEhvc3RGdW5jdGlvblB0clRhZykgXAorCisjZGVmaW5lIEpTQ19KU19HQVRFX09QQ09ERVModikg
XAorICAgIHYob3BfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsLCBK
U0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3QsIEpTRW50cnlQdHJUYWcpIFwKKyAg
ICB2KG9wX2l0ZXJhdG9yX25leHQsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9y
X29wZW4sIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfc2xvdywgSlNFbnRyeVNsb3dQ
YXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRy
VGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3Rfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBc
CisgICAgdihvcF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdihvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwK
KyAgICB2KG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93LCBKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcpIFwKKyAgICB2KG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93
UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF9ldmFsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0
clRhZykgXAorICAgIHYob3BfaXRlcmF0b3JfbmV4dF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX29wZW5fc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSlNDX1dBU01fR0FURV9P
UENPREVTKHYpIFwKKyAgICB2KHdhc21fY2FsbCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdh
c21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2Nh
bGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKworI2Vsc2UKKyNk
ZWZpbmUgSlNDX1dBU01fR0FURV9PUENPREVTKHYpCisjZW5kaWYKKworZW51bSBjbGFzcyBHYXRl
IDogdWludDhfdCB7CisjZGVmaW5lIEpTQ19ERUZJTkVfR0FURV9FTlVNKGdhdGVOYW1lLCB0YWcp
IGdhdGVOYW1lLAorI2RlZmluZSBKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0oZ2F0ZU5hbWUs
IHRhZykgZ2F0ZU5hbWUsIGdhdGVOYW1lIyNfd2lkZTE2LCBnYXRlTmFtZSMjX3dpZGUzMiwKKyAg
ICBKU0NfVVRJTElUWV9HQVRFUyhKU0NfREVGSU5FX0dBVEVfRU5VTSkKKyAgICBKU0NfSlNfR0FU
RV9PUENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkKKyAgICBKU0NfV0FTTV9HQVRF
X09QQ09ERVMoSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQorI3VuZGVmIEpTQ19ERUZJTkVf
R0FURV9FTlVNCit9OworCisjZGVmaW5lIEpTQ19DT1VOVChnYXRlTmFtZSwgdGFnKSArIDEKKyNk
ZWZpbmUgSlNDX09QQ09ERV9DT1VOVChnYXRlTmFtZSwgdGFnKSArIDMKK3N0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9IDAgSlNDX1VUSUxJVFlfR0FURVMoSlNDX0NPVU5U
KSBKU0NfSlNfR0FURV9PUENPREVTKEpTQ19PUENPREVfQ09VTlQpIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyhKU0NfT1BDT0RFX0NPVU5UKTsKKyN1bmRlZiBKU0NfQ09VTlQKKyN1bmRlZiBKU0NfT1BD
T0RFX0NPVU5UCisjZWxzZQorLy8gS2VlcCBpdCBub24temVybyB0byBtYWtlIEpTQ0NvbmZpZydz
IGFycmF5IG5vdCBbMF0uCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mR2F0ZXMg
PSAxOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmln
LmgKaW5kZXggNWE0NzMxN2M2MmE1ZWJhNjY2Njc1NzM1Zjc3NDAzNTAwYzY4MGI0MS4uN2Y5NmVj
NTJlZDIxYWZkZTMzZGExMzBkYjdkZDQ2OTRlYzYxOThkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJHYXRlLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiT3B0
aW9uc0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+CkBAIC05Miw2ICs5Myw3IEBA
IHN0cnVjdCBDb25maWcgewogICAgICAgICBPcGNvZGUgb3Bjb2RlTWFwW251bU9wY29kZUlEcyAr
IG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBPcGNvZGUgb3Bjb2RlTWFwV2lkZTE2W251bU9w
Y29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBPcGNvZGUgb3Bjb2RlTWFwV2lk
ZTMyW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOworICAgICAgICBjb25zdCB2b2lk
KiBnYXRlTWFwW251bWJlck9mR2F0ZXNdOwogICAgIH0gbGxpbnQ7CiAKICNpZiBDUFUoQVJNNjRF
KSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTExNyw2ICsxMTksNyBAQCBleHRlcm4g
IkMiIEpTX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX2pzY0NvbmZpZzsKIGNvbnN0ZXhwciBzaXpl
X3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVNYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxp
bnQub3Bjb2RlTWFwKTsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVN
YXBXaWRlMTYgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwV2lkZTE2KTsK
IGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVNYXBXaWRlMzIgPSBvZmZz
ZXRvZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwV2lkZTMyKTsKK2NvbnN0ZXhwciBzaXpl
X3Qgb2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50
LmdhdGVNYXApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKaW5kZXggYTk0MTYzNGJmZmRhN2E0NjMxNTZjNDU5MDZm
Nzc0OWJlYTIyNmFjNy4uOTkxMWUxOWI4NzI5MjY2ZmQxNmMzOTYxNzkyYjIxOTU0Mzg0MjFjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCkBAIC0yOCw2
ICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisjaW5jbHVkZSA8bWFjaGluZS9jcHVfY2FwYWJpbGl0aWVzLmg+CisjaW5jbHVkZSA8c3lz
L21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlND
IHsKIAogI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQpAQCAtNjEs
NCArNjcsMzIgQEAgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3VwKCkKIAogI2VuZGlmIC8vIENQ
VShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogCisjaWYgQ1BVKEFSTTY0RSkK
KworUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyB0YWcpCit7CisjZGVmaW5lIFJF
VFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgY2FzZSBf
dGFnTmFtZTogcmV0dXJuIGNhbGxlclR5cGU7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKKyAgICB9CisjdW5kZWYgUkVU
VVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKK30K
KworUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0clRhZyB0YWcpCit7CisjZGVmaW5lIFJF
VFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgY2FzZSBf
dGFnTmFtZTogcmV0dXJuIGNhbGxlZVR5cGU7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKKyAgICB9CisjdW5kZWYgUkVU
VVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKK30K
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NQdHJUYWcuaAppbmRleCBkZjhiNDAyMjY2ZTBlMDIwMTlhZjM1ZjY4ZTkxZmFhNzhi
ZTc5MzViLi4zMzhhYWFlYWU2YTEyNTUzNjQ0ZWQ1NTczYWY1YjFiYzRmMDM5MDc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaApAQCAtMjcsNDYgKzI3LDUzIEBA
CiAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1B0clRhZy5o
PgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2Fn
ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMi
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0
cl90IHRhZyk7CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5nIFB0clRhZyA9IFdU
Rjo6UHRyVGFnOwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19QVFJUQUcodikgXAotICAgIC8qIE5h
dGl2ZSBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOb25lICovIFwKICAg
ICB2KERPTUpJVEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KFB1dFZhbHVl
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUp
IFwKLSAgICAvKiBKSVQgTm9uZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6Tm9uZSAq
LyBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFibGVNZW1vcnlQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoTGlu
a0J1ZmZlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpO
b25lKSBcCi0gICAgLyogTmF0aXZlIE5hdGl2ZSAqLyBcCisgICAgdihZYXJyOEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZ
YXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6
Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seTE2Qml0
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwK
KyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOYXRpdmUgKi8gXAogICAgIHYoQnl0ZWNvZGVQ
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZl
KSBcCiAgICAgdihKSVRQcm9iZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlRXhlY3V0b3JQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAg
dihKSVRQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICB2KFNsb3dQYXRo
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2
ZSkgXAotICAgIC8qIEpJVCBOYXRpdmUgKi8gXAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOk5h
dGl2ZSAqLyBcCiAgICAgdihOYXRpdmVUb0pJVEdhdGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogTmF0aXZlIEpJVCAqLyBc
CisgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxsZXI6SklUICovIFwK
ICAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KEpJVFRvTmF0aXZl
R2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKLSAgICAvKiBKSVQgSklUICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpKSVQg
Ki8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFRodW5rUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUU3R1YlJv
dXRpbmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCiAgICAgdihKU0VudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCkgXAorICAgIHYoSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNJbnRlcm5hbFB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAg
ICB2KEpTU3dpdGNoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogICAgIHYoT1NSRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFeGl0UHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoV2FzbUVudHJ5UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAg
IHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKSBcCi0gICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKICAgICB2KFlhcnJCYWNrdHJhY2tQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVf
UFRSVEFHKG5hbWUsIHR5cGUsIHRhcmdldCkgV1RGX0RFQ0xBUkVfUFRSVEFHKG5hbWUpCkBAIC0x
MDgsMTggKzExNSwyOCBAQCBGT1JfRUFDSF9KU0NfUFRSVEFHKEpTQ19ERUNMQVJFX1BUUlRBRykK
ICNwcmFnbWEgd2FybmluZyhwb3ApCiAjZW5kaWYKIAorSlNfRVhQT1JUX1BSSVZBVEUgUHRyVGFn
Q2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyk7CitKU19FWFBPUlRfUFJJVkFURSBQdHJUYWdD
YWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnKTsKKwogdGVtcGxhdGU8UHRyVGFnIHRhZywgUHRy
VGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlLCBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUsIHR5
cGVuYW1lIFB0clR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQdHJUeXBlIHRhZ0pTQ0NvZGVQ
dHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2FsbGVyVHlwZSA9PSBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2FsbGVlVHlwZSA9PSBQ
dHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3RleHByICh0YWcgIT0g
SklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9
PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7Ci0gICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAgICAgICAgICAg
ICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIp
OwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOwotICAgICAgICB9CisgICAgICAgIHN0YXRpY19hc3NlcnQodGFn
ID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAg
ICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQorICAgICAgICAgICAgSklU
T3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOworICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKKyAgICAg
ICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24o
cHRyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJh
dGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpKSk7
CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
UHRyVHlwZT4oaml0Q2FnZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIHRhZykpOworI2Vu
ZGlmCiAgICAgfQogICAgIHJldHVybiBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRy
KTsKIH0KQEAgLTEyOSwxNyArMTQ2LDY0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUg
dW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGNh
bGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICBpZiBjb25zdGV4cHIgKGNh
bGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlKSB7Ci0gICAgICAgIGlmIGNvbnN0
ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykgewotICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQot
ICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRP
cGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9z
dEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3Rh
bmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCh0
YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBK
SVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Cisg
ICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAg
ICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlv
bihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lzZV9jYXN0PFB0clR5
cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZv
aWQqPihwdHIpKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1vdmVDb2RlUHRyVGFn
KHB0cik7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAgICAgICBQ
dHJUeXBlIHJlbW92ZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCgodGFnSlNDQ29kZVB0ckltcGw8dGFnLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBl
PihyZW1vdmVkKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1vdmVkOwogICAgICAg
ICB9CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dW50YWdOYXRpdmVDb2RlUHRySW1w
bDx0YWc+KHB0cik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+CitpbmxpbmUgUHRy
VHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihK
U0NfSklUX0NBR0UoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpLCBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdGFja1BvaW50ZXIpKSk7CisjZW5kaWYKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVy
biBwdHJhdXRoX3NpZ25fdW5hdXRoZW50aWNhdGVkKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19k
ZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7CisjZWxz
ZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlw
ZT4KK2lubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxs
KFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCit7CisgICAgQVNTRVJUKHB0
cik7CisgICAgVU5VU0VEX1BBUkFNKHN0YWNrUG9pbnRlcik7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgUHRyVHlwZSB1bmNh
Z2VkID0gcmVtb3ZlQ29kZVB0clRhZyhwdHIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh0YWdD
b2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwodW5jYWdlZCwgc3RhY2tQb2ludGVyKSA9
PSBwdHIpOworICAgICAgICByZXR1cm4gdW5jYWdlZDsKKyAgICB9CisjZW5kaWYKKyNpZiBDUFUo
QVJNNjRFKQorICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2lu
dGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwogI2lmIENQVShBUk02
NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogdm9pZCBpbml0aWFsaXplUHRyVGFnTG9v
a3VwKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0
LmgKaW5kZXggYWRkMjY0ZTkwOTc1YjI2NWZkNWJlMTBmMjYzMmZkNzVlMjg2YzgxYy4uZjMwNWU0
YTE2NGQwMWZmYjFmODFjNzllYjVlNDlmMDQ1YjgxODVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCkBAIC0zNCw3ICszNCwxMCBAQCBzdHJ1Y3QgTWF0
Y2hSZXN1bHQ7CiAjaWYgQ1BVKEFERFJFU1MzMikKIHVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9
IHVpbnQ2NF90OwogI2Vsc2UKLXVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9IE1hdGNoUmVzdWx0
Oworc3RydWN0IEVuY29kZWRNYXRjaFJlc3VsdCB7CisgICAgc2l6ZV90IHN0YXJ0OworICAgIHNp
emVfdCBlbmQ7Cit9OwogI2VuZGlmCiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CkBAIC01Niw2ICs1
OSwxMiBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICAsIGVuZChiaXR3aXNlX2Nhc3Q8
TWF0Y2hSZXN1bHQ+KG1hdGNoKS5lbmQpCiAgICAgewogICAgIH0KKyNlbHNlCisgICAgQUxXQVlT
X0lOTElORSBNYXRjaFJlc3VsdChFbmNvZGVkTWF0Y2hSZXN1bHQgbWF0Y2gpCisgICAgICAgIDog
c3RhcnQobWF0Y2guc3RhcnQpCisgICAgICAgICwgZW5kKG1hdGNoLmVuZCkKKyAgICB7CisgICAg
fQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJlc3VsdCBmYWlsZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCAwZDJmNWFj
Zjc5Y2RmNTc0OThlNmE3M2MwNjcyZDZkZDRiZjg4NDc4Li5lNzE3ZDMwZTY0ZDE1OTczNDc5MmEz
ZjQ4YjkyMTY1NzJmYjQwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcApAQCAtNTAsNiArNTAsMTEgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJ
VENhZ2VBZGRpdGlvbnMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTM5
Miw2ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQWxsSklUT3B0aW9ucygpCiAgICAgT3B0
aW9uczo6dXNlT01HSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25zOjp1c2VET01KSVQoKSA9IGZh
bHNlOwogICAgIE9wdGlvbnM6OnVzZVJlZ0V4cEpJVCgpID0gZmFsc2U7CisgICAgT3B0aW9uczo6
dXNlSklUQ2FnZSgpID0gZmFsc2U7CiB9CiAKIHZvaWQgT3B0aW9uczo6cmVjb21wdXRlRGVwZW5k
ZW50T3B0aW9ucygpCkBAIC0xMTE0LDQgKzExMjAsMTAgQEAgYm9vbCBPcHRpb25SZWFkZXI6Ok9w
dGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2Jvb2wgY2FuVXNlSklUQ2FnZSgpIHsg
cmV0dXJuIEpTQ19KSVRfQ0FHRV9WRVJTSU9OKCk7IH0KKyNlbHNlCitib29sIGNhblVzZUpJVENh
Z2UoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTlkZjU1ZWJk
Mjc2Y2UxNGRkYzliODdjZDAxZTZlYmM3ZjJmNzdmNS4uYjBhMDUyMDYzMGU4ZDBlYWZkMTcwMjQ1
ZTE0Y2YzMTE3ZDE2OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCkBAIC00Myw2ICs0Myw4IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gdHJ1ZTsKIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAjZW5kaWYKIAorSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
YW5Vc2VKSVRDYWdlKCk7CisKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3JrPwogLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlNDX09QVElPTigpIG1h
Y3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBpbiB1c2UsCkBAIC01
MjAsNiArNTIyLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzZWVkRm9yTElDTUZ1enplciwgNDI0MjQyLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJsZSwgYWxsb3dIb2lzdGluZ0xJQ01Qcm9iYWJp
bGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNl
dHRlcnNPbkdsb2JhbE9iamVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICB2KEJvb2wsIHVzZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRy
KSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IDljNGI1OTU0NmU2
Zjk2MGFiNzU4ZTNhNTNmMmI2MWRiYjY3NGMyMWUuLjkwNjIxMTIxYTgxZTMxYjUyMTc1YjU5N2Q5
YmM0MTI2NDg2NzYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93
UGF0aHMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIFdBU01fQ0FMTF9SRVRVUk4odGFy
Z2V0SW5zdGFuY2UsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIGRvIHsgXAotICAgICAgICBX
QVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBTbG93UGF0aFB0clRh
Zz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0YW5jZSk7IFwKKyAgICAgICAgV0FTTV9SRVRVUk5f
VFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnPihj
YWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAj
ZGVmaW5lIENPREVfQkxPQ0soKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CmluZGV4IDIyYmY2NmQ4YzgyMmRhOTFlMDMxODA2YTJmNjlkMzZlNGJkOGY3YmQuLjk0ZDMwMmFl
YWZkNTE2YTViM2ZjN2Y0YmY1Zjc5NWEzZjU2Y2E3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFlhcnIgewogCisjaWYgQ1BVKEFSTTY0KQorSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJ
T04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJKSVRBZnRl
cik7CisjZW5kaWYKKwogTWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpNYXRjaGluZ0NvbnRleHRIb2xk
ZXIoVk0mIHZtLCBZYXJyQ29kZUJsb2NrKiB5YXJyQ29kZUJsb2NrLCBNYXRjaEZyb20gbWF0Y2hG
cm9tKQogICAgIDogbV92bSh2bSkKIHsKQEAgLTM3NDYsOSArMzc1MCw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWN4KTsKICNlbmRpZgogI2VsaWYgQ1BV
KEFSTTY0KQotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIGlmIChtX2RlY29k
ZVN1cnJvZ2F0ZVBhaXJzKSB7Ci0gICAgICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4MTAw
MDApLCBzdXBwbGVtZW50YXJ5UGxhbmVzQmFzZSk7CiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigweGQ4MDApLCBsZWFkaW5nU3Vycm9nYXRlVGFnKTsKICAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKDB4ZGMwMCksIHRyYWlsaW5nU3Vycm9nYXRlVGFnKTsKQEAgLTM4MDMsOCArMzgw
NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJ4
KTsKICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKICNlbGlmIENQVShBUk02NCkKLSAg
ICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICBwb3BQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworICAgICAgICAvLyBEbyBub3RoaW5n
CiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgcG9wKEFSTVJlZ2lzdGVyczo6cjgpOwog
ICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyNik7CkBAIC0zODEzLDcgKzM4MTQsMTMgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAjZWxpZiBDUFUoTUlQUykKICAgICAgICAgLy8gRG8gbm90aGluZwogI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZXRhZ0Nv
ZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPigmdm1FbnRyeVRv
WWFyckpJVEFmdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgZmFySnVtcChyZWdUMCwgT3BlcmF0aW9u
UHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIHJldCgpOworI2VuZGlmCiAgICAgfQogCiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggNjY0MjhlMDY2M2YzMzIwOTE3
NzgxZGJiOWQwYzczMGQyYjZkNjg1Yi4uMTViN2JkNmEyNmZmNmU0YjAwMTIxMjk4OWU4ZmRjZWVh
NWE0YjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtNzYsNiArNzYs
OSBAQCBjbGFzcyBNYXRjaGluZ0NvbnRleHRIb2xkZXIgewogI2VuZGlmCiB9OwogCitleHRlcm4g
IkMiIEVuY29kZWRNYXRjaFJlc3VsdCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0IHZvaWQqIGlucHV0
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdD
b250ZXh0SG9sZGVyKiBtYXRjaGluZ0NvbnRleHQsIGNvbnN0IHZvaWQqIGNvZGVQdHIpOworZXh0
ZXJuICJDIiB2b2lkIHZtRW50cnlUb1lhcnJKSVRBZnRlcih2b2lkKTsKKwogY2xhc3MgWWFyckNv
ZGVCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoWWFyckNvZGVCbG9jayk7CkBAIC0xMDksMjUgKzExMiw0MSBAQCBjbGFzcyBZYXJy
Q29kZUJsb2NrIHsKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29u
dGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhC
aXRDb2RlKCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZt
RW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgJm1hdGNoaW5nQ29u
dGV4dCwgcmV0YWdDb2RlUHRyPFlhcnI4Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVm
OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTgsIFlhcnI4Qml0UHRyVGFn
PihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3Ro
LCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hS
ZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7CisjaWYgQ1BVKEFS
TTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwg
c3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFy
cjE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVu
Y3Rpb25QdHI8WWFyckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGlu
Z0NvbnRleHQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29u
c3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBNYXRjaGlu
Z0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCho
YXM4Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRy
LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seThCaXRQdHJUYWcs
IFlhcnJFbnRyeVB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRy
PFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1fbWF0Y2hP
bmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51
bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1
bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjRFKQor
ICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQs
IGxlbmd0aCwgbnVsbHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnJNYXRj
aE9ubHkxNkJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0
KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYsIFlhcnJNYXRjaE9ubHkx
NkJpdFB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5w
dXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAg
ICAgfQogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvT1NBbGxvY2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKaW5kZXgg
NzcxMzYyYjkyYTJlNTIyOTM5ODRlMTE2NTFiZDJhOTM5M2Q5ODNhMi4uMjY4OGE0ZWZkZjgxN2Ri
N2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NB
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyByZWxlYXNlRGVjb21taXR0ZWQgc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVz
ZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBk
ZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2ZVVuY29tbWl0dGVkIHJldHVybnMgdG8KICAgICAvLyB5
b3UgbWVtb3J5IHRoYXQgaXMgemVyb2VkLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
KiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFi
bGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVf
dCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9y
IGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKQEAgLTU1LDI3
ICs1NSwyNyBAQCBjbGFzcyBPU0FsbG9jYXRvciB7CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
c3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBWTSBpbiBhbiBjb21taXR0ZWQg
c3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3VsZCBiZSBjYWxsZWQgb24gYSBy
ZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRo
ZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29tbWl0dGVkIHN0YXRlLgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3Qs
IFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVzYWdl
ID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFn
ZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJh
c2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVz
ZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIg
dGhhbgogICAgIC8vIGNvbW1pdHRpbmcvZGVjb21taXR0aW5nIHRoZSBlbnRpcmUgcmVnaW9uIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyBhIHN1YnJlZ2lvbiB0byBiZQogICAgIC8vIHNwZWNp
ZmllZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21t
aXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3du
VXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlID0gVW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2Fn
ZUVuYWJsZWQgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFsbG9jYXRlIGFuIGV4aXN0aW5nLCBjb21t
aXR0ZWQgYWxsb2NhdGlvbi4KICAgICAvLyBUaGUgcHJpb3IgYWxsb2NhdGlvbiBtdXN0IGJlIGZ1
bGx5IGNvbWl0dGVkLCBhbmQgdGhlIG5ldyBzaXplIHdpbGwgYWxzbyBiZSBmdWxseSBjb21taXR0
ZWQuCiAgICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgcHJvdmlkZWQgc2luY2UgaXQgbWF5IGJlIHBv
c3NpYmxlIHRvIG9wdGltaXplIHRoaXMgb3BlcmF0aW9uIG9uIHNvbWUgcGxhdGZvcm1zLgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQo
VCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2Us
IGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CisgICAgc3Rh
dGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3
U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKIAogICAgIC8v
IEhpbnQgdG8gdGhlIE9TIHRoYXQgYW4gYWRkcmVzcyByYW5nZSBpcyBub3QgZXhwZWN0ZWQgdG8g
YmUgYWNjZXNzZWQgYW55dGltZSBzb29uLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbih2b2lkKiwgc2l6ZV90KTsKIH07CiAKLWlubGlu
ZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUs
IHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVj
dXRhYmxlKQoraW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCog
YmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBl
eGVjdXRhYmxlKTsKKyAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVT
aXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBj
b21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOwogICAgIHJldHVy
biBiYXNlOwogfQpAQCAtODYsOSArODYsOSBAQCBpbmxpbmUgdm9pZCBPU0FsbG9jYXRvcjo6ZGVj
b21taXRBbmRSZWxlYXNlKHZvaWQqIHJlbGVhc2VCYXNlLCBzaXplX3QgcmVsZWFzZVNpegogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKK2lubGluZSBUKiBPU0Fs
bG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFi
bGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHJlc2VydmVB
bmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAgICB2b2lk
KiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBtZW1jcHkobmV3QmFzZSwgb2xkQmFzZSwg
c3RkOjptaW4ob2xkU2l6ZSwgbmV3U2l6ZSkpOwogICAgIGRlY29tbWl0QW5kUmVsZWFzZShvbGRC
YXNlLCBvbGRTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG5ld0Jhc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QYWdlUmVzZXJ2YXRpb24uaAppbmRleCBhMmFlZTg4NGU5ODY0Y2Q5MzIxYTZiNDk0ZTllNjk4
ODI0NDMxMDMwLi40OTRiZjA1ZTAwMTcxNTM4NTFlYjEwYTU1MzNjMjJmYzY1Y2I3NzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaApAQCAtNTUsMTIgKzU1LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKIHB1YmxpYzoK
LSAgICBQYWdlUmVzZXJ2YXRpb24oKQotICAgICAgICA6IG1fY29tbWl0dGVkKDApCi0gICAgICAg
ICwgbV93cml0YWJsZShmYWxzZSkKLSAgICAgICAgLCBtX2V4ZWN1dGFibGUoZmFsc2UpCi0gICAg
ewotICAgIH0KKyAgICBQYWdlUmVzZXJ2YXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBQ
YWdlQmxvY2s6OmJhc2U7CiAgICAgdXNpbmcgUGFnZUJsb2NrOjpzaXplOwpAQCAtOTMsMjIgKzg4
LDIyIEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICAg
ICAgcmV0dXJuIG1fY29tbWl0dGVkOwogICAgIH0KIAotICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRp
b24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXplX3Qgc2l6
ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENh
Z2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChz
aXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2Vy
dmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpLCBzaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgZmFsc2UpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpLCBzaXplLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxs
b2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJl
c2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6
OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9
IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFs
c2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSks
IHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VS
ZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6
ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgdHJ1
ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgdHJ1ZSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlQW5kQ29tbWl0V2l0aEd1
YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2Nh
dG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRo
R3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBB
U1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRp
b24oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAKICAgICB2b2lkIGRlYWxsb2Nh
dGUoKQpAQCAtMTI3LDcgKzEyMiw3IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUg
UGFnZUJsb2NrIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUGFnZVJlc2VydmF0aW9uKHZvaWQq
IGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wg
aGFzR3VhcmRQYWdlcykKKyAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNp
emUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCBoYXNHdWFyZFBh
Z2VzKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBoYXNHdWFyZFBhZ2VzKQogICAg
ICAgICAsIG1fY29tbWl0dGVkKDApCiAgICAgICAgICwgbV93cml0YWJsZSh3cml0YWJsZSkKQEAg
LTEzNSw5ICsxMzAsOSBAQCBjbGFzcyBQYWdlUmVzZXJ2YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9j
ayB7CiAgICAgewogICAgIH0KIAotICAgIHNpemVfdCBtX2NvbW1pdHRlZDsKLSAgICBib29sIG1f
d3JpdGFibGU7Ci0gICAgYm9vbCBtX2V4ZWN1dGFibGU7CisgICAgc2l6ZV90IG1fY29tbWl0dGVk
IHsgMCB9OworICAgIGJvb2wgbV93cml0YWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V4ZWN1
dGFibGUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZTIy
Mjk4NzViNDc3YjFjNmJhYmJjNWZlZGQ5N2NhNTcyOTFkM2MyMy4uZWJlZDY4NjkyMmI2ZjBmMGJi
MjA4N2NmNTQ2YTE4ODA0MjhjZGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04ODQs
MTAgKzg4NCwxMCBAQAogI2Vycm9yICJFTkFCTEUoV0hMU0xfQ09NUElMRVIpIHJlcXVpcmVzIEVO
QUJMRShXRUJHUFUpIgogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpICYmIENQVShBRERSRVNTNjQp
Ci0jZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJ
VCkgJiYgKChVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBDUFUoQVJNNjRFKSkpCisjZGVmaW5l
IEVOQUJMRV9KSVRfQ0FHRSAxCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJ
VCkgJiYgQVNTRVJUX0VOQUJMRUQKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBRERSRVNTNjQpICYm
IEVOQUJMRShKSVQpICYmIChFTkFCTEUoSklUX0NBR0UpIHx8IEFTU0VSVF9FTkFCTEVEKQogI2Rl
ZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKaW5kZXggMjJmNDYyYjJhNjRkYWJmOGMwODQ5YTkyMGRlYWJkOWExYzFlNWJlMi4uZmNl
OWVkYTEzM2M5YmIzMTY3MGUzMmU5ZGYzYTA3YTRhMmRjMzhjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5o
CkBAIC0zMDgsMyArMzA4LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKICNkZWZpbmUg
VVNFX0NURk9OVEdFVEFEVkFOQ0VTX1dPUktBUk9VTkQgMQogI2VuZGlmCisKKyNpZiBDUFUoQVJN
NjQpICYmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaCBiL1NvdXJjZS9XVEYvd3RmL1B0
clRhZy5oCmluZGV4IDhmYjNmZjY5ZThhNjUxZmFlMGJkNWVjYzk0Y2RkNDY0MDRkNTY0ZTUuLjlm
OTU1NmNhZWU3OThiZTVmMzQ5OTFiY2I2ZTNhZDg5ODQwOTA2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oCkBAIC00NDIs
MjAgKzQ0Miw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IG9sZExl
bmd0aCwgc2l6ZV90IG5ld0xlbmd0aCkKICAgICByZXR1cm4gcHRyYXV0aF9hdXRoX2FuZF9yZXNp
Z24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRMZW5ndGgsIHB0
cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNr
UG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikK
LXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVudGlj
YXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2Fz
dDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBl
PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwo
UHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRy
KTsKLSAgICByZXR1cm4gX19idWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5X3By
b2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikp
OwotfQotCiB0ZW1wbGF0ZSA8UHRyVGFnIHRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJ
bnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTUwNiwxMiArNDkyLDYgQEAgaW5s
aW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3QsIHNpemVfdCkKICAgICByZXR1cm4g
cHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+Ci1pbmxpbmUgUHRyVHlw
ZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0
IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+
PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwo
UHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQogdGVtcGxhdGUgPFB0
clRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0
ckludCkKIHsKQEAgLTU0NCw5ICs1MjQsNyBAQCB1c2luZyBXVEY6OnJldGFnQXJyYXlQdHI7CiB1
c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOwogCiB1c2luZyBXVEY6OnRhZ0NvZGVQdHI7Ci11
c2luZyBXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdU
Rjo6dW50YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVy
Rm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6cmV0YWdDb2RlUHRyOwogdXNpbmcgV1RGOjpyZW1vdmVD
b2RlUHRyVGFnOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDQ0NTQwNTljNTE1ZDJhNDEyYjQzMmQwNzE0NmNm
NmYwMTFkNDc2MGIuLjZjZWZkMmVlMmQzMTA1YzJkNDA0ODVmNjk2NWZlYmE4ODQ1YjQzM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBAIC0zMSwxNCArMzEs
MjcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxv
Y2suaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
SklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdFKQorI2lmIE9TKERB
UldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklUCisjZGVmaW5lIE1B
UF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisjZWxzZSAvLyBPUyhE
QVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2RlZmluZSBNQVBfRVhF
Q1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9TKERBUldJTikKKyNl
bmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIG5hbWVzcGFjZSBXVEYgewogCi12b2lkKiBPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJv
b2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2
b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2Ug
dXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxl
ZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAjaWYgT1MoTElOVVgpCiAgICAgVU5VU0VE
X1BBUkFNKHVzYWdlKTsKICAgICBVTlVTRURfUEFSQU0od3JpdGFibGUpOwogICAgIFVOVVNFRF9Q
QVJBTShleGVjdXRhYmxlKTsKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogICAg
IFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMpOwogCiAgICAgdm9pZCogcmVzdWx0ID0g
bW1hcCgwLCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBN
QVBfQU5PTiwgLTEsIDApOwpAQCAtNDYsNyArNTksNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
CiAgICAgICAgIENSQVNIKCk7CiAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBNQURWX0RPTlRO
RUVEKTsKICNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1pdChieXRlcywg
dXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBpbmNsdWRlc0d1YXJkUGFnZXMpOworICAgIHZv
aWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAjaWYgSEFWRShN
QURWX0ZSRUVfUkVVU0UpCiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAvLyBUbyBzdXBwb3J0
IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1pdCIgbW9kZWwsIHdlIGhhdmUgdG8gaW5pdGlhbGx5IGRl
Y29tbWl0LgpAQCAtNTksNyArNzIsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29t
bWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6
ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29t
bWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0
YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAg
ICAgLy8gQWxsIFBPU0lYIHJlc2VydmF0aW9ucyBzdGFydCBvdXQgbG9naWNhbGx5IGNvbW1pdHRl
ZC4KICAgICBpbnQgcHJvdGVjdGlvbiA9IFBST1RfUkVBRDsKQEAgLTcwLDggKzgzLDE0IEBAIHZv
aWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNh
Z2UsIGJvb2wgd3JpdGFibGUsIGJvCiAKICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1B
UF9BTk9OOwogI2lmIE9TKERBUldJTikKLSAgICBpZiAoZXhlY3V0YWJsZSkKLSAgICAgICAgZmxh
Z3MgfD0gTUFQX0pJVDsKKyAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICBpZiAoaml0Q2Fn
ZUVuYWJsZWQpCisgICAgICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJ
VEhfSklUX0NBR0U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzIHw9IE1BUF9FWEVD
VVRBQkxFX0ZPUl9KSVQ7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVu
YWJsZWQpOwogI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL09TQWxsb2Nh
dG9yV2luLmNwcAppbmRleCA5ZDZjMGFhNzQxMTM2Y2M4YTg0NmQwNDEyYTkyMWJkYTJhYzM4YjQ3
Li42ZDUyYzY2MmRmMDZmOTQ4MWE5MzM1YTdlZDJiNDUxNDM2NjQ2NGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGluZSBE
V09SRCBwcm90ZWN0aW9uKGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKICAgICAgICAg
KHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0KIAotdm9pZCog
T1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29s
IHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wg
ZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBWaXJ0dWFsQWxs
b2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVj
dXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQqIE9TQWxs
b2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0
YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9v
bCBleGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQo
c2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29s
LCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYyhudWxscHRyLCBieXRl
cywgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRh
YmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCg==
</data>
<flag name="commit-queue"
          id="428626"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412223</attachid>
            <date>2020-10-23 19:06:05 -0700</date>
            <delta_ts>2020-10-23 23:24:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201023190604.patch</filename>
            <type>text/plain</type>
            <size>168716</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjU1YTUwNmQyZmQ5MWIwYmNjMTYwNDA4NjMzZjExMTEzNzM5ZWFlLi43N2JmZTQyMDMxZGY5Y2U5
MGExZGViNjM1ZTJlYTBjMDI0ZjgxMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVu
a3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZSk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9n
cmFtRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtRnVuY3Rpb25FbnRyeVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUNhdGNoVGh1bmspOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2VuZXJpY1JldHVyblBvaW50VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZnV6emVy
UmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVh
dGVKU0dhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVhdGVXYXNtR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVRhaWxDYWxsR2F0ZSk6CisgICAgICAgIChK
U0M6OkxMSW50Ojpsb29wT1NSRW50cnlHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6
ZW50cnlPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtT1NSRW50
cnlHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZXhjZXB0aW9uSGFuZGxlckdhdGVU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6dGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnVudGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENhZ2VQdHJUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBv
bGluZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkxvY2F0aW9uVGh1bmspOgor
ICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybTY0LnJi
OgorICAgICAgICAqIHJ1bnRpbWUvR2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
Q0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDUHRyVGFnLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y2FsbGVyVHlwZSk6CisgICAgICAgIChKU0M6OmNhbGxlZVR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDUHRyVGFnLmg6CisgICAgICAgIChKU0M6OnRhZ0pTQ0NvZGVQdHJJbXBsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdKU0NDb2RlUHRySW1wbCk6CisgICAgICAgIChKU0M6OnRhZ0NvZGVQ
dHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6CisgICAgICAgIChKU0M6OnVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAgICAgICAgKiBydW50aW1lL01hdGNoUmVz
dWx0Lmg6CisgICAgICAgIChKU0M6Ok1hdGNoUmVzdWx0OjpNYXRjaFJlc3VsdCk6CisgICAgICAg
ICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZGlzYWJsZUFsbEpJVE9wdGlv
bnMpOgorICAgICAgICAoSlNDOjpjYW5Vc2VKSVRDYWdlKToKKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnNMaXN0Lmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpleGVjdXRlKToKKwogMjAyMC0xMC0yMyAgQW5nZWxv
cyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBG
aXggYXJndW1lbnQgb3JkZXIgZm9yIGRvdWJsZSBhbmQvb3Igb3BzIG9uIEFSTXY3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDli
OGNjYmM4YjgzMTI0OTdlNTYyMzhmOWM5MjE1OTU2OTYxZTQ1ZWQuLmE3MzFhZGMyZjFlMDFmODU4
Njg2NzljMjJkNjQ4ZmIwNzQwZjk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMTAtMjMg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQg
SklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9PU0FsbG9jYXRvci5oOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6
cmVzZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKToKKyAgICAgICAgKiB3dGYvUGFnZVJlc2VydmF0aW9uLmg6CisgICAgICAgIChX
VEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZSk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZh
dGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0
aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdl
UmVzZXJ2YXRpb246OlBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogd3RmL1BsYXRmb3JtRW5h
YmxlLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisgICAgICAgICogd3RmL1B0clRh
Zy5oOgorICAgICAgICAoV1RGOjp0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9y
SklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKToKKyAg
ICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQpOgorICAgICAgICAqIHd0
Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZVVuY29tbWl0dGVkKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRD
b21taXQpOgorCiAyMDIwLTEwLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIGFuZCBwYXNzIG5ldyBVUkwgd2ViIHBsYXRmb3Jt
IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWI0YzU4NDhjNThj
YTY2YmM2NTZlZGFhOGZmM2M5Y2ZmN2VjZjAxZi4uMmViNTY2ZGI0NmFkZDdjOTg5NjBjZDhhZGVh
MDg1ZGE5ZWM3MzJjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODY1
LDYgKzg2NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCiAgICAgcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmgKICAgICBydW50aW1lL0Z1enplckFnZW50LmgKKyAgICBydW50aW1lL0dhdGUuaAog
ICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNldC5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4OTlkMjA5Y2I3NzFmMTE0NjVjNmQ0NDA2MGVj
ZGI0NmFkNTg2ZmQuLjNkZmQ5ODAzYzZmOThlNGQ2NmMyZjVmNDY5ZmZkMDY4OGMyZTk1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZC
NzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3
MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNG
QTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1l
Rm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQg
LyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKQEAg
LTUwNTEsNiArNTA1Miw3IEBACiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENF
NDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc1MEND
NzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzI3MCw2ICs3MjcyLDcgQEAKIAkJCQlFMzNBOTQ5MjIyNTUzMjI5MDBENDJCMDYgLyog
RnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVy
UHJlZGljdGlvbnMuY3BwICovLAogCQkJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6
ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRl
LmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTk2ODUsNiArOTY4
OCw3IEBACiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0E5NDk3MjI1NTMyMzMwMEQ0MkIwNiAvKiBGdXp6ZXJB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDRkFEMzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1
enplclByZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzcxMTk5MjI1M0ZBODdGMDBC
QTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQw
MTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUx
NEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9w
ZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVy
YXRpb25MaXN0LmNwcAppbmRleCBiM2NlMTc3OTJkMDE2N2Y0ZWM3YmVjY2E0ZmRlODVjNDVjYmIx
MGIwLi5lNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAK
QEAgLTI2LDYgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9uTGlzdC5oIgogCisjaW5jbHVkZSAiR2F0ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5o
IgorI2luY2x1ZGUgIk9wY29kZS5oIgorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYKKwogbmFtZXNwYWNl
IEpTQyB7CiAKIExhenlOZXZlckRlc3Ryb3llZDxKSVRPcGVyYXRpb25MaXN0PiBqaXRPcGVyYXRp
b25MaXN0OwpAQCAtNDUsMTggKzUzLDIyIEBAIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6aW5pdGlh
bGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKIHN0YXRpYyBTVVBQ
UkVTU19BU0FOIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQb2ludGVycyhIYXNoTWFwPHZvaWQqLCB2
b2lkKj4mIG1hcCwgY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCog
ZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJf
dCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9
IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsKLSAgICAgICAgdm9p
ZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVu
dCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRy
VGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpIHsKKyAgICAgICAgSlNDX0pJVF9DQUdFRF9QT0lOVEVSX1JFR0lTVFJBVElPTigpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50
ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkg
ewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxP
cGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNO
ZXdFbnRyeSk7CisjZW5kaWYKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVEKSB7Cisg
ICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50
ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgeworICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJl
bW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkpOworICAgICAgICAg
ICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRh
Z05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRhZz4oY29kZVB0cikpOworICAgICAg
ICB9CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRp
b25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgeworICAgICAgICAgICAg
dm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3Vy
cmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFk
ZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29k
ZVB0cikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMsNiArODUsNTYgQEAgdm9pZCBKSVRP
cGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpCiAjZW5kaWYK
IH0KIAordm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0
Q29yZUZvckxMSW50KCkKK3sKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFtdIHsKKworI2RlZmluZSBMTElOVF9PUChuYW1lKSBcCisgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5h
bWUpKSwgXAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksIFwKKyAgICBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4obmFtZSkpLAorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lLCAuLi4pIFwK
KyAgICBMTElOVF9PUChuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKQorCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBvcGVyYXRpb25zW10gPSB7CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4o
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSksCisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPih3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscykpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9oYW5k
bGVfdW5jYXVnaHRfZXhjZXB0aW9uKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4oY2hlY2twb2lu
dF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4oY2hlY2twb2lu
dF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KSksCisKKyAgICAgICAgICAg
IExMSU5UX09QKG9wX2NhdGNoKQorICAgICAgICAgICAgTExJTlRfT1AobGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpCisKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfZ2V0X2J5X3ZhbCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfaWQpCisgICAgICAg
ICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKworICAgICAgICAgICAg
SlNDX0pTX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAgICAgICAgICBK
U0NfV0FTTV9HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJOX0xPQ0FUSU9OKQorICAgICAgICB9Owor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBhZGRQb2ludGVycyhq
aXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIG51bGxwdHIsIG51bGxwdHIs
IG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJSQVlfTEVOR1RIKG9wZXJhdGlvbnMpKTsK
KyN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KKyAgICB9KTsKKyNlbmRpZgorfQorCisKIHZv
aWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3QgdWlu
dHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0
cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsK
ICAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5kZXggMDk4NDkzZjUwYjJhZDMzY2Qx
ZDk3NTc0YTI4M2U5ZmY4Yjk2ODM2OS4uNWE0MGZmN2M4Y2ZhZDZiNDIwMzc3M2JkMjRhZDU1N2I0
Y2U0MjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRP
cGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRP
cGVyYXRpb25MaXN0LmgKQEAgLTM5LDEyICszOSwxNSBAQCBjbGFzcyBKSVRPcGVyYXRpb25MaXN0
IHsKIAogICAgIHZvaWQqIGNvbnRhaW5zKHZvaWQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiBjb25zdGV4cHIoQVNTRVJUX0VOQUJMRUQpCi0gICAgICAgICAgICByZXR1cm4gbV92
YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorICAgICAgICByZXR1cm4gbV92YWxpZGF0
ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBwb2ludGVyOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcG9w
dWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKTsKKyAgICBzdGF0aWMgdm9pZCBwb3B1bGF0
ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCk7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihjb25zdCB1aW50cHRy
X3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3Qq
IGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0NWI0YjNiNDY5Njg1NTJkN2RhYzk3ODhhZmY2Y2YwYjQzZGIyNmM2Li40Yzlh
OWViYTRiNjRmNDFjMTBlOTQ0ZGYyNDM4YTZmZGVhMTdiYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzM5
Miw2ICszMzkyLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuYnIodGFy
Z2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0
clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5icihkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMzllYTE1MTE0NzYxYTAw
ZTAwMDUwMzEwMGJlNzZiZGU0NGEyZjhjNC4uZDE4N2Q2OTMwZTZmZDlmNjY4Mzc5OGRhMzM5YzVh
MTM2ZDAzNGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkFS
TTY0RUFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQVJNNjQuaCIKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTEwLDIwICsxMTMsMjggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJs
aWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4oLTEpOwogCiAgICAgZW51bSBj
bGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAgIENGdW5jdGlvbkNhbGwsCi0gICAgICAg
IE90aGVyQ2FsbAorICAgICAgICBKSVRDYWxsLAorICAgICAgICBOYXRpdmVDYWxsLAorICAgIH07
CisKKyAgICBlbnVtIGNsYXNzIEp1bXBTaWduYXR1cmVUeXBlIHsKKyAgICAgICAgSklUSnVtcCwK
KyAgICAgICAgTmF0aXZlSnVtcCwKICAgICB9OwogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVy
ZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFRydXN0ZWRQdHIoUmVnaXN0
ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5
cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOwogICAg
ICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgaW52YWxpZGF0ZUFs
bFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6
OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYXooZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfQ0FM
TCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIoZGF0YVRlbXBSZWdpc3RlciwgdGFnR1BS
KTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwo
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFSTTY0QXNzZW1ibGVyOjpn
ZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFiZWwsIHBvaW50ZXJMYWJlbCkgPT0gUkVQ
QVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAgLTEzMiw1MSArMTQzLDUzIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAg
ICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlm
ICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02
NDo6Y2FsbCh0YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAg
ICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9u
Q2FsbD4oKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lz
dGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5
cGU6Ok90aGVyQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxlZVR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJVENhbGw+KEFSTTY0UmVnaXN0ZXJzOjps
cik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0
aXZlQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IENhbGwgY2FsbChSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
VHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YWdHUFIpOworICAgICAg
ICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRh
Z0dQUik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAg
ICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBS
ZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURfUEFS
QU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAg
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNp
Z25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJh
YXoodGFyZ2V0R1BSKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9DQUdF
RF9DQUxMKHR5cGUsIHRhcmdldEdQUiwgdGFnR1BSKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFiKHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICAg
ICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRh
ZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCB0YWcpOwotICAgICAg
ICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIHJldHVybiBjYWxsUmVn
aXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KHRhcmdldEdQUik7CisgICAg
ICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7Cisg
ICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAg
ICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0
YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRh
ZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxSZWdp
c3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4odGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVy
czo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpO
YXRpdmVDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQg
dGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJl
VHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgICAgIHJldHVybiBjYWxs
UmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgdGFnR1BS
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3Ms
IFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwoYWRkcmVzcywgdGFnKTsKLQor
ICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcp
OworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJ
VCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0
YWcpOwogICAgIH0KQEAgLTE5Nyw5MCArMjEwLDEyOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFS
TTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKIAogICAgIEFMV0FZU19JTkxJTkUg
SnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6anVtcCgpOyB9CiAKLSAg
ICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZyB0YWcpCisgICAgdGVtcGxh
dGU8SnVtcFNpZ25hdHVyZVR5cGUgdHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmFySnVt
cFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFs
aWRHUFIpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgICAgIEFTU0VS
VCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfRkFS
X0pVTVAodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQor
CisgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBQdHJUYWcgdGFnKQogICAg
IHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRh
ZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJU
KGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogCiAgICAgICAgIEFT
U0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNp
dHlHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIGZhckp1
bXAodGFyZ2V0LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1w
U2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5h
dGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZh
ckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVt
cChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh0YWcgIT0gdGFyZ2V0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXQsIHRhZyk7
CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BS
ID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAg
IG1vdmUodGFyZ2V0LCB0YXJnZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcp
LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+
KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRk
cmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRh
cmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5v
UHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAo
YWRkcmVzcywgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAg
ICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQ
UiwgdGFnR1BSKTsKKyAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcpOworICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BS
KQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5
R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAg
ICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwor
ICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgdGFnR1BSKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VS
VCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIp
OwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2ln
bmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZv
aWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKKyAgICB2b2lkIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisgICAgICAgIFJlZ2lzdGVySUQgdGFy
Z2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAg
ICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
dGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWdu
YXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQogCi0gICAgICAg
IEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICB2b2lkIGZhckp1bXAoQWRkcmVz
cyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVu
Y3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRh
cmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZh
ckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZl
cnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVt
cFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAg
ICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFn
KQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7
CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BS
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdl
dEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2Fs
bGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1
bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNp
dHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNp
Z25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9
CiAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcp
CiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKLQorICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAg
ICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChBZGRy
ZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRh
ZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBk
aXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdl
dEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0
YWcpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBm
YXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwg
ZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmV0KCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7CisgICAgICAgIGlmIChPcHRpb25zOjp1
c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0NfSklU
X0NBR0VEX1JFVCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIucmV0YWIoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDBjNzU5N2JhZjY0MjY2
NDk5NjM0YTU5ODAxN2JmYjY0YzMxNmE1NjQuLjJjOWI4ZmY4MDk1MTZlYjA3NzQ0YmRmZjgyNjc3
YTBjNmM0ZmRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzE5LDYgKzE3MTksMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
cj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQg
ZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92
ZSh0YXJnZXQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5ieChkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0
aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZvaWQgZmFySnVtcChB
ZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBlNjNhYjQ3NTVmZjhh
MWIwNjk3Y2NkNzNiNjIyMDIyZDZlYzAxOTYzLi5hZGFkNTRjYjAyNjE3ZDExOTcxYmIyNDVlMGEw
M2Y0ZDhkYWRmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwMDQsNiArMjAwNCwxMyBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+
IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1w
KFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAgICAgICBtb3ZlKHRhcmdl
dCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihNSVBTUmVnaXN0
ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgIH0KKwogICAgIHZvaWQg
ZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIG1fZml4ZWRX
aWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMjhmYWUyZTcyZjI1NjU3ZTYxMzMw
NWYyMDAzZGZjYmVhNWVlY2E5YS4uNzZkZGI1NzY5NGRhMjRmNGFlODA1YjA0OTNiNDJhOGU2NDJm
MzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1MCw2ICsyNzUwLDEyIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgLy8gQWRkcmVzcyBpcyBh
IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1bXAgdG8KICAgICB2
b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmZlZDE4MmU0NTdm
NzQ2NjI2NWY2NWIxNGM1OTQzMWYyM2U4NGFkMS4uMDU3YjMwNzhjMmI3ZTg2OTM5MzJiOTA1ZjE5
NGQzZjc3YjQ2NDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCkBAIC0xNDAzLDYgKzE0MDMsNyBAQAogb3AgOmxsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9t
X2lubGluZWRfY2FsbF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9s
aW5lCitvcCA6bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUKIG9wIDpmdXp6ZXJfcmV0dXJuX2Vh
cmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6bGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUK
IG9wIDpsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCkBAIC0xNDE5LDYgKzE0MjAsNDAg
QEAKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9jb25z
dHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVuX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9zbG93X3JldHVybl9sb2NhdGlvbgor
b3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfc2xvd19y
ZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19y
ZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2Nh
dGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgorCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsCitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGwKK29wIDpqc190
cmFtcG9saW5lX29wX2NvbnN0cnVjdAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4
dAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbgorb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfc2xvdworb3AgOmpz
X3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2NhbGxf
dmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdwor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdworb3AgOmpzX3RyYW1w
b2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25l
eHRfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbl9zbG93CitvcCA6anNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZworb3Ag
OmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnCitv
cCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
X3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGwKK29wIDp3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rscwor
CiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwogCiBiZWdpbl9zZWN0aW9uIDpXYXNtLApAQCAt
MTQzMyw2ICsxNDY4LDExIEBACiAKIG9wIDp0aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
CiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVj
dF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKICMgRklYTUU6IFdhc20gYW5kIEpTIExMSW50IHNo
b3VsZCBzaGFyZSBjb21tb24gb3Bjb2RlcwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNjU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBkMTUwM2JmMDM4NDdhNjQ4NTMzOTExMjc3NjhkNzAyNTBlODlh
NTM4Li5iMDYxNTBmY2NmNGM3ZGRhNWU1MWNjNWZhZDYzY2QzMTFkMTgyMzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0zMjAsNiArMzIw
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGxsaW50X2hhbmRsZV91bmNh
dWdodF9leGNlcHRpb246CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5l
ZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xp
bmU6CisgICAgY2FzZSBub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQ6CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVu
X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0
aW9uOgpAQCAtMzMxLDggKzMzMiw0MCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
cmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246
CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfY29u
c3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfc2xvd19yZXR1
cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ug
b3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9j
YWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3By
b2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHM6CisgICAgY2Fz
ZSBqc190cmFtcG9saW5lX29wX2NhbGw6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxf
Y2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0OgorICAgIGNhc2UganNf
dHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9p
dGVyYXRvcl9vcGVuOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX3Nsb3c6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9jb25zdHJ1Y3Rfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJhcmdz
X3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50c19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19z
bG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdzoKKyAgICBjYXNl
IGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnOgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50
YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKKyAg
ICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorICAgIGNhc2Ugd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93
YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
ICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggZGQ2NjZm
YWE4M2U4MzUwOWU2NWIwNzU1NzYyMmYwOGE5NDk0MjFiZC4uYWM0YjhjNTczYjgyNmI2YTMwYzYz
ZmVkYjQyNThiNWFmYmViNTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTM4LDIxICsxMzgsMjEgQEAg
dm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2Rl
SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNh
bGxlcklzTExJbnQpCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+
IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5
dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVl
Q2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCiB7CiAgICAgY2FsbGVySXNMTElu
dCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBiYXNlbGluZUNvZGVCbG9ja0Zv
ckNhbGxlci0+aml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bms7CiAKICAgICBp
ZiAoY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAgIGlmICghY2FsbGVy
SXNMTEludCkKICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5tX2hhc0xp
bmtlZE9TUkV4aXQgPSB0cnVlOwotICAgICAgICByZXR1cm4gTExJbnQ6OmdldENvZGVQdHI8SlNF
bnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9s
aW5lKTsKKyAgICAgICAgcmV0dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVk
Q2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8T1NSRXhpdFB0clRhZz4ganVtcFRhcmdldDsKIAogICAgIGNvbnN0IEluc3RydWN0aW9u
JiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3RydWN0
aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAoY2FsbGVySXNMTElu
dCkgewotI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlv
bi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFt
ZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTElu
dDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRp
b24pKSkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5M
b2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9jYXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0
aCgpKS5jb2RlKCkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewogICAg
ICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogewpAQCAtMjA5LDcgKzIwOSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tG
b3JDYWxsZXItPmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2FsbEJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKIAotICAgICAg
ICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0
YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlu
a0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMjYsMTMgKzIyNiwxMyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICAgICAgICAgIC8vIDYuIChCKSBnZXRzIE9TUiBl
eGl0LiAoQikgYXR0ZW1wdHMgdG8gc2VhcmNoIGZvciBTdHJ1Y3R1cmVTdHViSW5mbyBpbiAoQSkg
Zm9yIFB1dEJ5SWQgKG9yaWdpbmFsbHksIHB1dF9ieV92YWwpLiBCdXQgaXQgZG9lcyBub3QgZXhp
c3Qgc2luY2UgKEEpJ3MgSklURGF0YSBpcyBjbGVhcmVkIG9uY2UuCiAgICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZEJ5
VmFsSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYnlWYWxJbmZvKTsKLSAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0g
YnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CisgICAgICAg
ICAgICAgICAganVtcFRhcmdldCA9IGJ5VmFsSW5mby0+ZG9uZVRhcmdldC5yZXRhZ2dlZDxPU1JF
eGl0UHRyVGFnPigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBiYXNlbGluZUNvZGVCbG9j
a0ZvckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7
CisgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVMb2NhdGlvbi5yZXRhZ2dl
ZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MjkyLDcgKzI5Miw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gaml0LmJhc2VsaW5l
Q29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKICAgICAgICAgICAgIGF1dG8gY2FsbEJ5dGVjb2Rl
SW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldCA9IGNhbGxlclJldHVyblBD
KGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBjYWxsQnl0ZWNvZGVJbmRleCwgdHJ1ZUNhbGxl
ckNhbGxLaW5kLCBjYWxsZXJJc0xMSW50KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVyUmV0dXJuUEMoYmFzZWxpbmVD
b2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0cnVlQ2FsbGVyQ2FsbEtpbmQs
IGNhbGxlcklzTExJbnQpOwogCiAgICAgICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2Fs
bEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAtNDAyLDExICs0MDIs
MTEgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgaWYgKGV4aXRUb0xMSW50KSB7CiAgICAg
ICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KTsKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpjb2Rl
QmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRlc3RpbmF0aW9uOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4gZGVzdGluYXRpb247
CiAgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9v
c3JfZXhpdF90cmFtcG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNo
ZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIAot
ICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFn
PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6
bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKIAogICAgICAgICBpZiAoZXhp
dC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBHUFJJbmZvOjpyZWdUMik7
CkBAIC00MTYsMjIgKzQxNiwyMiBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0s
IENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0ZvckV4aXQtPm1ldGFk
YXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVHUFIpOwogICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhpdC0+
aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGJHUFIpOwogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGNHUFIpOwotICAgICAgICBqdW1wVGFyZ2V0ID0g
ZGVzdGluYXRpb24ucmV0YWdnZWQ8T1NSRXhpdFB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgICAgICBqdW1wVGFyZ2V0ID0gZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBjb2RlQmxvY2tGb3JFeGl0LT5tX2hhc0xpbmtlZE9TUkV4
aXQgPSB0cnVlOwogCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4ID0gZXhpdC5tX2Nv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxPU1JFeGl0UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGV4aXRJbmRleC5jaGVj
a3BvaW50KCkpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSk7CisgICAgICAgICAg
ICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygp
LmNvZGUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoY29kZUJsb2NrRm9y
RXhpdC0+Ynl0ZWNvZGVJbmRleEZvckV4aXQoZXhpdEluZGV4KSA9PSBleGl0SW5kZXgpOwotICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCkuZmlu
ZChleGl0SW5kZXgpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0
LT5qaXRDb2RlTWFwKCkuZmluZChleGl0SW5kZXgpLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwogCi0gICAgICAgIGp1
bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpOwogICAgIH0KIAogICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2NrRm9yRXhpdCkgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFzc2VtYmx5SGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKaW5kZXggMzkxMTRlYTY3NzAwMmE5
ODJmMmViODFlN2QyOGY4NmYyMjhmNmQwZC4uZGJhMGZlMzIyYmY4ODFjOTVjMjJkYjg1MDYxNjI0
MjA0YTZhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIHZvaWQgaGFuZGxlRXhpdENvdW50cyhWTSYsIENDYWxsSGVscGVycyYs
IGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4LCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQgY2FsbGVyS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCk7CiBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5saW5lQ2FsbEZyYW1lKiwgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSklUQ29kZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBmZjlhOGFmZDA1OTQ1YzI5Yjk3OGMxZmYzY2Y5
N2EyMjJiYjRiOTIxLi45YmU2NGJiZGYwZjI4ZmQ1NzRhNDI1ODg0Y2Q1MzQxZGYxYTY2NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKQEAgLTQ4LDYgKzQ4LDE4IEBACiAjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CiAjaW5jbHVkZSA8
bWFjaC9tYWNoX3RpbWUuaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdF
KQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklU
CisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisj
ZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2Rl
ZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9T
KERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIGV4dGVybiAiQyIgewogICAg
IC8qIFJvdXRpbmUgbWFjaF92bV9yZW1hcCAqLwogI2lmZGVmIG1pZ19leHRlcm5hbApAQCAtMTM5
LDggKzE1MSw4IEBAIHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZChib29s
IGVuYWJsZWQpCiAKICAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0gMTsKICAgICAgICAg
Y29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1Rf
RVhFQzsKLSAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQX0FO
T04gfCBNQVBfSklUOwogICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NBbGxvY2F0b3I6OkpT
SklUQ29kZVBhZ2VzOworICAgICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9O
IHwgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSA/IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9K
SVRfQ0FHRSA6IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQpOwogICAgICAgICB2b2lkKiBhbGxvY2F0
aW9uID0gbW1hcChudWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApOwogICAg
ICAgICBjb25zdCB2b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigtMSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRShhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRp
b25GYWlsdXJlLCAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVjdXRhYmxlIG1lbW9y
eSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBKSVQuIik7CkBAIC0zMjQsOSArMzM2LDkgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlv
bigpCiAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBKSVQgY29kZSBsb2dnaW5n
IGJyb2tlbiBhbmQgc29tZSBvZiBKSVQgY29kZSBpcyBub3QgcmVjb3JkZWQgY29ycmVjdGx5Lgog
ICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIHVzZSBjb21taXR0ZWQgcmVzZXJ2
YXRpb24gaWYgd2UgbmVlZCBwZXJmIEpJVER1bXAgbG9nZ2luZy4KICAgICAgICAgaWYgKE9wdGlv
bnM6OmxvZ0pJVENvZGVGb3JQZXJmKCkpCi0gICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0Fs
bG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7
CisgICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0
aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMs
IEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgZmFsc2UpOwogI2VuZGlmCi0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlv
blNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRB
QkxFLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhH
dWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBF
WEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIE9wdGlvbnM6OnVzZUpJVENhZ2UoKSk7CiAg
ICAgfTsKIAogICAgIHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbiA9IHRyeUNyZWF0ZVBhZ2VS
ZXNlcnZhdGlvbihyZXNlcnZhdGlvbi5zaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKaW5kZXggNzRkYWUyMjZmNTQ1YjdhYWFmMzQ3ODc0NDMzNjQyNzAwMTViZDBhNC4uZGVmZDcx
ODExMzY1NDE4MWM1M2U5Nzk2OTQ1ZTMyZGY3NDU5NmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQ2NSw2ICs0NjUsMTAgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEw
OyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBYODZSZWdpc3RlcnM6OmVh
eDsKKyNpZiAhT1MoV0lORE9XUykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2Ny
YXRjaEdQUjEgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgogCiAgICAgLy8gRklYTUU6IEkg
YmVsaWV2ZSB0aGF0IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRlYWQgaW4gdGhlIHNlbnNlIHRoYXQg
aXQganVzdCBjYXVzZXMgdGhlIHNjcmF0Y2gKICAgICAvLyByZWdpc3RlciBhbGxvY2F0b3IgdG8g
c2VsZWN0IGEgZGlmZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3RlbnRpYWxseSBzcGlsbCB0aGluZ3Mu
IEl0IHdvdWxkIGJlIGJldHRlcgpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9
IEFSTTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
OjppcDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJN
NjRSZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNo
R1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBk
aXJlY3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBk
aXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwCmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0
NmU5MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2Rl
KCkKIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAo
bV9jYWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fz
c2VtYmx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
KCkpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVu
bGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJu
TG9jYXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29k
ZUluZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3
MWRkOTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5
MjJkNWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1p
dFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwg
VGFnVHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRH
SW52YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNo
VG9TYXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwot
ICAgIGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0
b3JlKHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVh
c29uKFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAg
ICAgICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0
YWcsIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQ
Uik7CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAv
LyBXZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGws
IGJ1dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
YmZhNGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2
ZDhjZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNs
dWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNf
QVNTRVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkK
IAotCiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwy
MiBAQCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAog
I2VuZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJu
ICJDIiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
dGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2Fs
bEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0
aW9uSGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxM
SW50VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lm
IEVOQUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVO
QUJMRShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2Rl
TWFwLCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYg
KzgzLDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5l
eGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zW2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKwor
ICAgIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9y
TExJbnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFn
KSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAg
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAg
ICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9p
ZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1
bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4o
TExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcs
ICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNv
ZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
KGpzX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1
Y3QoTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFt
cG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50
OjpnZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8j
I25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0
ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJl
ZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29u
ZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRl
MzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAg
IH0gd2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dB
VEUpCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNN
X0dBVEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNv
ZGVSZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgp
KSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5r
KHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xv
Y2F0aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVj
dChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFn
LCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYi
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihM
TEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxz
ZSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAg
ICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01f
R0FURV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkFTU0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywg
T3BlcmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQ
dHJUYWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZt
RW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxp
bnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlw
dCldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9u
czo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVU
aHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFn
Pih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5
VG9OYXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBv
bGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhl
Y3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAg
ICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0
YWlsQ2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdf
anNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2Vw
dGlvbkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0
dXJuRnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRy
PHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZy
b21MTEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFw
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYu
Z2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRo
dW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9
IGVudHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFH
X1RIVU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0Nv
ZGVSZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0
cnVjdCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9w
ZXJhdGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRh
Z0NvZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1
bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBc
CisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExM
SW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUjI190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6
Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNf
dW50YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdl
dCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1
bnRhZ0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdo
aWxlICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRB
R19USFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0
ZTI3MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMx
ZmVhMjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0y
MDQsNiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5j
dGlvblB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7Cisj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcu
bGxpbnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bj
b2RlV2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19P
UENPREVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVt
T3Bjb2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRP
cGNvZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltu
dW1PcGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRy
KFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFn
Q29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNz
KTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7
CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdp
ZGUxNihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJU
YWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0
clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdp
ZGUzMkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAg
ICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOwor
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lO
TElORSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkK
K3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50
Q29kZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNl
bHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisK
K3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZD
b2RlRnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1T
VkMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2Rl
UHRyPHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNv
ZGVJRCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxh
dGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5j
dGlvblB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFn
PihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50
ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vs
c2UKIEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2
ZDI0OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uN2ZjYzlhMTg0YzgwMWM0YmI4
ZmNiYWJmOGQ4MzBkMTQxOGY0ZGRkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9p
ZCBqc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpz
VHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMi
IHZvaWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQp
OworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGlu
ZShQdHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29k
ZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOwor
fQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxv
Y2stPnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lk
IHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3Rh
dGljIERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShl
bnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSks
IGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3
IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRD
b2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBE
aXJlY3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9y
Q29uc3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5j
dGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRl
cnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAg
ICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
KSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMg
dm9pZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMg
TmF0aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9s
aW5lKGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OworI2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8
SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VS
ZWYoKmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJv
Z3JhbUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJ
VENvZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
ICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1Ry
YW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRy
aW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNl
bHNlCiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50
cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRo
dW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hh
cmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVm
KCpqaXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVs
ZVByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRp
dmVKSVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUo
anNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29k
ZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5
cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNo
YXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzIgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVF
bnRyeXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAg
IHJldHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0
dXJuX3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4o
bGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBv
aW50KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAg
ICAgICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQo
T3Bjb2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVz
ZUpJVCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29k
ZVNpemU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6
OldpZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6
OldpZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CiB9CiAKIHZvaWQgc2V0
RW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAppbmRleCA0M2ViMjg2NDA4NjU3ODU2ZDBiOWIxZDJk
YTc2MWM4NDg0MWRiZmQ4Li4yNWVlODIzYWU5Y2JjZWFlYTVjZGQ5NThiYzgyYjRlOThiODQ3Yjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgor
I2luY2x1ZGUgIk9wY29kZVNpemUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQxLDUgKzQy
LDcgQEAgdm9pZCBzZXRFbnRyeXBvaW50KENvZGVCbG9jayopOwogdW5zaWduZWQgZnJhbWVSZWdp
c3RlckNvdW50Rm9yKENvZGVCbG9jayopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUVudHJ5cG9pbnQoKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVu
dHJ5cG9pbnQoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmlj
UmV0dXJuUG9pbnRFbnRyeXBvaW50KE9wY29kZVNpemUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IGJiYTEyMGE3YzU1ODU4ZjM3N2U3OWJiNDI5ZjU5ZDc5OGUxNjM0ZGEuLmM3NmM5
ODVkY2JlNTNkOTI3MTJhYmExNjJiNmJkZGU3ODI5OTQyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGlu
bGluZSBKU1ZhbHVlIGdldE9wZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKSB7IHJldHVyCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJ
TlRfQ0FMTF9FTkRfSU1QTChjYWxsRnJhbWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwK
LSAgICBMTElOVF9SRVRVUk5fVFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgU2xvd1Bh
dGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgKGNhbGxGcmFtZSkpCisgICAgTExJTlRfUkVUVVJOX1RX
TygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0clRhZz4oY2Fs
bFRhcmdldCkpLCAoY2FsbEZyYW1lKSkKIAogI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGdsb2Jh
bE9iamVjdCwgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBfX2N0X2dsb2JhbE9iamVjdCA9IChnbG9iYWxPYmplY3QpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00NjcsNyArNDY3LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bS5n
ZXRMb29wSGludEV4ZWN1dGlvbkNvdW50ZXIocGMpOwogICAgICAgICAqcHRyICs9IGNvZGVCbG9j
ay0+bGxpbnRFeGVjdXRlQ291bnRlcigpLm1fYWN0aXZlVGhyZXNob2xkOwogICAgICAgICBpZiAo
KnB0ciA+PSBPcHRpb25zOjplYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSkKLSAg
ICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRh
Zz4oZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgY2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOworICAgICAgICAgICAgTExJTlRfUkVUVVJOX1RX
TyhMTEludDo6ZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKICAgICB9CiAg
ICAgCiAgICAgCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cDxPcENvbnN0
cnVjdFZhcmFyZ3M+KGNhbGxGcmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3QsIFNldEFyZ3VtZW50
c1dpdGg6Ok9iamVjdCk7CiB9CiAKLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2Fs
bEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQoraW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0
dXJuUG9pbnQpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcENhbGxFdmFsPigpOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24KICAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoYnl0ZWNvZGUubV9hcmdjKTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJh
bWUoY2FsbEZyYW1lKTsKICAgICBjYWxsZWVGcmFtZS0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0
ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSkgPSBjYWxsZWVBc1ZhbHVlOwotICAgIGNhbGxlZUZy
YW1lLT5zZXRSZXR1cm5QQyhyZXR1cm5Qb2ludC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBj
YWxsZWVGcmFtZS0+c2V0UmV0dXJuUEMocmV0dXJuUG9pbnQuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDb2RlQmxvY2sobnVsbHB0cik7CiAgICAgY2Fs
bEZyYW1lLT5zZXRDdXJyZW50VlBDKHBjKTsKICAgICAKQEAgLTE5NzAsMTcgKzE5NzAsMTcgQEAg
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24KICAgICAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jYWxsX2V2YWwpCiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwg
cGMsIExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50
OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KE9wY29kZVNpemU6Ok5hcnJvdykpOwogfQog
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsX3dpZGUxNikKIHsKLSAg
ICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUxNkNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBy
ZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Q
b2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZTo6V2lkZTE2KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWxfd2lkZTMyKQogewotICAgIHJldHVybiBjb21tb25D
YWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIHJldHVybiBjb21tb25DYWxs
RXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludChP
cGNvZGVTaXplOjpXaWRlMzIpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3N0cmNhdCkKQEAgLTIyNjUsOCArMjI2NSw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUg
ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihUaHJvd1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrCiAK
ICAgICBpZiAoT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspIHsKICAgICAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIG5leHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKLSAgICAgICAgYXV0byBuZXh0Qnl0
ZWNvZGUgPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPigqcGMubmV4dCgpLnB0cigp
KTsKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIG5leHRCeXRlY29kZS5leGVj
dXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExM
SW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkucmV0YWdnZWRDb2RlPEpTRW50cnlQ
dHJUYWc+KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDc4NTM2
MGY0ODc2MDcxYWZkNjRhZDFjZmUxYmE4YmVhODM4YWIzZDIuLmE2MTYyNWRhODk0ZjQ5OGU5NDBi
ZWMxNDUyYzVlOWU2ZTk1ZjI0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcApAQCAtNDAsNiArNDAsMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBF
TkFCTEUoSklUKQogCisjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKyNkZWZp
bmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obmFtZSkgXAorICAgIEpTQ19BTk5P
VEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNuYW1lLCBuYW1lKQorCisjZGVmaW5lIEpT
Q19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OX1dJVEhfREVDTEFSRShuYW1lKSBcCisgICAg
ZXh0ZXJuICJDIiB2b2lkIG5hbWUodm9pZCk7IFwKKyAgICBKU0NfQU5OT1RBVEVfSklUX09QRVJB
VElPTihfSklUVGFyZ2V0XyMjbmFtZSwgbmFtZSkKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKK0pT
Q19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGppdENhZ2VQdHJHYXRlQWZ0ZXIpOworI2Vu
ZGlmCitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9KYXZhU2NyaXB0
KTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb05hdGl2ZSk7CitK
U0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFm
dGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb05hdGl2ZUdh
dGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElO
VF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0
ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVf
TExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrVGFnR2F0ZUFmdGVyKTsKKworI2VuZGlmCisKIG5hbWVzcGFjZSBMTEludCB7CiAKIC8vIFRo
ZXNlIHRodW5rcyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgbmVhckNhbGwgdXNlZCBvbiBKSVRl
ZCBjb2RlLgpAQCAtNTIsNyArNzQsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRh
Zz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwogewogICAg
IEpTSW50ZXJmYWNlSklUIGppdDsKIAotICAgIGFzc2VydElzVGFnZ2VkV2l0aDxKU0VudHJ5UHRy
VGFnPih0YXJnZXQpOworICAgIGFzc2VydElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRh
cmdldCk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdp
c3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNj
cmF0Y2hHUFJzWzBdOwpAQCAtNjAsMTYgKzgyLDUzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25z
CiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6
cmVnVDA7CiAjZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0
cih0YXJnZXQpLCBzY3JhdGNoKTsKLSAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBKU0VudHJ5UHRy
VGFnKTsKKyAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOwogCiAgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Ci0gICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHByb2xvZ3VlIHRodW5r
IiwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFn
LCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFn
Pgogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQpCiB7Ci0gICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxKU0VudHJ5UHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRh
Zz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1Byb2xvZ3VlKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQpCit7
CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgTExJbnRDb2RlIHRhcmdldCA9IExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCk7CisgICAgYXNz
ZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKKworI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKKyAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdhc206
Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CisjZWxzZQor
ICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwOworI2VuZGlmCisgICAgaml0LnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICBqaXQubW92ZShK
U0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBzY3JhdGNoKTsKKyAgICBqaXQu
ZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIGp1bXAgdG8gcHJvbG9ndWUgdGh1bmsiLCB0aHVu
a0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQoTExJbnRDb2Rl
IHRhcmdldCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIEpTSW50ZXJmYWNlSklUIGpp
dDsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOworICAg
IGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBPcGVyYXRp
b25QdHJUYWcpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktf
SUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAl
cyByZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvUmV0dXJuUG9pbnQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2lu
ZCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDx0YWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCksIHRo
dW5rS2luZCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5j
dGlvbkZvckNhbGxFbnRyeVRodW5rKCkKQEAgLTc3LDcgKzEzNiw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC04Nyw3ICsxNDYsNyBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIp
KTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9s
b2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
LCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJl
ZjsKIH0KQEAgLTk3LDcgKzE1Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVm
OwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBj
YWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9
CkBAIC0xMDcsNyArMTY2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJl
ZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3Vl
PEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ss
ICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMTcsNyArMTc2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJl
ZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsK
KyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1
ZTxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAiZXZhbCIpKTsKICAgICB9KTsK
ICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEyNyw3ICsxODYsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJw
cm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUsICJwcm9n
cmFtIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTM3LDcgKzE5Niw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50
cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxp
bnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5
UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikp
OwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTQ5LDkgKzIwOCw5IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVu
aygpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgaWYgKFdhc206OkNvbnRleHQ6OnVzZUZhc3RUTFMo
KSkKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
PEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNh
bGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKSVRUaHVu
a1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2Fs
bCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTIxNyw3ICsyNzYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0
Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVm
OwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRD
b2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7Cisg
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1
cm4gY29kZVJlZjsKICAgICB9CkBAIC0yMjUsNyArMjg0LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBz
aXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
bzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRy
PEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BfY2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBj
b2RlUmVmOwogICAgIH0KQEAgLTIzMyw3ICsyOTIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUp
CiAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8SlNF
bnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gzMiIpKTsKKyAgICAgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9j
YXRjaCksICJvcF9jYXRjaDMyIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVS
ZWY7CiAgICAgfQpAQCAtMjQyLDYgKzMwMSwyODcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQog
ICAgIHJldHVybiB7IH07CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhPcGNvZGVTaXplIHNpemUpCit7CisgICAgc3dpdGNo
IChzaXplKSB7CisgICAgY2FzZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsKKyAgICAgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+
IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQiKSk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpX
aWRlMTY6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1
cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPE9w
ZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQxNiIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBjb2RlUmVm
OworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjogeworICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4g
Y29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExM
SW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDMyIikpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIH0KK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxv
b3BIaW50VGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAg
ICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJU
YWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsICJmdXp6ZXJfcmV0dXJuX2Vh
cmx5X2Zyb21fbG9vcF9oaW50IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQor
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFn
LCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQu
Y2FsbChHUFJJbmZvOjpyZWdUMywgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1
bmsiLCBuYW1lKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25z
dCBjaGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuY2FsbChH
UFJJbmZvOjp3YXNtU2NyYXRjaEdQUjAsIHRhZyk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEpOworICAg
IGppdC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSwgT3BlcmF0aW9uUHRyVGFnKTsK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJMTEludCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2FsbEdhdGUoUHRy
VGFnIHRhZykKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LnVudGFnUHRyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuZmFySnVt
cChHUFJJbmZvOjpyZWdUMCwgdGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVy
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCB0YWlsIGNhbGwgZ2F0ZSB0aHVuayIpOwor
fQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NS
RW50cnlHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJsb29wIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlP
U1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC51bnRhZ1Jl
dHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBKU0VudHJ5UHRyVGFnKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZW50cnkgT1NSIGVudHJ5IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKQor
eworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAg
ICAgIGppdC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMCwgV2FzbUVudHJ5UHRyVGFn
KTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAid2FzbSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7
CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKQoreworICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGpp
dDsKKworICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMCwgRXhjZXB0aW9uSGFuZGxl
clB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImV4Y2VwdGlvbiBoYW5kbGVyIHRodW5rIikp
OworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzIGppdDsKKworICAgICAgICBqaXQucmV0KCk7CisKKyAgICAgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInJl
dHVybkZyb21MTEludCB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRo
dW5rKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDMs
IEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0LnN0b3JlUHRyKEFSTTY0UmVnaXN0ZXJzOjps
ciwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCA4KSk7
CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJ
bmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0
clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnLCAidGFnIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0Nh
bGxIZWxwZXJzIGppdDsKKworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgOCksIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAg
aml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnVudGFnUHRyKEdQUkluZm86
OnJlZ1QzLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1w
KEdQUkluZm86OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInVudGFnIHRodW5rIik7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJU
aHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAg
ICAgICBDQ2FsbEhlbHBlcnMgaml0OworICAgICAgICBKU0NfSklUX0NBR0VfQ09NUElMRShqaXQp
OworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnLCAiaml0Q2FnZVB0ciB0aHVuayIpKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gY29kZVJlZjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1
bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0
clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsICJub3JtYWxfb3NyX2V4aXRfdHJhbXBv
bGluZSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworI2lmIEVO
QUJMRShERkdfSklUKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hl
Y2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFt
cG9saW5lLCAiY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAgIH0p
OworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhp
dFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmso
KQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRh
Zz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lLCAiY2hl
Y2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lIHRodW5rIikpOwor
ICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
T1NSRXhpdFB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhPcGNvZGVJRCBvcGNvZGVJRCwgT3Bj
b2RlU2l6ZSBzaXplKQoreworI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgXAor
ICAgIGNhc2UgbmFtZSMjX3JldHVybl9sb2NhdGlvbjogeyBcCisgICAgICAgIHN3aXRjaCAoc2l6
ZSkgeyBcCisgICAgICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7IFwKKyAgICAgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQ
dHJUYWc+PiBjb2RlUmVmOyBcCisgICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsgXAorICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAg
ICAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0
dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRp
b25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25hbWUgIl9yZXR1cm5fbG9jYXRp
b24gdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4gY29k
ZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsg
XAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29k
ZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiksICAj
bmFtZSAiX3JldHVybl9sb2NhdGlvbjE2IHRodW5rIikpOyBcCisgICAgICAgICAgICB9KTsgXAor
ICAgICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2Ug
T3Bjb2RlU2l6ZTo6V2lkZTMyOiB7IFwKKyAgICAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOyBcCisg
ICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsgXAorICAgICAgICAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUj
I19yZXR1cm5fbG9jYXRpb24pLCAjbmFtZSAiX3JldHVybl9sb2NhdGlvbjMyIHRodW5rIikpOyBc
CisgICAgICAgICAgICB9KTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAg
ICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICByZXR1cm4geyB9OyBcCisgICAgfQorCisgICAg
c3dpdGNoIChvcGNvZGVJRCkgeworICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKQor
ICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKQorICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElP
TihvcF9jb25zdHJ1Y3QpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGxfdmFyYXJn
c19zbG93KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3RfdmFyYXJnc19z
bG93KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfaWQpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2dldF9ieV92YWwpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX3B1dF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkK
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIExM
SW50CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaAppbmRleCAwMzY4Y2U5YTJkYTA2MDRmNDM3MjQ1MmVlMTJmODdjNGU2Mzhk
YjBkLi5hOTIyYjI1OTliOWM2Mzk0OWI1NWIzYTE0ZjViNzZjNWViNWU2MWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNDAsNiArNDAsMjIgQEAgZXh0
ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvTmF0aXZlKHZvaWQqLCBWTSos
IFByb3RvQ2FsbEZyYW1lKik7CiB9CiAKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFU
SU9OKQorZXh0ZXJuICJDIiB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIHZvaWQgaml0Q2Fn
ZVB0ckdhdGVBZnRlcih2b2lkKTsKKyNlbmRpZgorCisgICAgdm9pZCB2bUVudHJ5VG9KYXZhU2Ny
aXB0R2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKHZv
aWQpOworCisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFn
R2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZvaWQpOworfQor
I2VuZGlmCisKIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9XYXNtKHZvaWQqIGNvZGUs
IFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIGZyYW1lKQogewogICAgIGF1dG8gY2xvYmJlcml6ZVZh
bGlkYXRvciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKQEAgLTU5LDExICs3NSwzMiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVudHJ5VGh1bmsoKTsKIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBwcm9ncmFtRW50cnlUaHVuaygpOwogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCk7
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJp
Y1JldHVyblBvaW50VGh1bmsoT3Bjb2RlU2l6ZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpOwogCiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3dUaHVu
aygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRs
ZVVuY2F1Z2h0RXhjZXB0aW9uVGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUpOwogCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBqaXRDYWdlUHRyVGh1bmsoKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZUpTR2F0
ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVdhc21HYXRlVGh1bmsodm9pZCosIFB0clRh
ZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlVGFpbENhbGxHYXRlKFB0clRhZyk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NSRW50cnlHYXRlVGh1bmsoKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGVudHJ5T1NSRW50cnlHYXRlVGh1
bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHdhc21P
U1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gcmV0dXJuRnJvbUxMSW50R2F0ZVRodW5rKCk7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB1bnRhZ0dhdGVUaHVu
ayh2b2lkKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0
YWdHYXRlVGh1bmsodm9pZCopOworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRh
Zz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOworI2lmIEVOQUJMRShERkdfSklUKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0VHJh
bXBvbGluZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hl
Y2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1cm5Mb2NhdGlvblRodW5rKE9wY29kZUlE
LCBPcGNvZGVTaXplKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCk7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDllM2NkZTk5MDRjMTAy
YmVlZWY0N2IxNGYzNWZmNjk1MTY5ZmE5N2YuLjQ1MjIwZDNmZWVkZjg3YzdhYmU3ZjM4ZGMyOTY1
NzQ5YTIwY2M5OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1Niw5ICsyNTYsMTIgQEAgY29uc3QgQXJpdGhQcm9m
aWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2VydmVk
TnVtYmVyTnUKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRyVGFn
CiBjb25zdCBKU0VudHJ5UHRyVGFnID0gY29uc3RleHByIEpTRW50cnlQdHJUYWcKIGNvbnN0IEhv
c3RGdW5jdGlvblB0clRhZyA9IGNvbnN0ZXhwciBIb3N0RnVuY3Rpb25QdHJUYWcKK2NvbnN0IEpT
RW50cnlTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKK2Nv
bnN0IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyA9IGNvbnN0ZXhwciBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcKIGNvbnN0IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcgPSBjb25zdGV4cHIgRXhjZXB0aW9uSGFu
ZGxlclB0clRhZworY29uc3QgWWFyckVudHJ5UHRyVGFnID0gY29uc3RleHByIFlhcnJFbnRyeVB0
clRhZwogY29uc3QgTm9QdHJUYWcgPSBjb25zdGV4cHIgTm9QdHJUYWcKLWNvbnN0IFNsb3dQYXRo
UHRyVGFnID0gY29uc3RleHByIFNsb3dQYXRoUHRyVGFnCisgCiAKICMgU29tZSByZWdpc3RlciBj
b252ZW50aW9ucy4KICMgLSBXZSB1c2UgYSBwYWlyIG9mIHJlZ2lzdGVycyB0byByZXByZXNlbnQg
dGhlIFBDOiBvbmUgcmVnaXN0ZXIgZm9yIHRoZQpAQCAtMTAyNiw3ICsxMDI5LDcgQEAgbWFjcm8g
dHJhY2VFeGVjdXRpb24oKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRlZmluZU9TUkV4aXRSZXR1
cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorbWFjcm8gZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2Rl
TmFtZSwgc2l6ZSkKICAgICBtYWNybyBkZWZpbmVOYXJyb3coKQogICAgICAgICBpZiBub3QgQ19M
T09QX1dJTgogICAgICAgICAgICAgXyVvcGNvZGVOYW1lJV9yZXR1cm5fbG9jYXRpb246CkBAIC0x
MDQ4LDMyICsxMDUxLDc2IEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVO
YW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmluZVdp
ZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAoraWYgQVJNNjRFCisgICAgZ2xvYmFsIF9s
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyCisgICAgZ2xv
YmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcgorICAg
IGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFnR2F0
ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrVGFnR2F0ZUFmdGVyCitlbmQKKwogbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQorICAgIG1hY3JvIGxhYmVsTmFycm93
KCkKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgorICAgIGVuZAorCisgICAg
bWFjcm8gbGFiZWxXaWRlMTYoKQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
d2lkZTE2OgorICAgIGVuZAorCisgICAgbWFjcm8gbGFiZWxXaWRlMzIoKQorICAgICAgICBfanNf
dHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgIGVuZAorCiAgICAgaWYgQ19MT09Q
IG9yIENfTE9PUF9XSU4KKyAgICAgICAgc2l6ZShsYWJlbE5hcnJvdywgbGFiZWxXaWRlMTYsIGxh
YmVsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCiAgICAgICAgIGNsb29wQ2FsbEpTRnVu
Y3Rpb24gY2FsbGVlCisgICAgZWxzaWYgQVJNNjRFCisgICAgICAgIG1hY3JvIGNhbGxOYXJyb3co
KQorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJTaXpl
LCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQ
dHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAg
ICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gY2Fs
bFdpZGUxNigpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dp
ZGUxNikgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0
ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVO
YW1lJV93aWRlMTY6CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVu
ZAorCisgICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQorICAgICAgICAgICAgbGVhcCBKU0NDb25m
aWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHBy
IEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMzIpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGpt
cCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBf
anNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgY2FsbCB0Mywg
Y2FsbFB0clRhZworICAgICAgICBlbmQKKworICAgICAgICBtb3ZlIGNhbGxlZSwgdDMKKyAgICAg
ICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBn
ZW4oKSBlbmQpCiAgICAgZWxzZQorICAgICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJlbFdpZGUx
NiwgbGFiZWxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKICAgICAgICAgY2FsbCBjYWxs
ZWUsIGNhbGxQdHJUYWcKKyAgICAgICAgaWYgQVJNdjcgb3IgTUlQUworICAgICAgICAgICAgIyBJ
dCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZp
bml0aW9ucworICAgICAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMg
YSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisgICAgICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJ
bnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAorICAgICAgICAgICAgIyBjcmFz
aGVzLgorICAgICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgICAg
ICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCisgICAgICAgIGVuZAogICAgIGVuZAot
Ci0gICAgaWYgQVJNdjcgb3IgTUlQUwotICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3
IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCi0gICAgICAgICMgZm9y
IHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9mIGluc3RydWN0aW9ucwotICAg
ICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5l
eHBlY3RlZAotICAgICAgICAjIGNyYXNoZXMuCi0gICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJB
ZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCi0gICAgZW5k
Ci0gICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgZGVm
aW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICByZXN0b3JlU3RhY2tQb2ludGVy
QWZ0ZXJDYWxsKCkKICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiBlbmQKIAotbWFj
cm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2Fs
bFB0clRhZykKK21hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1w
MiwgdGVtcDMsIHRlbXA0LCBjYWxsUHRyVGFnKQogICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUsIHNwCiBlbmQKIAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZQotbWFjcm8gcHJlcGFy
ZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKK21h
Y3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0
LCBjYWxsUHRyVGFnKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0
ZW1wMgpAQCAtMTEwOSw4ICsxMTU2LDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIGlmIEFS
TTY0RQotICAgICAgICBhZGRwIDE2LCBjZnIsIHRlbXAzCi0gICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyB0ZW1wMworICAgICAgICBhZGRwIDE2LCBjZnIsIHRlbXA0CiAgICAgZW5kCiAKICAgICBz
dWJwIHRlbXAyLCB0ZW1wMQpAQCAtMTEzMCw3ICsxMTc2LDE0IEBAIG1hY3JvIHByZXBhcmVGb3JU
YWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgZW5k
CiAKICAgICBtb3ZlIHRlbXAxLCBzcAotICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBp
ZiBBUk02NEUKKyAgICAgICAgbW92ZSB0ZW1wNCwgYTIKKyAgICAgICAgbW92ZSBjYWxsZWUsIGEw
CisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25m
aWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp0YWlsQ2FsbCVjYWxsUHRyVGFnJSkgKiBQdHJT
aXplLCBhMQorICAgICAgICBqbXAgW2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgJWNhbGxQ
dHJUYWclCisgICAgZWxzZQorICAgICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCisgICAgZW5k
CiBlbmQKIAogbWFjcm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKQEAgLTExNDQsMTYg
KzExOTcsMTYgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxl
ZSwgY2FsbGVlRnJhbWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9u
dFVwZGF0ZVNQCiAgICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAg
ICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKKyAgICAg
ICAgICAgIHByZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlTbG93UGF0
aFB0clRhZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRG
dW5jdGlvbiglb3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRy
VGFnKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIGNhbGxlZSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBl
bmQKIAogbWFjcm8gZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkK
ICAgICBjcmFzaCgpICMgV2UgZG9uJ3QgcmVhY2ggdGhpcyBpbiBzdHJhaWdodCBsaW5lIGNvZGUu
IFdlIG9ubHkgcmVhY2ggaXQgdmlhIHJldHVybmluZyB0byB0aGUgY29kZSBiZWxvdyB3aGVuIHJl
Y29uc3RydWN0aW5nIHN0YWNrIGZyYW1lcyBkdXJpbmcgT1NSIGV4aXQuCiAKLSAgICBkZWZpbmVP
U1JFeGl0UmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQorICAgIGRlZmluZVJldHVybkxhYmVsKG9w
TmFtZSwgc2l6ZSkKIAogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGxv
YWRpIExMSW50UmV0dXJuUENbY2ZyXSwgUEMKQEAgLTEzNTEsNyArMTQwNCw2IEBAIGVuZAogIyBp
biB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCiBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xv
d1BhdGgpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRD
RlIoKQogCiAgICAgaWYgVFJBQ0lORwpAQCAtMTM3OSwxNiArMTQzMSwyNSBAQCBtYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNl
U2xvd1BhdGgpCiAgICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCiAgICAgICAgIG1vdmUgY2ZyLCBz
cCAjIHJlc3RvcmUgdGhlIHByZXZpb3VzIHNwCiAgICAgICAgICMgcG9wIHRoZSBjYWxsZXJGcmFt
ZSBzaW5jZSB3ZSB3aWxsIGp1bXAgdG8gYSBmdW5jdGlvbiB0aGF0IHdhbnRzIHRvIHNhdmUgaXQK
LSAgICAgICAgaWYgQVJNNjQgb3IgQVJNNjRFCisgICAgICAgIGlmIEFSTTY0CisgICAgICAgICAg
ICBwb3AgbHIsIGNmcgorICAgICAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgICAgICMgdW50YWdS
ZXR1cm5BZGRyZXNzIHdpbGwgYmUgcGVyZm9ybWVkIGluIEdhdGU6OmVudHJ5T1NSRW50cnkuCiAg
ICAgICAgICAgICBwb3AgbHIsIGNmcgotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNw
CiAgICAgICAgIGVsc2lmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAg
ICAgICAgIHBvcCBscgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAg
IGVuZAotICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKworICAgICAgICBpZiBBUk02NEUK
KyAgICAgICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
ZW50cnlPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIC5yZWNvdmVyOgogICAg
ICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CkBAIC0x
NDk0LDcgKzE1NTUsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxl
ZVNhdmVzVXNlZEJ5TExJbnQoKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0
CisgICAgaWYgQVJNNjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJ
bnQpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRh
ZworICAgIGVsc2UKKyAgICAgICAgcmV0CisgICAgZW5kCiBlbmQKIAogIyBUaGlzIGJyZWFrIGlu
c3RydWN0aW9uIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBzeW50aGVzaXplZCBsbGludFBDUmFuZ2VT
dGFydCBsYWJlbApAQCAtMTUyNSw2ICsxNTkxLDE3IEBAIGVsc2UKIGVuZAogICAgIGRvVk1FbnRy
eShtYWtlSG9zdEZ1bmN0aW9uQ2FsbCkKIAorZ2xvYmFsIF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIK
K2dsb2JhbCBfdm1FbnRyeVRvWWFyckpJVAorX3ZtRW50cnlUb1lhcnJKSVQ6CisgICAgZnVuY3Rp
b25Qcm9sb2d1ZSgpCitpZiBBUk02NCBvciBBUk02NEUKKyAgICBqbXAgdDUsIFlhcnJFbnRyeVB0
clRhZworICAgIF92bUVudHJ5VG9ZYXJySklUQWZ0ZXI6CitlbmQKKyAgICBmdW5jdGlvbkVwaWxv
Z3VlKCkKKyAgICByZXQKKwogCiBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICMg
dm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk1JbXBsKFZNKiB2bSkKQEAgLTE1NzAsNiArMTY0Nyw3MSBA
QCBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICByZXQKIGVuZAogCitpZiBB
Uk02NEUKKyAgICAjIHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0cl90IHRh
ZykKKyAgICBlbWl0ICIuZ2xvYmwgX2ppdENhZ2VQdHIiCisgICAgZW1pdCAiX2ppdENhZ2VQdHI6
IgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsg
Y29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRl
OjpqaXRDYWdlUHRyKSAqIFB0clNpemUsIHQyCisgICAgICAgIGptcCBbdDJdLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcKKyAgICAgICAgZ2xvYmFsIF9qaXRDYWdlUHRyR2F0ZUFmdGVyCisgICAgICAg
IF9qaXRDYWdlUHRyR2F0ZUFmdGVyOgorICAgICAgICByZXQKKworICAgIGdsb2JhbCBfdGFpbENh
bGxKU0VudHJ5VHJhbXBvbGluZQorICAgIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lOgorICAg
ICAgICB1bnRhZ1JldHVybkFkZHJlc3MgYTIKKyAgICAgICAgam1wIGEwLCBKU0VudHJ5UHRyVGFn
CisKKyAgICBnbG9iYWwgX3RhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZQorICAgIF90
YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyBhMgorICAgICAgICBqbXAgYTAsIEpTRW50cnlTbG93UGF0aFB0clRhZworCisgICAgZ2xv
YmFsIF9leGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZQorICAgIF9leGNlcHRpb25IYW5kbGVyVHJh
bXBvbGluZToKKyAgICAgICAgam1wIGEwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisKKyAgICBn
bG9iYWwgX3JldHVybkZyb21MTEludFRyYW1wb2xpbmUKKyAgICBfcmV0dXJuRnJvbUxMSW50VHJh
bXBvbGluZToKKyAgICAgICAgcmV0CisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZVByb2dyYW1Q
cm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVQcm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1Jl
dHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlCisKKyAg
ICBnbG9iYWwgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZQorICAgIF9qc1RyYW1w
b2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AK
KyAgICAgICAgam1wIF9sbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZQorCisgICAgZ2xvYmFs
IF9qc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRXZhbFByb2xvZ3Vl
OgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZXZhbF9w
cm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1
ZQorICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZToKKyAgICAgICAgdGFn
UmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJv
bG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZToKKyAg
ICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAg
ICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrCisKKyAgICBnbG9iYWwg
X2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlCisgICAg
X2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlOgorICAg
ICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaworZW5kCisKIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAg
ICAgIyBEdW1teSBlbnRyeSBwb2ludCB0aGUgQyBMb29wIHVzZXMgdG8gaW5pdGlhbGl6ZS4KICAg
ICBfbGxpbnRfZW50cnk6CkBAIC0xNzI0LDIxICsxODY2LDMwIEBAIGVuZCkKIAogb3AobGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiAgICAgcHJvbG9ndWUoZnVu
Y3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xs
aW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2Vf
YXJpdHlDaGVja19mb3JfY2FsbCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9y
Q2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5
Q2hlY2sobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNh
bGxCZWdpbiwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVn
aW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQp
CiAKLQogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8g
KCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQot
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ29uc3RydWN0
QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2go
MCkKIGVuZCkKIAorIyBOZWVkIHRoZXNlIHN0dWIgbGFiZWxzIHRvIG1ha2UganNfdHJhbXBvbGlu
ZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZyBldGMuIExMSW50IGhl
bHBlciBvcGNvZGVzLgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2tfdW50YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6CitfanNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnX3dpZGUx
NjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2tfdW50YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja190YWdfd2lkZTMyOgorICAgIGNyYXNoKCkKIAog
IyBWYWx1ZS1yZXByZXNlbnRhdGlvbi1zcGVjaWZpYyBjb2RlLgogaWYgSlNWQUxVRTY0CkBAIC0y
MTA5LDcgKzIyNjAsNyBAQCBlbmQpCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgc2xvd1Bh
dGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAorICAgICAgICBv
cF9jYWxsX2V2YWwsCiAgICAgICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAg
ICAgbWFjcm8gKCkgZGlzcGF0Y2hPcChuYXJyb3csIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjEx
OCw3ICsyMjY5LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbDoKIAogX2xsaW50X29wX2NhbGxfZXZh
bF93aWRlMTY6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2
YWxfd2lkZTE2LAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUxNiwKICAgICAg
ICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMTYsIG9wX2Nh
bGxfZXZhbCkgZW5kLApAQCAtMjEyNyw3ICsyMjc4LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93
aWRlMTY6CiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogICAgIHNsb3dQYXRoRm9yQ29t
bW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKKyAgICAgICAgb3BfY2FsbF9l
dmFsLAogICAgICAgICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3Jv
ICgpIGRpc3BhdGNoT3Aod2lkZTMyLCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIyMTIsNyArMjM2
MywxMyBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xp
bmUsIG1hY3JvICgpCiAKICAgICAgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCiAgICAgICAg
IGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
KQotICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgaWYgQVJNNjRFCisgICAg
ICAgICAgICBtb3ZlIHIxLCBhMAorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BP
U1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1w
IHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgbm90U3Vw
cG9ydGVkKCkKICAgICBlbmQKQEAgLTIyMjksMTIgKzIzODYsMjMgQEAgb3AoY2hlY2twb2ludF9v
c3JfZXhpdF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICAgICBjQ2FsbDIoX2xsaW50X3Nsb3df
cGF0aF9jaGVja3BvaW50X29zcl9leGl0KQogICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxs
KCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRo
X3RyYW1wb2xpbmUpCi0gICAgICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBpZiBB
Uk02NEUKKyAgICAgICAgICAgIG1vdmUgcjEsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZp
ZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIg
R2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAg
ICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVuZAogZW5kKQogCitvcChub3JtYWxfb3NyX2V4aXRf
dHJhbXBvbGluZSwgbWFjcm8gKCkKKyAgICBkaXNwYXRjaCgwKQorZW5kKQorCisKICMgTGFzdGx5
LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0
IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVz
aW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAogIyBhcyBtdWNoLgpAQCAtMjI3OSw0
ICsyNDQ3LDE4IEBAIG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAoKQog
ICAgIGNyYXNoKCkKIGVuZCkKIAorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6Citfd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9p
bmRpcmVjdDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsX25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93
aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTE2
OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93
YXNtX2NhbGxfbm9fdGxzX3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193
aWRlMzI6CisgICAgY3Jhc2goKQorCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNjI2YTQ2ODE3
YjE1M2IzZDU0NjQ3YzNkODJjMWI0NzQ5ZmU2MjY4NC4uYmU1NjE0OWYxYTU0ZjM2ZTI3ZTcxZjk2
Njk4YWE0MjdiNjYzMjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY4Niw3ICs2ODYsNyBAQCBl
bmQKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKIAogIyBFeHBlY3RzIHRoYXQg
Q29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGlu
ZC4KLW1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8g
ZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQw
CiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVs
CiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQpAQCAtNzI0LDYgKzcyNCw3IEBAIG1hY3JvIGZ1
bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGJ0aXogdDEsIC5jb250
aW51ZQogCiAubm9FeHRyYVNsb3Q6CisgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3Vu
dGFnOgogICAgIC8vIE1vdmUgZnJhbWUgdXAgdDEgc2xvdHMKICAgICBuZWdpIHQxCiAgICAgbW92
ZSBjZnIsIHQzCkBAIC03NTAsNiArNzUxLDcgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRv
bmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxLCA4XQog
ICAgIGFkZHAgOCwgdDMKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKKyAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgogCiAuY29udGludWU6CiAgICAgIyBSZWxvYWQgQ29k
ZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgaXQuCkBAIC0yMTE1
LDcgKzIxMTcsNyBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNv
ZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogICAgIHN0b3JlaSB0MiwgQXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgIHN0b3JlaSBD
ZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgbW92ZSB0Mywgc3AKLSAgICBwcmVw
YXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIHByZXBhcmVD
YWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRyVGFnKQogICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcp
CiAKIC5vcENhbGxTbG93OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhYTE1NzIzYzY0MGYyZDc3ZWE4YTdmZTg4
YTk4YmFlYTg2ZDJiOWI5Li5iZWE3YzU4MWFmZTQyMDYwYWNlM2M5YWIxZTQ4ZGMyZGMwNWMxYmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtMzAwLDE1ICszMDAsMjMgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VD
YWxsKQogICAgIHJldAogZW5kCiAKLQogIyBhMCwgYTIsIHQzLCB0NAogbWFjcm8gbWFrZUphdmFT
Y3JpcHRDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGFkZHAg
MTYsIHNwCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNG
dW5jdGlvbiBlbnRyeQorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBtb3ZlIGVudHJ5LCB0Mwor
ICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCkgKiBQdHJTaXpl
LCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0
clRhZworICAgICAgICBnbG9iYWwgX3ZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lCisgICAg
ICAgIF92bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSlNF
bnRyeVB0clRhZwogICAgIGVsc2UKICAgICAgICAgY2FsbCBlbnRyeSwgSlNFbnRyeVB0clRhZwog
ICAgIGVuZAorICAgIGdsb2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcgorICAgIF92
bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyOgogICAgIHN1YnAgMTYsIHNwCiBlbmQKIApAQCAt
MzI2LDkgKzMzNCwxOCBAQCBtYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgcHJvdG9D
YWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICAgICAgc3VicCAzMiwgc3AKICAgICAgICAgY2Fs
bCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgICAgIGFkZHAgMzIsIHNwCisgICAgZWxz
aWYgQVJNNjRFCisgICAgICAgIG1vdmUgdGVtcDEsIHQzCisgICAgICAgIGxlYXAgSlNDQ29uZmln
ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBH
YXRlOjp2bUVudHJ5VG9OYXRpdmUpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgam1wIFthMl0sIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZyAjIEhvc3RGdW5jdGlvblB0clRhZworICAgICAgICBnbG9iYWwg
X3ZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb05hdGl2ZVRyYW1w
b2xpbmU6CisgICAgICAgIGNhbGwgdDMsIEhvc3RGdW5jdGlvblB0clRhZwogICAgIGVsc2UKICAg
ICAgICAgY2FsbCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZW5kCisgICAgZ2xvYmFs
IF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIKKyAgICBfdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVy
OgogZW5kCiAKIG9wKGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24sIG1hY3JvICgpCkBA
IC00MzEsOCArNDQ4LDE0IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAg
ICAgICAgIG1vdmUgUEMsIGExCiAgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyKQog
ICAgICAgICAgICAgYnRweiByMCwgLnJlY292ZXIKKwogICAgICAgICAgICAgbW92ZSByMSwgc3AK
LSAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgaWYgQVJNNjRF
CisgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQdHJT
aXplLCBhMgorICAgICAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcg
IyBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgam1wIHIw
LCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6CiAgICAg
ICAgICAgICBsb2FkUEMoKQogICAgICAgICBlbmQpCkBAIC02NDUsNyArNjY4LDcgQEAgZW5kCiAj
IEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyLgogCiAjIEV4cGVjdHMgdGhhdCBDb2Rl
QmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgot
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCittYWNybyBmdW5j
dGlvbkFyaXR5Q2hlY2sob3Bjb2RlTmFtZSwgZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAg
ICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAg
ICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCkBAIC02ODIsOSArNzA1LDE2IEBAIG1hY3JvIGZ1bmN0
aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogCiAubm9FeHRyYVNsb3Q6CiAgICAg
aWYgQVJNNjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVVbnRhZykg
KiBQdHJTaXplLCB0MworICAgICAgICBqbXAgW3QzXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisg
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKICAgICAgICAgbG9hZHAg
OFtjZnJdLCBscgogICAgICAgICBhZGRwIDE2LCBjZnIsIHQzCiAgICAgICAgIHVudGFnUmV0dXJu
QWRkcmVzcyB0MworICAgICAgICBfJW9wY29kZU5hbWUlVW50YWdHYXRlQWZ0ZXI6CisgICAgZWxz
ZQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CisgICAgICAgIF8l
b3Bjb2RlTmFtZSVVbnRhZ0dhdGVBZnRlcjoKICAgICBlbmQKIAogICAgIC8vIE1vdmUgZnJhbWUg
dXAgdDEgc2xvdHMKQEAgLTcxMiw5ICs3NDIsMTYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNr
KGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYmFkZGlueiAxLCB0MiwgLmZpbGxMb29wCiAKICAg
ICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVRhZykg
KiBQdHJTaXplLCB0MworICAgICAgICBqbXAgW3QzXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisg
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV90YWc6CiAgICAgICAgIGFkZHAgMTYs
IGNmciwgdDEKICAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyB0MQogICAgICAgICBzdG9yZXAgbHIs
IDhbY2ZyXQorICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVyOgorICAgIGVsc2UKKyAg
ICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKKyAgICAgICAgXyVvcGNvZGVO
YW1lJVRhZ0dhdGVBZnRlcjoKICAgICBlbmQKIAogLmNvbnRpbnVlOgpAQCAtMjE3NSw5ICsyMjEy
LDE1IEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3RvcmVQQygpCiAgICAgc3RvcmVp
IHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAg
bW92ZSB0Mywgc3AKLSAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5
UHRyVGFnKQotICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIEpTRW50cnlQdHJUYWcpCi0KKyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgdDAKKyAgICAgICAgcHJlcGFyZUNhbGwodDAsIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5
UHRyVGFnKQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBjYWxsVGFyZ2V0RnVu
Y3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCB0MCwgSlNFbnRyeVB0clRhZykKKyAgICBlbHNl
CisgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRy
VGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgIGVuZAogLm9wQ2FsbFNsb3c6CiAgICAgc2xvd1Bh
dGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQog
ZW5kCkBAIC0yMjQ1LDcgKzIyODgsNyBAQCBsbGludE9wV2l0aFJldHVybihvcF90b19wcm9wZXJ0
eV9rZXksIE9wVG9Qcm9wZXJ0eUtleSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQog
CiAKLWNvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybygpIGVuZCwgbWFjcm8gKHNpemUpCitj
b21tb25PcChsbGludF9vcF9jYXRjaCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKICAgICAj
IFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUg
KGJlY2F1c2UgdGhlCiAgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBz
ZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KICAgICAjIHRoZSBpbnRlcnByZXRlcidz
IHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCkBAIC0yMzEw
LDcgKzIzNTMsMTMgQEAgb3AobGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwg
bWFjcm8gKCkKICAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93
aW5nIHByb3RvY29sLgogICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQogICAgIGNvbnZlcnRDYWxs
ZWVUb1ZNKHQxKQotICAgIGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBFeGNl
cHRpb25IYW5kbGVyUHRyVGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIGxvYWRwIFZNOjp0YXJn
ZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29u
c3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpl
eGNlcHRpb25IYW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAg
ICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZworICAgIGVuZAogZW5kKQogCiAKQEAgLTMwMTgsNCArMzA2NywzIEBAIG9wKGZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsIG1hY3JvICgpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgZG9SZXR1cm4oKQogZW5kKQotCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQppbmRleCBiOTMyMjEzNDgzNDJl
OWFhODg4ODMyZDVjN2JhZDE2NjQ3YWNiNDViLi42ZDE1Njk2NDMwNmZmMzRhYmY2NWIxNmU5NWVi
MjM1MjYxNDlkNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2Vi
QXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJs
eS5hc20KQEAgLTEzOSw4ICsxMzksMTIgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xv
Z3VlKGNvZGVCbG9ja1JlZ2lzdGVyKQogCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNV
c2VkQnlXYXNtKCkKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgICAg
ICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKLSAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRy
eVB0clRhZworICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6Ondhc21PU1JFbnRyeSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICBq
bXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIFdhc21FbnRyeVB0clRhZworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZworICAg
ICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIoY29kZUJsb2NrUmVnaXN0ZXIpCiAgICAgICAgIGVuZCkKQEAgLTE1OSw5
ICsxNjMsMTQgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAg
YnRweiByMSwgLnJlY292ZXIKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdh
c20oKQogICAgICAgICAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVu
dGFnUmV0dXJuQWRkcmVzcyBzcAogICAgICAgICAgICAgbW92ZSByMCwgYTAKLSAgICAgICAgICAg
IGptcCByMSwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAg
ICAgICAgICBtb3ZlIHIxLCB3czAKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
d2FzbU9TUkVudHJ5KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVu
ZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKQEAgLTI1Myw3ICsy
NjIsNiBAQCBlbmQKIAogbWFjcm8gd2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2NrU2V0dGVyLCBsb2FkV2FzbUluc3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1l
IGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgotICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKICAg
ICBwcmVzZXJ2ZUNhbGxlclBDQW5kQ0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5
V2FzbSgpCiAgICAgbG9hZFdhc21JbnN0YW5jZSgpCkBAIC00NTYsNyArNDY0LDEyIEBAIGVuZAog
bWFjcm8gZG9SZXR1cm4oKQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAg
IHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0CisgICAgaWYgQVJNNjRFCisgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6ZSwgYTIKKyAgICAg
ICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgIGVsc2UKKyAgICAgICAgcmV0
CisgICAgZW5kCiBlbmQKIAogIyBFbnRyeSBwb2ludApAQCAtNDk3LDcgKzUxMCwxMyBAQCBvcCh3
YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUsIG1hY3JvICgpCiAgICAgbG9hZGkg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCiAgICAg
Y0NhbGw0KF9zbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24pCiAKLSAgICBqbXAgcjAsIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbW92ZSByMCwgYTAK
KyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZp
Z0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRyU2l6ZSwg
YTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCByMCwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZworICAgIGVuZAogZW5kKQogCiAjIERpc2FibGUgd2lkZSB2ZXJzaW9uIG9mIG5hcnJvdy1v
bmx5IG9wY29kZXMKQEAgLTcwNSw3ICs3MjQsMzggQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNtQ2Fs
bChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgIGVuZCkKIAog
ICAgICAgICAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKLSAgICAgICAgICAgIGNh
bGwgd3MwLCBTbG93UGF0aFB0clRhZworCisgICAgICAgICAgICBjdHgobWFjcm8ob3Bjb2RlTmFt
ZSwgb3Bjb2RlU3RydWN0LCBzaXplKQorICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxOYXJyb3co
KQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUpICogUHRyU2l6ZSwgd3MxCisgICAgICAg
ICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50
cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAg
ICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgICAgICAgICAgICAgICAg
IGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKwor
ICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMTYoKQorICAgICAgICAgICAgICAgICAgICBp
ZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3Rl
eHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bj
b2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAg
am1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
KyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAs
IEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAg
ICAgICAgbWFjcm8gY2FsbFdpZGUzMigpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQor
ICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93
aWRlMzIpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0s
IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bj
b2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBzaXpl
KGNhbGxOYXJyb3csIGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVu
ZCkKKyAgICAgICAgICAgICAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQor
ICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgd3Mx
CiAgICAgICAgICAgICBsb2FkaSBXYXNtOjpGdW5jdGlvbkNvZGVCbG9jazo6bV9udW1DYWxsZWVM
b2NhbHNbd3MxXSwgd3MxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJi
CmluZGV4IGY5ZTU3MzJmYWYxNGIwODA5YmMyYmI2YzE5YjFjODAyYzU5ZjgzMDIuLmE1YTBiY2Rh
NTQxNGE2ZjBiNmI5ZGJmZGQ0MWQxYzA1YzQwZmI3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC00Myw2ICs0Myw3IEBACiAjICB4MyAgPT4gdDMsIGEz
CiAjICB4NCAgPT4gdDQKICMgIHg1ICA9PiB0NQorIyAgeDYgID0+IHQ2CiAjIHgxMyAgPT4gICAg
ICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE2ICA9PiAgICAgICAgICAgICAgICAgIChzY3Jh
dGNoKQogIyB4MTcgID0+ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVmNWEzMmQ1MTBmYzgwYzA2MzhhMzllZDY1
MWFlZjVhOWQwZmZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dhdGUuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCisj
aWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKworI2RlZmluZSBKU0NfVVRJTElU
WV9HQVRFUyh2KSBcCisgICAgdihqaXRDYWdlUHRyLCBOb1B0clRhZykgXAorICAgIHYodGFpbENh
bGxKU0VudHJ5UHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYodGFpbENhbGxKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcsIE5vUHRyVGFnKSBcCisgICAgdihsb29wT1NSRW50cnksIE5vUHRyVGFnKSBcCisg
ICAgdihlbnRyeU9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYod2FzbU9TUkVudHJ5LCBOb1B0
clRhZykgXAorICAgIHYoZXhjZXB0aW9uSGFuZGxlciwgTm9QdHJUYWcpIFwKKyAgICB2KHJldHVy
bkZyb21MTEludCwgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrVW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVja1RhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisgICAgdih2bUVu
dHJ5VG9KYXZhU2NyaXB0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdih2bUVudHJ5VG9OYXRpdmUs
IEhvc3RGdW5jdGlvblB0clRhZykgXAorCisjZGVmaW5lIEpTQ19KU19HQVRFX09QQ09ERVModikg
XAorICAgIHYob3BfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsLCBK
U0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3QsIEpTRW50cnlQdHJUYWcpIFwKKyAg
ICB2KG9wX2l0ZXJhdG9yX25leHQsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9y
X29wZW4sIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfc2xvdywgSlNFbnRyeVNsb3dQ
YXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRy
VGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3Rfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBc
CisgICAgdihvcF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdihvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwK
KyAgICB2KG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93LCBKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcpIFwKKyAgICB2KG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93
UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF9ldmFsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0
clRhZykgXAorICAgIHYob3BfaXRlcmF0b3JfbmV4dF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX29wZW5fc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSlNDX1dBU01fR0FURV9P
UENPREVTKHYpIFwKKyAgICB2KHdhc21fY2FsbCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdh
c21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2Nh
bGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKworI2Vsc2UKKyNk
ZWZpbmUgSlNDX1dBU01fR0FURV9PUENPREVTKHYpCisjZW5kaWYKKworZW51bSBjbGFzcyBHYXRl
IDogdWludDhfdCB7CisjZGVmaW5lIEpTQ19ERUZJTkVfR0FURV9FTlVNKGdhdGVOYW1lLCB0YWcp
IGdhdGVOYW1lLAorI2RlZmluZSBKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0oZ2F0ZU5hbWUs
IHRhZykgZ2F0ZU5hbWUsIGdhdGVOYW1lIyNfd2lkZTE2LCBnYXRlTmFtZSMjX3dpZGUzMiwKKyAg
ICBKU0NfVVRJTElUWV9HQVRFUyhKU0NfREVGSU5FX0dBVEVfRU5VTSkKKyAgICBKU0NfSlNfR0FU
RV9PUENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkKKyAgICBKU0NfV0FTTV9HQVRF
X09QQ09ERVMoSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQorI3VuZGVmIEpTQ19ERUZJTkVf
R0FURV9FTlVNCit9OworCisjZGVmaW5lIEpTQ19DT1VOVChnYXRlTmFtZSwgdGFnKSArIDEKKyNk
ZWZpbmUgSlNDX09QQ09ERV9DT1VOVChnYXRlTmFtZSwgdGFnKSArIDMKK3N0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9IDAgSlNDX1VUSUxJVFlfR0FURVMoSlNDX0NPVU5U
KSBKU0NfSlNfR0FURV9PUENPREVTKEpTQ19PUENPREVfQ09VTlQpIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyhKU0NfT1BDT0RFX0NPVU5UKTsKKyN1bmRlZiBKU0NfQ09VTlQKKyN1bmRlZiBKU0NfT1BD
T0RFX0NPVU5UCisjZWxzZQorLy8gS2VlcCBpdCBub24temVybyB0byBtYWtlIEpTQ0NvbmZpZydz
IGFycmF5IG5vdCBbMF0uCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mR2F0ZXMg
PSAxOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmln
LmgKaW5kZXggNWE0NzMxN2M2MmE1ZWJhNjY2Njc1NzM1Zjc3NDAzNTAwYzY4MGI0MS4uN2Y5NmVj
NTJlZDIxYWZkZTMzZGExMzBkYjdkZDQ2OTRlYzYxOThkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJHYXRlLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiT3B0
aW9uc0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+CkBAIC05Miw2ICs5Myw3IEBA
IHN0cnVjdCBDb25maWcgewogICAgICAgICBPcGNvZGUgb3Bjb2RlTWFwW251bU9wY29kZUlEcyAr
IG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBPcGNvZGUgb3Bjb2RlTWFwV2lkZTE2W251bU9w
Y29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBPcGNvZGUgb3Bjb2RlTWFwV2lk
ZTMyW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOworICAgICAgICBjb25zdCB2b2lk
KiBnYXRlTWFwW251bWJlck9mR2F0ZXNdOwogICAgIH0gbGxpbnQ7CiAKICNpZiBDUFUoQVJNNjRF
KSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTExNyw2ICsxMTksNyBAQCBleHRlcm4g
IkMiIEpTX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX2pzY0NvbmZpZzsKIGNvbnN0ZXhwciBzaXpl
X3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVNYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxp
bnQub3Bjb2RlTWFwKTsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVN
YXBXaWRlMTYgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwV2lkZTE2KTsK
IGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVNYXBXaWRlMzIgPSBvZmZz
ZXRvZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwV2lkZTMyKTsKK2NvbnN0ZXhwciBzaXpl
X3Qgb2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50
LmdhdGVNYXApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKaW5kZXggYTk0MTYzNGJmZmRhN2E0NjMxNTZjNDU5MDZm
Nzc0OWJlYTIyNmFjNy4uOTkxMWUxOWI4NzI5MjY2ZmQxNmMzOTYxNzkyYjIxOTU0Mzg0MjFjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCkBAIC0yOCw2
ICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisjaW5jbHVkZSA8bWFjaGluZS9jcHVfY2FwYWJpbGl0aWVzLmg+CisjaW5jbHVkZSA8c3lz
L21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlND
IHsKIAogI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQpAQCAtNjEs
NCArNjcsMzIgQEAgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3VwKCkKIAogI2VuZGlmIC8vIENQ
VShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogCisjaWYgQ1BVKEFSTTY0RSkK
KworUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyB0YWcpCit7CisjZGVmaW5lIFJF
VFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgY2FzZSBf
dGFnTmFtZTogcmV0dXJuIGNhbGxlclR5cGU7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKKyAgICB9CisjdW5kZWYgUkVU
VVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKK30K
KworUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0clRhZyB0YWcpCit7CisjZGVmaW5lIFJF
VFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgY2FzZSBf
dGFnTmFtZTogcmV0dXJuIGNhbGxlZVR5cGU7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKKyAgICB9CisjdW5kZWYgUkVU
VVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKK30K
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NQdHJUYWcuaAppbmRleCBkZjhiNDAyMjY2ZTBlMDIwMTlhZjM1ZjY4ZTkxZmFhNzhi
ZTc5MzViLi4zMzhhYWFlYWU2YTEyNTUzNjQ0ZWQ1NTczYWY1YjFiYzRmMDM5MDc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaApAQCAtMjcsNDYgKzI3LDUzIEBA
CiAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1B0clRhZy5o
PgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2Fn
ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMi
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0
cl90IHRhZyk7CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5nIFB0clRhZyA9IFdU
Rjo6UHRyVGFnOwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19QVFJUQUcodikgXAotICAgIC8qIE5h
dGl2ZSBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOb25lICovIFwKICAg
ICB2KERPTUpJVEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KFB1dFZhbHVl
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUp
IFwKLSAgICAvKiBKSVQgTm9uZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6Tm9uZSAq
LyBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFibGVNZW1vcnlQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoTGlu
a0J1ZmZlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpO
b25lKSBcCi0gICAgLyogTmF0aXZlIE5hdGl2ZSAqLyBcCisgICAgdihZYXJyOEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZ
YXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6
Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seTE2Qml0
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwK
KyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOYXRpdmUgKi8gXAogICAgIHYoQnl0ZWNvZGVQ
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZl
KSBcCiAgICAgdihKSVRQcm9iZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlRXhlY3V0b3JQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAg
dihKSVRQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICB2KFNsb3dQYXRo
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2
ZSkgXAotICAgIC8qIEpJVCBOYXRpdmUgKi8gXAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOk5h
dGl2ZSAqLyBcCiAgICAgdihOYXRpdmVUb0pJVEdhdGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogTmF0aXZlIEpJVCAqLyBc
CisgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxsZXI6SklUICovIFwK
ICAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KEpJVFRvTmF0aXZl
R2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKLSAgICAvKiBKSVQgSklUICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpKSVQg
Ki8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFRodW5rUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUU3R1YlJv
dXRpbmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCiAgICAgdihKU0VudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCkgXAorICAgIHYoSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNJbnRlcm5hbFB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAg
ICB2KEpTU3dpdGNoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogICAgIHYoT1NSRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFeGl0UHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoV2FzbUVudHJ5UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAg
IHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKSBcCi0gICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKICAgICB2KFlhcnJCYWNrdHJhY2tQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVf
UFRSVEFHKG5hbWUsIHR5cGUsIHRhcmdldCkgV1RGX0RFQ0xBUkVfUFRSVEFHKG5hbWUpCkBAIC0x
MDgsMTggKzExNSwyOCBAQCBGT1JfRUFDSF9KU0NfUFRSVEFHKEpTQ19ERUNMQVJFX1BUUlRBRykK
ICNwcmFnbWEgd2FybmluZyhwb3ApCiAjZW5kaWYKIAorSlNfRVhQT1JUX1BSSVZBVEUgUHRyVGFn
Q2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyk7CitKU19FWFBPUlRfUFJJVkFURSBQdHJUYWdD
YWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnKTsKKwogdGVtcGxhdGU8UHRyVGFnIHRhZywgUHRy
VGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlLCBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUsIHR5
cGVuYW1lIFB0clR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQdHJUeXBlIHRhZ0pTQ0NvZGVQ
dHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2FsbGVyVHlwZSA9PSBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2FsbGVlVHlwZSA9PSBQ
dHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3RleHByICh0YWcgIT0g
SklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9
PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7Ci0gICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAgICAgICAgICAg
ICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIp
OwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOwotICAgICAgICB9CisgICAgICAgIHN0YXRpY19hc3NlcnQodGFn
ID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAg
ICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQorICAgICAgICAgICAgSklU
T3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOworICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKKyAgICAg
ICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24o
cHRyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJh
dGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpKSk7
CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
UHRyVHlwZT4oaml0Q2FnZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIHRhZykpOworI2Vu
ZGlmCiAgICAgfQogICAgIHJldHVybiBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRy
KTsKIH0KQEAgLTEyOSwxNyArMTQ2LDY0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUg
dW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGNh
bGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICBpZiBjb25zdGV4cHIgKGNh
bGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlKSB7Ci0gICAgICAgIGlmIGNvbnN0
ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykgewotICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQot
ICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRP
cGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9z
dEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3Rh
bmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCh0
YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBK
SVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Cisg
ICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAg
ICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlv
bihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lzZV9jYXN0PFB0clR5
cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZv
aWQqPihwdHIpKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1vdmVDb2RlUHRyVGFn
KHB0cik7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAgICAgICBQ
dHJUeXBlIHJlbW92ZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCgodGFnSlNDQ29kZVB0ckltcGw8dGFnLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBl
PihyZW1vdmVkKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1vdmVkOwogICAgICAg
ICB9CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dW50YWdOYXRpdmVDb2RlUHRySW1w
bDx0YWc+KHB0cik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+CitpbmxpbmUgUHRy
VHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihK
U0NfSklUX0NBR0UoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpLCBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdGFja1BvaW50ZXIpKSk7CisjZW5kaWYKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVy
biBwdHJhdXRoX3NpZ25fdW5hdXRoZW50aWNhdGVkKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19k
ZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7CisjZWxz
ZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlw
ZT4KK2lubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxs
KFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCit7CisgICAgQVNTRVJUKHB0
cik7CisgICAgVU5VU0VEX1BBUkFNKHN0YWNrUG9pbnRlcik7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgUHRyVHlwZSB1bmNh
Z2VkID0gcmVtb3ZlQ29kZVB0clRhZyhwdHIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh0YWdD
b2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwodW5jYWdlZCwgc3RhY2tQb2ludGVyKSA9
PSBwdHIpOworICAgICAgICByZXR1cm4gdW5jYWdlZDsKKyAgICB9CisjZW5kaWYKKyNpZiBDUFUo
QVJNNjRFKQorICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2lu
dGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwogI2lmIENQVShBUk02
NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogdm9pZCBpbml0aWFsaXplUHRyVGFnTG9v
a3VwKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0
LmgKaW5kZXggYWRkMjY0ZTkwOTc1YjI2NWZkNWJlMTBmMjYzMmZkNzVlMjg2YzgxYy4uZjMwNWU0
YTE2NGQwMWZmYjFmODFjNzllYjVlNDlmMDQ1YjgxODVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCkBAIC0zNCw3ICszNCwxMCBAQCBzdHJ1Y3QgTWF0
Y2hSZXN1bHQ7CiAjaWYgQ1BVKEFERFJFU1MzMikKIHVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9
IHVpbnQ2NF90OwogI2Vsc2UKLXVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9IE1hdGNoUmVzdWx0
Oworc3RydWN0IEVuY29kZWRNYXRjaFJlc3VsdCB7CisgICAgc2l6ZV90IHN0YXJ0OworICAgIHNp
emVfdCBlbmQ7Cit9OwogI2VuZGlmCiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CkBAIC01Niw2ICs1
OSwxMiBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICAsIGVuZChiaXR3aXNlX2Nhc3Q8
TWF0Y2hSZXN1bHQ+KG1hdGNoKS5lbmQpCiAgICAgewogICAgIH0KKyNlbHNlCisgICAgQUxXQVlT
X0lOTElORSBNYXRjaFJlc3VsdChFbmNvZGVkTWF0Y2hSZXN1bHQgbWF0Y2gpCisgICAgICAgIDog
c3RhcnQobWF0Y2guc3RhcnQpCisgICAgICAgICwgZW5kKG1hdGNoLmVuZCkKKyAgICB7CisgICAg
fQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJlc3VsdCBmYWlsZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCAwZDJmNWFj
Zjc5Y2RmNTc0OThlNmE3M2MwNjcyZDZkZDRiZjg4NDc4Li5lNzE3ZDMwZTY0ZDE1OTczNDc5MmEz
ZjQ4YjkyMTY1NzJmYjQwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcApAQCAtNTAsNiArNTAsMTEgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJ
VENhZ2VBZGRpdGlvbnMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTM5
Miw2ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQWxsSklUT3B0aW9ucygpCiAgICAgT3B0
aW9uczo6dXNlT01HSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25zOjp1c2VET01KSVQoKSA9IGZh
bHNlOwogICAgIE9wdGlvbnM6OnVzZVJlZ0V4cEpJVCgpID0gZmFsc2U7CisgICAgT3B0aW9uczo6
dXNlSklUQ2FnZSgpID0gZmFsc2U7CiB9CiAKIHZvaWQgT3B0aW9uczo6cmVjb21wdXRlRGVwZW5k
ZW50T3B0aW9ucygpCkBAIC0xMTE0LDQgKzExMjAsMTAgQEAgYm9vbCBPcHRpb25SZWFkZXI6Ok9w
dGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2Jvb2wgY2FuVXNlSklUQ2FnZSgpIHsg
cmV0dXJuIEpTQ19KSVRfQ0FHRV9WRVJTSU9OKCk7IH0KKyNlbHNlCitib29sIGNhblVzZUpJVENh
Z2UoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTlkZjU1ZWJk
Mjc2Y2UxNGRkYzliODdjZDAxZTZlYmM3ZjJmNzdmNS4uYjBhMDUyMDYzMGU4ZDBlYWZkMTcwMjQ1
ZTE0Y2YzMTE3ZDE2OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCkBAIC00Myw2ICs0Myw4IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gdHJ1ZTsKIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAjZW5kaWYKIAorSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
YW5Vc2VKSVRDYWdlKCk7CisKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3JrPwogLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlNDX09QVElPTigpIG1h
Y3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBpbiB1c2UsCkBAIC01
MjAsNiArNTIyLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzZWVkRm9yTElDTUZ1enplciwgNDI0MjQyLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJsZSwgYWxsb3dIb2lzdGluZ0xJQ01Qcm9iYWJp
bGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNl
dHRlcnNPbkdsb2JhbE9iamVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICB2KEJvb2wsIHVzZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRy
KSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IDljNGI1OTU0NmU2
Zjk2MGFiNzU4ZTNhNTNmMmI2MWRiYjY3NGMyMWUuLjkwNjIxMTIxYTgxZTMxYjUyMTc1YjU5N2Q5
YmM0MTI2NDg2NzYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93
UGF0aHMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIFdBU01fQ0FMTF9SRVRVUk4odGFy
Z2V0SW5zdGFuY2UsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIGRvIHsgXAotICAgICAgICBX
QVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBTbG93UGF0aFB0clRh
Zz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0YW5jZSk7IFwKKyAgICAgICAgV0FTTV9SRVRVUk5f
VFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnPihj
YWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAj
ZGVmaW5lIENPREVfQkxPQ0soKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CmluZGV4IDIyYmY2NmQ4YzgyMmRhOTFlMDMxODA2YTJmNjlkMzZlNGJkOGY3YmQuLjk0ZDMwMmFl
YWZkNTE2YTViM2ZjN2Y0YmY1Zjc5NWEzZjU2Y2E3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFlhcnIgewogCisjaWYgQ1BVKEFSTTY0KQorSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJ
T04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJKSVRBZnRl
cik7CisjZW5kaWYKKwogTWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpNYXRjaGluZ0NvbnRleHRIb2xk
ZXIoVk0mIHZtLCBZYXJyQ29kZUJsb2NrKiB5YXJyQ29kZUJsb2NrLCBNYXRjaEZyb20gbWF0Y2hG
cm9tKQogICAgIDogbV92bSh2bSkKIHsKQEAgLTM3NDYsOSArMzc1MCw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWN4KTsKICNlbmRpZgogI2VsaWYgQ1BV
KEFSTTY0KQotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIGlmIChtX2RlY29k
ZVN1cnJvZ2F0ZVBhaXJzKSB7Ci0gICAgICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4MTAw
MDApLCBzdXBwbGVtZW50YXJ5UGxhbmVzQmFzZSk7CiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigweGQ4MDApLCBsZWFkaW5nU3Vycm9nYXRlVGFnKTsKICAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKDB4ZGMwMCksIHRyYWlsaW5nU3Vycm9nYXRlVGFnKTsKQEAgLTM4MDMsOCArMzgw
NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJ4
KTsKICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKICNlbGlmIENQVShBUk02NCkKLSAg
ICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICBwb3BQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworICAgICAgICAvLyBEbyBub3RoaW5n
CiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgcG9wKEFSTVJlZ2lzdGVyczo6cjgpOwog
ICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyNik7CkBAIC0zODEzLDcgKzM4MTQsMTMgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAjZWxpZiBDUFUoTUlQUykKICAgICAgICAgLy8gRG8gbm90aGluZwogI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZXRhZ0Nv
ZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPigmdm1FbnRyeVRv
WWFyckpJVEFmdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgZmFySnVtcChyZWdUMCwgT3BlcmF0aW9u
UHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIHJldCgpOworI2VuZGlmCiAgICAgfQogCiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggNjY0MjhlMDY2M2YzMzIwOTE3
NzgxZGJiOWQwYzczMGQyYjZkNjg1Yi4uMTViN2JkNmEyNmZmNmU0YjAwMTIxMjk4OWU4ZmRjZWVh
NWE0YjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtNzYsNiArNzYs
OSBAQCBjbGFzcyBNYXRjaGluZ0NvbnRleHRIb2xkZXIgewogI2VuZGlmCiB9OwogCitleHRlcm4g
IkMiIEVuY29kZWRNYXRjaFJlc3VsdCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0IHZvaWQqIGlucHV0
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdD
b250ZXh0SG9sZGVyKiBtYXRjaGluZ0NvbnRleHQsIGNvbnN0IHZvaWQqIGNvZGVQdHIpOworZXh0
ZXJuICJDIiB2b2lkIHZtRW50cnlUb1lhcnJKSVRBZnRlcih2b2lkKTsKKwogY2xhc3MgWWFyckNv
ZGVCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoWWFyckNvZGVCbG9jayk7CkBAIC0xMDksMjUgKzExMiw0MSBAQCBjbGFzcyBZYXJy
Q29kZUJsb2NrIHsKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29u
dGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhC
aXRDb2RlKCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZt
RW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgJm1hdGNoaW5nQ29u
dGV4dCwgcmV0YWdDb2RlUHRyPFlhcnI4Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVm
OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTgsIFlhcnI4Qml0UHRyVGFn
PihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3Ro
LCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hS
ZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7CisjaWYgQ1BVKEFS
TTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwg
c3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFy
cjE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVu
Y3Rpb25QdHI8WWFyckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGlu
Z0NvbnRleHQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29u
c3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBNYXRjaGlu
Z0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCho
YXM4Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRy
LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seThCaXRQdHJUYWcs
IFlhcnJFbnRyeVB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRy
PFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1fbWF0Y2hP
bmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51
bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1
bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjRFKQor
ICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQs
IGxlbmd0aCwgbnVsbHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnJNYXRj
aE9ubHkxNkJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0
KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYsIFlhcnJNYXRjaE9ubHkx
NkJpdFB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5w
dXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAg
ICAgfQogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvT1NBbGxvY2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKaW5kZXgg
NzcxMzYyYjkyYTJlNTIyOTM5ODRlMTE2NTFiZDJhOTM5M2Q5ODNhMi4uMjY4OGE0ZWZkZjgxN2Ri
N2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NB
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyByZWxlYXNlRGVjb21taXR0ZWQgc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVz
ZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBk
ZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2ZVVuY29tbWl0dGVkIHJldHVybnMgdG8KICAgICAvLyB5
b3UgbWVtb3J5IHRoYXQgaXMgemVyb2VkLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
KiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFi
bGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVf
dCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9y
IGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKQEAgLTU1LDI3
ICs1NSwyNyBAQCBjbGFzcyBPU0FsbG9jYXRvciB7CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
c3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBWTSBpbiBhbiBjb21taXR0ZWQg
c3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3VsZCBiZSBjYWxsZWQgb24gYSBy
ZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRo
ZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29tbWl0dGVkIHN0YXRlLgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3Qs
IFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVzYWdl
ID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFn
ZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJh
c2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVz
ZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIg
dGhhbgogICAgIC8vIGNvbW1pdHRpbmcvZGVjb21taXR0aW5nIHRoZSBlbnRpcmUgcmVnaW9uIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyBhIHN1YnJlZ2lvbiB0byBiZQogICAgIC8vIHNwZWNp
ZmllZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21t
aXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3du
VXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlID0gVW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2Fn
ZUVuYWJsZWQgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFsbG9jYXRlIGFuIGV4aXN0aW5nLCBjb21t
aXR0ZWQgYWxsb2NhdGlvbi4KICAgICAvLyBUaGUgcHJpb3IgYWxsb2NhdGlvbiBtdXN0IGJlIGZ1
bGx5IGNvbWl0dGVkLCBhbmQgdGhlIG5ldyBzaXplIHdpbGwgYWxzbyBiZSBmdWxseSBjb21taXR0
ZWQuCiAgICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgcHJvdmlkZWQgc2luY2UgaXQgbWF5IGJlIHBv
c3NpYmxlIHRvIG9wdGltaXplIHRoaXMgb3BlcmF0aW9uIG9uIHNvbWUgcGxhdGZvcm1zLgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQo
VCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2Us
IGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CisgICAgc3Rh
dGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3
U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKIAogICAgIC8v
IEhpbnQgdG8gdGhlIE9TIHRoYXQgYW4gYWRkcmVzcyByYW5nZSBpcyBub3QgZXhwZWN0ZWQgdG8g
YmUgYWNjZXNzZWQgYW55dGltZSBzb29uLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbih2b2lkKiwgc2l6ZV90KTsKIH07CiAKLWlubGlu
ZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUs
IHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVj
dXRhYmxlKQoraW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCog
YmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBl
eGVjdXRhYmxlKTsKKyAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVT
aXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBj
b21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOwogICAgIHJldHVy
biBiYXNlOwogfQpAQCAtODYsOSArODYsOSBAQCBpbmxpbmUgdm9pZCBPU0FsbG9jYXRvcjo6ZGVj
b21taXRBbmRSZWxlYXNlKHZvaWQqIHJlbGVhc2VCYXNlLCBzaXplX3QgcmVsZWFzZVNpegogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKK2lubGluZSBUKiBPU0Fs
bG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFi
bGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHJlc2VydmVB
bmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAgICB2b2lk
KiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBtZW1jcHkobmV3QmFzZSwgb2xkQmFzZSwg
c3RkOjptaW4ob2xkU2l6ZSwgbmV3U2l6ZSkpOwogICAgIGRlY29tbWl0QW5kUmVsZWFzZShvbGRC
YXNlLCBvbGRTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG5ld0Jhc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QYWdlUmVzZXJ2YXRpb24uaAppbmRleCBhMmFlZTg4NGU5ODY0Y2Q5MzIxYTZiNDk0ZTllNjk4
ODI0NDMxMDMwLi40OTRiZjA1ZTAwMTcxNTM4NTFlYjEwYTU1MzNjMjJmYzY1Y2I3NzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaApAQCAtNTUsMTIgKzU1LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKIHB1YmxpYzoK
LSAgICBQYWdlUmVzZXJ2YXRpb24oKQotICAgICAgICA6IG1fY29tbWl0dGVkKDApCi0gICAgICAg
ICwgbV93cml0YWJsZShmYWxzZSkKLSAgICAgICAgLCBtX2V4ZWN1dGFibGUoZmFsc2UpCi0gICAg
ewotICAgIH0KKyAgICBQYWdlUmVzZXJ2YXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBQ
YWdlQmxvY2s6OmJhc2U7CiAgICAgdXNpbmcgUGFnZUJsb2NrOjpzaXplOwpAQCAtOTMsMjIgKzg4
LDIyIEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICAg
ICAgcmV0dXJuIG1fY29tbWl0dGVkOwogICAgIH0KIAotICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRp
b24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXplX3Qgc2l6
ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENh
Z2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChz
aXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2Vy
dmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpLCBzaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgZmFsc2UpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpLCBzaXplLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxs
b2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJl
c2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6
OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9
IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFs
c2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSks
IHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VS
ZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6
ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgdHJ1
ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgdHJ1ZSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlQW5kQ29tbWl0V2l0aEd1
YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2Nh
dG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRo
R3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBB
U1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRp
b24oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAKICAgICB2b2lkIGRlYWxsb2Nh
dGUoKQpAQCAtMTI3LDcgKzEyMiw3IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUg
UGFnZUJsb2NrIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUGFnZVJlc2VydmF0aW9uKHZvaWQq
IGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wg
aGFzR3VhcmRQYWdlcykKKyAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNp
emUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCBoYXNHdWFyZFBh
Z2VzKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBoYXNHdWFyZFBhZ2VzKQogICAg
ICAgICAsIG1fY29tbWl0dGVkKDApCiAgICAgICAgICwgbV93cml0YWJsZSh3cml0YWJsZSkKQEAg
LTEzNSw5ICsxMzAsOSBAQCBjbGFzcyBQYWdlUmVzZXJ2YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9j
ayB7CiAgICAgewogICAgIH0KIAotICAgIHNpemVfdCBtX2NvbW1pdHRlZDsKLSAgICBib29sIG1f
d3JpdGFibGU7Ci0gICAgYm9vbCBtX2V4ZWN1dGFibGU7CisgICAgc2l6ZV90IG1fY29tbWl0dGVk
IHsgMCB9OworICAgIGJvb2wgbV93cml0YWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V4ZWN1
dGFibGUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZTIy
Mjk4NzViNDc3YjFjNmJhYmJjNWZlZGQ5N2NhNTcyOTFkM2MyMy4uZWJlZDY4NjkyMmI2ZjBmMGJi
MjA4N2NmNTQ2YTE4ODA0MjhjZGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04ODQs
MTAgKzg4NCwxMCBAQAogI2Vycm9yICJFTkFCTEUoV0hMU0xfQ09NUElMRVIpIHJlcXVpcmVzIEVO
QUJMRShXRUJHUFUpIgogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpICYmIENQVShBRERSRVNTNjQp
Ci0jZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJ
VCkgJiYgKChVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBDUFUoQVJNNjRFKSkpCisjZGVmaW5l
IEVOQUJMRV9KSVRfQ0FHRSAxCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJ
VCkgJiYgQVNTRVJUX0VOQUJMRUQKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBRERSRVNTNjQpICYm
IEVOQUJMRShKSVQpICYmIChFTkFCTEUoSklUX0NBR0UpIHx8IEFTU0VSVF9FTkFCTEVEKQogI2Rl
ZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKaW5kZXggMjJmNDYyYjJhNjRkYWJmOGMwODQ5YTkyMGRlYWJkOWExYzFlNWJlMi4uZmNl
OWVkYTEzM2M5YmIzMTY3MGUzMmU5ZGYzYTA3YTRhMmRjMzhjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5o
CkBAIC0zMDgsMyArMzA4LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKICNkZWZpbmUg
VVNFX0NURk9OVEdFVEFEVkFOQ0VTX1dPUktBUk9VTkQgMQogI2VuZGlmCisKKyNpZiBDUFUoQVJN
NjQpICYmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaCBiL1NvdXJjZS9XVEYvd3RmL1B0
clRhZy5oCmluZGV4IDhmYjNmZjY5ZThhNjUxZmFlMGJkNWVjYzk0Y2RkNDY0MDRkNTY0ZTUuLmI1
MzRjYjAzMjU2MWI3N2UzYTcyZTY1YmVlNTAyOTUyMDRmZDc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oCkBAIC0zNDQs
NiArMzQ0LDcgQEAgYm9vbCBpc1RhZ2dlZFdpdGgoUHRyVHlwZSB2YWx1ZSkKIHRlbXBsYXRlPFB0
clRhZyB0YWcsIHR5cGVuYW1lIFB0clR5cGU+CiB2b2lkIGFzc2VydElzVGFnZ2VkV2l0aChQdHJU
eXBlIHZhbHVlKQogeworICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAgV1RGX1BUUlRBR19B
U1NFUlQoUHRyVGFnQWN0aW9uOjpEZWJ1Z0Fzc2VydCwgdmFsdWUsIHRhZywgaXNUYWdnZWRXaXRo
PHRhZz4odmFsdWUpKTsKIH0KIApAQCAtNDQyLDIwICs0NDMsNiBAQCBpbmxpbmUgVCogcmV0YWdB
cnJheVB0cihUKiBwdHIsIHNpemVfdCBvbGRMZW5ndGgsIHNpemVfdCBuZXdMZW5ndGgpCiAgICAg
cmV0dXJuIHB0cmF1dGhfYXV0aF9hbmRfcmVzaWduKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19k
ZXBlbmRlbnRfZGF0YSwgb2xkTGVuZ3RoLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9k
YXRhLCBuZXdMZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotaW5saW5l
IFB0clR5cGUgdGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRy
LCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCi17Ci0gICAgQVNTRVJUKHB0cik7Ci0gICAgcmV0
dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNz
X2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KLWlubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFj
a1BvaW50ZXIpCi17Ci0gICAgQVNTRVJUKHB0cik7Ci0gICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJh
dXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNl
X2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKLX0KLQogdGVtcGxhdGUgPFB0clRhZyB0YWcs
IHR5cGVuYW1lIEludFR5cGU+CiBpbmxpbmUgSW50VHlwZSB0YWdJbnQoSW50VHlwZSBwdHJJbnQp
CiB7CkBAIC01MDYsMTIgKzQ5Myw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwg
c2l6ZV90LCBzaXplX3QpCiAgICAgcmV0dXJuIHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
UHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJU
eXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5cGUgdGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJG
b3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKikgeyByZXR1cm4gcHRyOyB9Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KLWlubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKikgeyBy
ZXR1cm4gcHRyOyB9Ci0KIHRlbXBsYXRlIDxQdHJUYWcsIHR5cGVuYW1lIEludFR5cGU+CiBpbmxp
bmUgSW50VHlwZSB0YWdJbnQoSW50VHlwZSBwdHJJbnQpCiB7CkBAIC01NDQsOSArNTI1LDcgQEAg
dXNpbmcgV1RGOjpyZXRhZ0FycmF5UHRyOwogdXNpbmcgV1RGOjpyZW1vdmVBcnJheVB0clRhZzsK
IAogdXNpbmcgV1RGOjp0YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp0YWdDb2RlUHRyV2l0aFN0YWNr
UG9pbnRlckZvckpJVENhbGw7CiB1c2luZyBXVEY6OnVudGFnQ29kZVB0cjsKLXVzaW5nIFdURjo6
dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGw7CiB1c2luZyBXVEY6OnJldGFn
Q29kZVB0cjsKIHVzaW5nIFdURjo6cmVtb3ZlQ29kZVB0clRhZzsKIHVzaW5nIFdURjo6dGFnQ0Z1
bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJ
WC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcAppbmRleCA0
NDU0MDU5YzUxNWQyYTQxMmI0MzJkMDcxNDZjZjZmMDExZDQ3NjBiLi42Y2VmZDJlZTJkMzEwNWMy
ZDQwNDg1ZjY5NjVmZWJhODg0NWI0MzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9PU0FsbG9jYXRvclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9j
YXRvclBPU0lYLmNwcApAQCAtMzEsMTQgKzMxLDI3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbHNlIC8v
IEVOQUJMRShKSVRfQ0FHRSkKKyNpZiBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxF
X0ZPUl9KSVQgTUFQX0pJVAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklU
X0NBR0UgTUFQX0pJVAorI2Vsc2UgLy8gT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJM
RV9GT1JfSklUIDAKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdF
IDAKKyNlbmRpZiAvLyBPUyhEQVJXSU4pCisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCiBu
YW1lc3BhY2UgV1RGIHsKIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUs
IGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNv
bW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4
ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQog
ewogI2lmIE9TKExJTlVYKQogICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHdyaXRhYmxlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZSk7CisgICAgVU5VU0VE
X1BBUkFNKGppdENhZ2VFbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZXNHdWFyZFBh
Z2VzKTsKIAogICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBST1RfTk9ORSwgTUFQ
X05PUkVTRVJWRSB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKQEAgLTQ2LDcgKzU5
LDcgQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMs
IFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLAogICAgICAgICBDUkFTSCgpOwogICAgIG1hZHZp
c2UocmVzdWx0LCBieXRlcywgTUFEVl9ET05UTkVFRCk7CiAjZWxzZQotICAgIHZvaWQqIHJlc3Vs
dCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwg
aW5jbHVkZXNHdWFyZFBhZ2VzKTsKKyAgICB2b2lkKiByZXN1bHQgPSByZXNlcnZlQW5kQ29tbWl0
KGJ5dGVzLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBpbmNs
dWRlc0d1YXJkUGFnZXMpOwogI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQogICAgIGlmIChyZXN1
bHQpIHsKICAgICAgICAgLy8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUgdGhlbiBjb21taXQiIG1v
ZGVsLCB3ZSBoYXZlIHRvIGluaXRpYWxseSBkZWNvbW1pdC4KQEAgLTU5LDcgKzcyLDcgQEAgdm9p
ZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVz
YWdlLCBib29sIHdyaXRhYmxlLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQqIE9TQWxs
b2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wg
d3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lk
KiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdl
LCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJv
b2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQogewogICAgIC8vIEFsbCBQT1NJWCByZXNlcnZhdGlvbnMg
c3RhcnQgb3V0IGxvZ2ljYWxseSBjb21taXR0ZWQuCiAgICAgaW50IHByb3RlY3Rpb24gPSBQUk9U
X1JFQUQ7CkBAIC03MCw4ICs4MywxNCBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBibwogCiAgICAg
aW50IGZsYWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfQU5PTjsKICNpZiBPUyhEQVJXSU4pCi0gICAg
aWYgKGV4ZWN1dGFibGUpCi0gICAgICAgIGZsYWdzIHw9IE1BUF9KSVQ7CisgICAgaWYgKGV4ZWN1
dGFibGUpIHsKKyAgICAgICAgaWYgKGppdENhZ2VFbmFibGVkKQorICAgICAgICAgICAgZmxhZ3Mg
fD0gTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUOworICAgIH0KKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGppdENhZ2VFbmFibGVkKTsKICNlbmRpZgogCiAjaWYgT1MoREFS
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKaW5kZXggOWQ2YzBhYTc0MTEz
NmNjOGE4NDZkMDQxMmE5MjFiZGEyYWMzOGI0Ny4uNmQ1MmM2NjJkZjA2Zjk0ODFhOTMzNWE3ZWQy
YjQ1MTQzNjY0NjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9y
V2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCkBAIC0z
OCw3ICszOCw3IEBAIHN0YXRpYyBpbmxpbmUgRFdPUkQgcHJvdGVjdGlvbihib29sIHdyaXRhYmxl
LCBib29sIGV4ZWN1dGFibGUpCiAgICAgICAgICh3cml0YWJsZSA/IFBBR0VfUkVBRFdSSVRFIDog
UEFHRV9SRUFET05MWSk7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0
ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMs
IFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wsIGJvb2wpCiB7CiAg
ICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKG51bGxwdHIsIGJ5dGVzLCBNRU1fUkVTRVJW
RSwgcHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlmICghcmVzdWx0KQpA
QCAtNDYsNyArNDYsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRl
cywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCkKK3ZvaWQqIE9T
QWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQg
PSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFIHwgTUVNX0NPTU1JVCwg
cHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlmICghcmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412236</attachid>
            <date>2020-10-23 23:24:36 -0700</date>
            <delta_ts>2020-10-27 17:25:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201023232435.patch</filename>
            <type>text/plain</type>
            <size>169571</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4OTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZjU1YTUwNmQyZmQ5MWIwYmNjMTYwNDA4NjMzZjExMTEzNzM5ZWFlLi43N2JmZTQyMDMxZGY5Y2U5
MGExZGViNjM1ZTJlYTBjMDI0ZjgxMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMjAtMTAtMjMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVu
a3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZSk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuayk6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9n
cmFtRW50cnlUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojptb2R1bGVQcm9ncmFtRW50cnlU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtRnVuY3Rpb25FbnRyeVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUNhdGNoVGh1bmspOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2VuZXJpY1JldHVyblBvaW50VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZnV6emVy
UmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVh
dGVKU0dhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpjcmVhdGVXYXNtR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVRhaWxDYWxsR2F0ZSk6CisgICAgICAgIChK
U0M6OkxMSW50Ojpsb29wT1NSRW50cnlHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6
ZW50cnlPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp3YXNtT1NSRW50
cnlHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6ZXhjZXB0aW9uSGFuZGxlckdhdGVU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6dGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnVudGFnR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmppdENhZ2VQdHJUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBv
bGluZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkxvY2F0aW9uVGh1bmspOgor
ICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybTY0LnJi
OgorICAgICAgICAqIHJ1bnRpbWUvR2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
Q0NvbmZpZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDUHRyVGFnLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y2FsbGVyVHlwZSk6CisgICAgICAgIChKU0M6OmNhbGxlZVR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDUHRyVGFnLmg6CisgICAgICAgIChKU0M6OnRhZ0pTQ0NvZGVQdHJJbXBsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdKU0NDb2RlUHRySW1wbCk6CisgICAgICAgIChKU0M6OnRhZ0NvZGVQ
dHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6CisgICAgICAgIChKU0M6OnVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAgICAgICAgKiBydW50aW1lL01hdGNoUmVz
dWx0Lmg6CisgICAgICAgIChKU0M6Ok1hdGNoUmVzdWx0OjpNYXRjaFJlc3VsdCk6CisgICAgICAg
ICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZGlzYWJsZUFsbEpJVE9wdGlv
bnMpOgorICAgICAgICAoSlNDOjpjYW5Vc2VKSVRDYWdlKToKKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnNMaXN0Lmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAo
SlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpleGVjdXRlKToKKwogMjAyMC0xMC0yMyAgQW5nZWxv
cyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBG
aXggYXJndW1lbnQgb3JkZXIgZm9yIGRvdWJsZSBhbmQvb3Igb3BzIG9uIEFSTXY3CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDli
OGNjYmM4YjgzMTI0OTdlNTYyMzhmOWM5MjE1OTU2OTYxZTQ1ZWQuLmE3MzFhZGMyZjFlMDFmODU4
Njg2NzljMjJkNjQ4ZmIwNzQwZjk4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMTAtMjMg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQg
SklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9PU0FsbG9jYXRvci5oOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6
cmVzZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKToKKyAgICAgICAgKiB3dGYvUGFnZVJlc2VydmF0aW9uLmg6CisgICAgICAgIChX
VEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZSk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZh
dGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0
aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdl
UmVzZXJ2YXRpb246OlBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogd3RmL1BsYXRmb3JtRW5h
YmxlLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtVXNlLmg6CisgICAgICAgICogd3RmL1B0clRh
Zy5oOgorICAgICAgICAoV1RGOjp0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwp
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9y
SklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKToKKyAg
ICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQpOgorICAgICAgICAqIHd0
Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZVVuY29tbWl0dGVkKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRD
b21taXQpOgorCiAyMDIwLTEwLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIGFuZCBwYXNzIG5ldyBVUkwgd2ViIHBsYXRmb3Jt
IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNWI0YzU4NDhjNThj
YTY2YmM2NTZlZGFhOGZmM2M5Y2ZmN2VjZjAxZi4uMmViNTY2ZGI0NmFkZDdjOTg5NjBjZDhhZGVh
MDg1ZGE5ZWM3MzJjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODY1
LDYgKzg2NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCiAgICAgcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmgKICAgICBydW50aW1lL0Z1enplckFnZW50LmgKKyAgICBydW50aW1lL0dhdGUuaAog
ICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNldC5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc4OTlkMjA5Y2I3NzFmMTE0NjVjNmQ0NDA2MGVj
ZGI0NmFkNTg2ZmQuLjNkZmQ5ODAzYzZmOThlNGQ2NmMyZjVmNDY5ZmZkMDY4OGMyZTk1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODQ5LDYgKzE4NDksNyBAQAogCQlFMzZC
NzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAw
RDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNt
Q3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3
MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3MTE5OTEyNTNG
QTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1l
Rm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQg
LyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKQEAg
LTUwNTEsNiArNTA1Miw3IEBACiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01H
Rm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZFRENF
NDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc1MEND
NzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzI3MCw2ICs3MjcyLDcgQEAKIAkJCQlFMzNBOTQ5MjIyNTUzMjI5MDBENDJCMDYgLyog
RnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVy
UHJlZGljdGlvbnMuY3BwICovLAogCQkJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6
ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRl
LmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9u
Q29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTk2ODUsNiArOTY4
OCw3IEBACiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0E5NDk3MjI1NTMyMzMwMEQ0MkIwNiAvKiBGdXp6ZXJB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDRkFEMzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1
enplclByZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzcxMTk5MjI1M0ZBODdGMDBC
QTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQw
MTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUx
NEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9w
ZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVy
YXRpb25MaXN0LmNwcAppbmRleCBiM2NlMTc3OTJkMDE2N2Y0ZWM3YmVjY2E0ZmRlODVjNDVjYmIx
MGIwLi5lNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAK
QEAgLTI2LDYgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSklUT3Bl
cmF0aW9uTGlzdC5oIgogCisjaW5jbHVkZSAiR2F0ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5o
IgorI2luY2x1ZGUgIk9wY29kZS5oIgorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYKKwogbmFtZXNwYWNl
IEpTQyB7CiAKIExhenlOZXZlckRlc3Ryb3llZDxKSVRPcGVyYXRpb25MaXN0PiBqaXRPcGVyYXRp
b25MaXN0OwpAQCAtNDUsMTggKzUzLDIyIEBAIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6aW5pdGlh
bGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKIHN0YXRpYyBTVVBQ
UkVTU19BU0FOIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQb2ludGVycyhIYXNoTWFwPHZvaWQqLCB2
b2lkKj4mIG1hcCwgY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCog
ZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJf
dCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9
IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsKLSAgICAgICAgdm9p
ZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVu
dCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBt
YXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRy
VGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwot
ICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpIHsKKyAgICAgICAgSlNDX0pJVF9DQUdFRF9QT0lOVEVSX1JFR0lTVFJBVElPTigpOwor
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50
ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkg
ewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxP
cGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNO
ZXdFbnRyeSk7CisjZW5kaWYKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVEKSB7Cisg
ICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50
ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgeworICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJl
bW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkpOworICAgICAgICAg
ICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRh
Z05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRhZz4oY29kZVB0cikpOworICAgICAg
ICB9CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRp
b25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgeworICAgICAgICAgICAg
dm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3Vy
cmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFk
ZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29k
ZVB0cikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMsNiArODUsNTYgQEAgdm9pZCBKSVRP
cGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpCiAjZW5kaWYK
IH0KIAordm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0
Q29yZUZvckxMSW50KCkKK3sKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFtdIHsKKworI2RlZmluZSBMTElOVF9PUChuYW1lKSBcCisgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5h
bWUpKSwgXAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksIFwKKyAgICBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4obmFtZSkpLAorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lLCAuLi4pIFwK
KyAgICBMTElOVF9PUChuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKQorCisgICAgICAgIGNvbnN0IHVp
bnRwdHJfdCBvcGVyYXRpb25zW10gPSB7CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4o
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSksCisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPih3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscykpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9oYW5k
bGVfdW5jYXVnaHRfZXhjZXB0aW9uKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4oY2hlY2twb2lu
dF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4oY2hlY2twb2lu
dF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlv
blB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KSksCisKKyAgICAgICAgICAg
IExMSU5UX09QKG9wX2NhdGNoKQorICAgICAgICAgICAgTExJTlRfT1AobGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpCisKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfZ2V0X2J5X3ZhbCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfaWQpCisgICAgICAg
ICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKworICAgICAgICAgICAg
SlNDX0pTX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAgICAgICAgICBK
U0NfV0FTTV9HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJOX0xPQ0FUSU9OKQorICAgICAgICB9Owor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBhZGRQb2ludGVycyhq
aXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIG51bGxwdHIsIG51bGxwdHIs
IG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJSQVlfTEVOR1RIKG9wZXJhdGlvbnMpKTsK
KyN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KKyAgICB9KTsKKyNlbmRpZgorfQorCisKIHZv
aWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRkZXIoY29uc3QgdWlu
dHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0
cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsK
ICAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5kZXggMDk4NDkzZjUwYjJhZDMzY2Qx
ZDk3NTc0YTI4M2U5ZmY4Yjk2ODM2OS4uNWE0MGZmN2M4Y2ZhZDZiNDIwMzc3M2JkMjRhZDU1N2I0
Y2U0MjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRP
cGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRP
cGVyYXRpb25MaXN0LmgKQEAgLTM5LDEyICszOSwxNSBAQCBjbGFzcyBKSVRPcGVyYXRpb25MaXN0
IHsKIAogICAgIHZvaWQqIGNvbnRhaW5zKHZvaWQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICBpZiBjb25zdGV4cHIoQVNTRVJUX0VOQUJMRUQpCi0gICAgICAgICAgICByZXR1cm4gbV92
YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorICAgICAgICByZXR1cm4gbV92YWxpZGF0
ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBwb2ludGVyOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcG9w
dWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKTsKKyAgICBzdGF0aWMgdm9pZCBwb3B1bGF0
ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCk7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihjb25zdCB1aW50cHRy
X3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3Qq
IGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRpb25zKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAppbmRleCA0NWI0YjNiNDY5Njg1NTJkN2RhYzk3ODhhZmY2Y2YwYjQzZGIyNmM2Li40Yzlh
OWViYTRiNjRmNDFjMTBlOTQ0ZGYyNDM4YTZmZGVhMTdiYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMzM5
Miw2ICszMzkyLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuYnIodGFy
Z2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0
clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5icihkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMzllYTE1MTE0NzYxYTAw
ZTAwMDUwMzEwMGJlNzZiZGU0NGEyZjhjNC4uZDE4N2Q2OTMwZTZmZDlmNjY4Mzc5OGRhMzM5YzVh
MTM2ZDAzNGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkFS
TTY0RUFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgogI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQVJNNjQuaCIKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtMTEwLDIwICsxMTMsMjggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJs
aWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBSZWdpc3RlcklE
IEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4oLTEpOwogCiAgICAgZW51bSBj
bGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAgIENGdW5jdGlvbkNhbGwsCi0gICAgICAg
IE90aGVyQ2FsbAorICAgICAgICBKSVRDYWxsLAorICAgICAgICBOYXRpdmVDYWxsLAorICAgIH07
CisKKyAgICBlbnVtIGNsYXNzIEp1bXBTaWduYXR1cmVUeXBlIHsKKyAgICAgICAgSklUSnVtcCwK
KyAgICAgICAgTmF0aXZlSnVtcCwKICAgICB9OwogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVy
ZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFRydXN0ZWRQdHIoUmVnaXN0
ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5
cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOwogICAg
ICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAgaW52YWxpZGF0ZUFs
bFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6
OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYXooZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfQ0FM
TCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIoZGF0YVRlbXBSZWdpc3RlciwgdGFnR1BS
KTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwo
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFSTTY0QXNzZW1ibGVyOjpn
ZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFiZWwsIHBvaW50ZXJMYWJlbCkgPT0gUkVQ
QVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAgLTEzMiw1MSArMTQzLDUzIEBAIGNsYXNz
IE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAg
ICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlm
ICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02
NDo6Y2FsbCh0YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAg
ICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9u
Q2FsbD4oKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lz
dGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5
cGU6Ok90aGVyQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxlZVR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4gY2Fs
bFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJVENhbGw+KEFSTTY0UmVnaXN0ZXJzOjps
cik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0
aXZlQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IENhbGwgY2FsbChSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIHJldHVybiBjYWxs
VHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YWdHUFIpOworICAgICAg
ICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRh
Z0dQUik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAg
ICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBS
ZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURfUEFS
QU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAg
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNp
Z25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJh
YXoodGFyZ2V0R1BSKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9DQUdF
RF9DQUxMKHR5cGUsIHRhcmdldEdQUiwgdGFnR1BSKTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFiKHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICAg
ICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRh
ZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCB0YWcpOwotICAgICAg
ICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIHJldHVybiBjYWxsUmVn
aXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KHRhcmdldEdQUik7CisgICAg
ICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7Cisg
ICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAg
ICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0
YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRh
ZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxSZWdp
c3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4odGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVy
czo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpO
YXRpdmVDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQg
dGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJl
VHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgICAgIHJldHVybiBjYWxs
UmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgdGFnR1BS
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRyZXNzIGFkZHJlc3Ms
IFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwoYWRkcmVzcywgdGFnKTsKLQor
ICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcp
OworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJ
VCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0
YWcpOwogICAgIH0KQEAgLTE5Nyw5MCArMjEwLDEyOSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFS
TTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKIAogICAgIEFMV0FZU19JTkxJTkUg
SnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6anVtcCgpOyB9CiAKLSAg
ICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZyB0YWcpCisgICAgdGVtcGxh
dGU8SnVtcFNpZ25hdHVyZVR5cGUgdHlwZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmFySnVt
cFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFs
aWRHUFIpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgICAgIEFTU0VS
VCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfRkFS
X0pVTVAodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQor
CisgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBQdHJUYWcgdGFnKQogICAg
IHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRh
ZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJU
KGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogCiAgICAgICAgIEFT
U0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNp
dHlHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIGZhckp1
bXAodGFyZ2V0LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1w
U2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5h
dGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZh
ckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVt
cChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh0YWcgIT0gdGFyZ2V0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXQsIHRhZyk7
CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BS
ID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAg
IG1vdmUodGFyZ2V0LCB0YXJnZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcp
LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+
KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRk
cmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRh
cmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5v
UHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAo
YWRkcmVzcywgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAg
ICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQ
UiwgdGFnR1BSKTsKKyAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcpOworICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BS
KQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5
R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAg
ICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwor
ICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgdGFnR1BSKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VS
VCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIp
OwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2ln
bmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZv
aWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKKyAgICB2b2lkIGZhckp1
bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisgICAgICAgIFJlZ2lzdGVySUQgdGFy
Z2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAg
ICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
dGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWdu
YXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQogCi0gICAgICAg
IEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICB2b2lkIGZhckp1bXAoQWRkcmVz
cyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVu
Y3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRh
cmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7
CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZh
ckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZl
cnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVt
cFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAg
ICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFn
KQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7
CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRh
Zyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BS
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdl
dEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2Fs
bGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1
bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNp
dHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNp
Z25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9
CiAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcp
CiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKLQorICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAg
ICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hl
ZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChBZGRy
ZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRh
ZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBk
aXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewotICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdl
dEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0
YWcpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBm
YXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwg
ZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmV0KCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7CisgICAgICAgIGlmIChPcHRpb25zOjp1
c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0NfSklU
X0NBR0VEX1JFVCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIucmV0YWIoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDBjNzU5N2JhZjY0MjY2
NDk5NjM0YTU5ODAxN2JmYjY0YzMxNmE1NjQuLjJjOWI4ZmY4MDk1MTZlYjA3NzQ0YmRmZjgyNjc3
YTBjNmM0ZmRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzE5LDYgKzE3MTksMTIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
cj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQg
ZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92
ZSh0YXJnZXQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5ieChkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICAvLyBBZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0
aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZvaWQgZmFySnVtcChB
ZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBlNjNhYjQ3NTVmZjhh
MWIwNjk3Y2NkNzNiNjIyMDIyZDZlYzAxOTYzLi5hZGFkNTRjYjAyNjE3ZDExOTcxYmIyNDVlMGEw
M2Y0ZDhkYWRmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwMDQsNiArMjAwNCwxMyBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+
IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1w
KFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAgICAgICBtb3ZlKHRhcmdl
dCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihNSVBTUmVnaXN0
ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgIH0KKwogICAgIHZvaWQg
ZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIG1fZml4ZWRX
aWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMjhmYWUyZTcyZjI1NjU3ZTYxMzMw
NWYyMDAzZGZjYmVhNWVlY2E5YS4uNzZkZGI1NzY5NGRhMjRmNGFlODA1YjA0OTNiNDJhOGU2NDJm
MzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1MCw2ICsyNzUwLDEyIEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNz
ZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgLy8gQWRkcmVzcyBpcyBh
IG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1bXAgdG8KICAgICB2
b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMmZlZDE4MmU0NTdm
NzQ2NjI2NWY2NWIxNGM1OTQzMWYyM2U4NGFkMS4uMDU3YjMwNzhjMmI3ZTg2OTM5MzJiOTA1ZjE5
NGQzZjc3YjQ2NDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCkBAIC0xNDAzLDYgKzE0MDMsNyBAQAogb3AgOmxsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9t
X2lubGluZWRfY2FsbF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9s
aW5lCitvcCA6bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUKIG9wIDpmdXp6ZXJfcmV0dXJuX2Vh
cmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6bGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUK
IG9wIDpsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCkBAIC0xNDE5LDYgKzE0MjAsNDAg
QEAKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1
ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9jb25z
dHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9vcGVuX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9zbG93X3JldHVybl9sb2NhdGlvbgor
b3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfc2xvd19y
ZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19y
ZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2Nh
dGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgorCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsCitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGwKK29wIDpqc190
cmFtcG9saW5lX29wX2NvbnN0cnVjdAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4
dAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbgorb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfc2xvdworb3AgOmpz
X3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2NhbGxf
dmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdwor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdworb3AgOmpzX3RyYW1w
b2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25l
eHRfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbl9zbG93CitvcCA6anNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZworb3Ag
OmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnCitv
cCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
X3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGwKK29wIDp3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rscwor
CiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwogCiBiZWdpbl9zZWN0aW9uIDpXYXNtLApAQCAt
MTQzMyw2ICsxNDY4LDExIEBACiAKIG9wIDp0aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
CiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVj
dF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKICMgRklYTUU6IFdhc20gYW5kIEpTIExMSW50IHNo
b3VsZCBzaGFyZSBjb21tb24gb3Bjb2RlcwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAzNjU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBkMTUwM2JmMDM4NDdhNjQ4NTMzOTExMjc3NjhkNzAyNTBlODlh
NTM4Li5iMDYxNTBmY2NmNGM3ZGRhNWU1MWNjNWZhZDYzY2QzMTFkMTgyMzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0zMjAsNiArMzIw
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGxsaW50X2hhbmRsZV91bmNh
dWdodF9leGNlcHRpb246CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5l
ZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xp
bmU6CisgICAgY2FzZSBub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZToKICAgICBjYXNlIGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQ6CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVu
X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0
aW9uOgpAQCAtMzMxLDggKzMzMiw0MCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugb3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
cmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246
CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfY29u
c3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRfc2xvd19yZXR1
cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ug
b3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9j
YWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3By
b2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHM6CisgICAgY2Fz
ZSBqc190cmFtcG9saW5lX29wX2NhbGw6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxf
Y2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0OgorICAgIGNhc2UganNf
dHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9p
dGVyYXRvcl9vcGVuOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX3Nsb3c6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9jb25zdHJ1Y3Rfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJhcmdz
X3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50c19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19z
bG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdzoKKyAgICBjYXNl
IGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnOgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50
YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKKyAg
ICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorICAgIGNhc2Ugd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93
YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsK
ICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggZGQ2NjZm
YWE4M2U4MzUwOWU2NWIwNzU1NzYyMmYwOGE5NDk0MjFiZC4uYWM0YjhjNTczYjgyNmI2YTMwYzYz
ZmVkYjQyNThiNWFmYmViNTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTM4LDIxICsxMzgsMjEgQEAg
dm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9T
UkV4aXRCYXNlJiBleGl0KQogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0KTsKIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2Rl
SW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNh
bGxlcklzTExJbnQpCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+
IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5
dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVl
Q2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCiB7CiAgICAgY2FsbGVySXNMTElu
dCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBiYXNlbGluZUNvZGVCbG9ja0Zv
ckNhbGxlci0+aml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bms7CiAKICAgICBp
ZiAoY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAgIGlmICghY2FsbGVy
SXNMTEludCkKICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5tX2hhc0xp
bmtlZE9TUkV4aXQgPSB0cnVlOwotICAgICAgICByZXR1cm4gTExJbnQ6OmdldENvZGVQdHI8SlNF
bnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9s
aW5lKTsKKyAgICAgICAgcmV0dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVk
Q2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8T1NSRXhpdFB0clRhZz4ganVtcFRhcmdldDsKIAogICAgIGNvbnN0IEluc3RydWN0aW9u
JiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmluc3RydWN0
aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAoY2FsbGVySXNMTElu
dCkgewotI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlv
bi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFt
ZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTElu
dDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRp
b24pKSkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5M
b2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9jYXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0
aCgpKS5jb2RlKCkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxsS2luZCkgewogICAg
ICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogewpAQCAtMjA5LDcgKzIwOSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tG
b3JDYWxsZXItPmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2FsbEJ5dGVjb2RlSW5k
ZXgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKIAotICAgICAg
ICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0
YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBjYWxsTGlu
a0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMjYsMTMgKzIyNiwxMyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICAgICAgICAgIC8vIDYuIChCKSBnZXRzIE9TUiBl
eGl0LiAoQikgYXR0ZW1wdHMgdG8gc2VhcmNoIGZvciBTdHJ1Y3R1cmVTdHViSW5mbyBpbiAoQSkg
Zm9yIFB1dEJ5SWQgKG9yaWdpbmFsbHksIHB1dF9ieV92YWwpLiBCdXQgaXQgZG9lcyBub3QgZXhp
c3Qgc2luY2UgKEEpJ3MgSklURGF0YSBpcyBjbGVhcmVkIG9uY2UuCiAgICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZEJ5
VmFsSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYnlWYWxJbmZvKTsKLSAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0g
YnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CisgICAgICAg
ICAgICAgICAganVtcFRhcmdldCA9IGJ5VmFsSW5mby0+ZG9uZVRhcmdldC5yZXRhZ2dlZDxPU1JF
eGl0UHRyVGFnPigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBiYXNlbGluZUNvZGVCbG9j
a0ZvckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7
CisgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVMb2NhdGlvbi5yZXRhZ2dl
ZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MjkyLDcgKzI5Miw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0gaml0LmJhc2VsaW5l
Q29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKICAgICAgICAgICAgIGF1dG8gY2FsbEJ5dGVjb2Rl
SW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldCA9IGNhbGxlclJldHVyblBD
KGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBjYWxsQnl0ZWNvZGVJbmRleCwgdHJ1ZUNhbGxl
ckNhbGxLaW5kLCBjYWxsZXJJc0xMSW50KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVyUmV0dXJuUEMoYmFzZWxpbmVD
b2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0cnVlQ2FsbGVyQ2FsbEtpbmQs
IGNhbGxlcklzTExJbnQpOwogCiAgICAgICAgICAgICBpZiAodHJ1ZUNhbGxlci0+aW5saW5lQ2Fs
bEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAtNDAyLDExICs0MDIs
MTEgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgaWYgKGV4aXRUb0xMSW50KSB7CiAgICAg
ICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgo
KTsKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpjb2Rl
QmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRlc3RpbmF0aW9uOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4gZGVzdGluYXRpb247
CiAgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRl
c3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9v
c3JfZXhpdF90cmFtcG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNo
ZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIAot
ICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFn
PihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6
bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKIAogICAgICAgICBpZiAoZXhp
dC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBHUFJJbmZvOjpyZWdUMik7
CkBAIC00MTYsMjIgKzQxNiwyMiBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0s
IENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0ZvckV4aXQtPm1ldGFk
YXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVHUFIpOwogICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhpdC0+
aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGJHUFIpOwogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGNHUFIpOwotICAgICAgICBqdW1wVGFyZ2V0ID0g
ZGVzdGluYXRpb24ucmV0YWdnZWQ8T1NSRXhpdFB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgICAgICBqdW1wVGFyZ2V0ID0gZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBjb2RlQmxvY2tGb3JFeGl0LT5tX2hhc0xpbmtlZE9TUkV4
aXQgPSB0cnVlOwogCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4ID0gZXhpdC5tX2Nv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxPU1JFeGl0UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGV4aXRJbmRleC5jaGVj
a3BvaW50KCkpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSk7CisgICAgICAgICAg
ICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygp
LmNvZGUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoY29kZUJsb2NrRm9y
RXhpdC0+Ynl0ZWNvZGVJbmRleEZvckV4aXQoZXhpdEluZGV4KSA9PSBleGl0SW5kZXgpOwotICAg
ICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCkuZmlu
ZChleGl0SW5kZXgpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0
LT5qaXRDb2RlTWFwKCkuZmluZChleGl0SW5kZXgpLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7
CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwogCi0gICAgICAgIGp1
bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxl
QWRkcmVzcygpOwogICAgIH0KIAogICAgIGppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2NrRm9yRXhpdCkgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEFzc2VtYmx5SGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKaW5kZXggMzkxMTRlYTY3NzAwMmE5
ODJmMmViODFlN2QyOGY4NmYyMjhmNmQwZC4uZGJhMGZlMzIyYmY4ODFjOTVjMjJkYjg1MDYxNjI0
MjA0YTZhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIHZvaWQgaGFuZGxlRXhpdENvdW50cyhWTSYsIENDYWxsSGVscGVycyYs
IGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4LCBJbmxp
bmVDYWxsRnJhbWU6OktpbmQgY2FsbGVyS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCk7CiBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5saW5lQ2FsbEZyYW1lKiwgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSklUQ29kZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBmZjlhOGFmZDA1OTQ1YzI5Yjk3OGMxZmYzY2Y5
N2EyMjJiYjRiOTIxLi45YmU2NGJiZGYwZjI4ZmQ1NzRhNDI1ODg0Y2Q1MzQxZGYxYTY2NGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKQEAgLTQ4LDYgKzQ4LDE4IEBACiAjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CiAjaW5jbHVkZSA8
bWFjaC9tYWNoX3RpbWUuaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdF
KQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklU
CisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisj
ZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2Rl
ZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9T
KERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIGV4dGVybiAiQyIgewogICAg
IC8qIFJvdXRpbmUgbWFjaF92bV9yZW1hcCAqLwogI2lmZGVmIG1pZ19leHRlcm5hbApAQCAtMTM5
LDggKzE1MSw4IEBAIHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZChib29s
IGVuYWJsZWQpCiAKICAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0gMTsKICAgICAgICAg
Y29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1Rf
RVhFQzsKLSAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQX0FO
T04gfCBNQVBfSklUOwogICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NBbGxvY2F0b3I6OkpT
SklUQ29kZVBhZ2VzOworICAgICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9O
IHwgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSA/IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9K
SVRfQ0FHRSA6IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQpOwogICAgICAgICB2b2lkKiBhbGxvY2F0
aW9uID0gbW1hcChudWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApOwogICAg
ICAgICBjb25zdCB2b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigtMSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRShhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRp
b25GYWlsdXJlLCAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVjdXRhYmxlIG1lbW9y
eSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBKSVQuIik7CkBAIC0zMjQsOSArMzM2LDkgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlv
bigpCiAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBKSVQgY29kZSBsb2dnaW5n
IGJyb2tlbiBhbmQgc29tZSBvZiBKSVQgY29kZSBpcyBub3QgcmVjb3JkZWQgY29ycmVjdGx5Lgog
ICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIHVzZSBjb21taXR0ZWQgcmVzZXJ2
YXRpb24gaWYgd2UgbmVlZCBwZXJmIEpJVER1bXAgbG9nZ2luZy4KICAgICAgICAgaWYgKE9wdGlv
bnM6OmxvZ0pJVENvZGVGb3JQZXJmKCkpCi0gICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0Fs
bG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7
CisgICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0
aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMs
IEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgZmFsc2UpOwogI2VuZGlmCi0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlv
blNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRB
QkxFLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhH
dWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBF
WEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIE9wdGlvbnM6OnVzZUpJVENhZ2UoKSk7CiAg
ICAgfTsKIAogICAgIHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbiA9IHRyeUNyZWF0ZVBhZ2VS
ZXNlcnZhdGlvbihyZXNlcnZhdGlvbi5zaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKaW5kZXggNzRkYWUyMjZmNTQ1YjdhYWFmMzQ3ODc0NDMzNjQyNzAwMTViZDBhNC4uZGVmZDcx
ODExMzY1NDE4MWM1M2U5Nzk2OTQ1ZTMyZGY3NDU5NmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQ2NSw2ICs0NjUsMTAgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IFg4NlJlZ2lzdGVyczo6cjEw
OyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6OmVheDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBYODZSZWdpc3RlcnM6OmVh
eDsKKyNpZiAhT1MoV0lORE9XUykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2Ny
YXRjaEdQUjEgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgogCiAgICAgLy8gRklYTUU6IEkg
YmVsaWV2ZSB0aGF0IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRlYWQgaW4gdGhlIHNlbnNlIHRoYXQg
aXQganVzdCBjYXVzZXMgdGhlIHNjcmF0Y2gKICAgICAvLyByZWdpc3RlciBhbGxvY2F0b3IgdG8g
c2VsZWN0IGEgZGlmZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3RlbnRpYWxseSBzcGlsbCB0aGluZ3Mu
IEl0IHdvdWxkIGJlIGJldHRlcgpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9
IEFSTTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
OjppcDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJN
NjRSZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNo
R1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBk
aXJlY3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBk
aXJlY3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
Y3BwCmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0
NmU5MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBA
IC00NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2Rl
KCkKIHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAo
bV9jYWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fz
c2VtYmx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
KCkpOworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVu
bGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJu
TG9jYXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29k
ZUluZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3
MWRkOTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5
MjJkNWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1p
dFBvaW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwg
VGFnVHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRH
SW52YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNo
VG9TYXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwot
ICAgIGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0
b3JlKHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVh
c29uKFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAg
ICAgICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0
YWcsIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQ
Uik7CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAv
LyBXZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGws
IGJ1dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
YmZhNGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2
ZDhjZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNs
dWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNf
QVNTRVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkK
IAotCiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwy
MiBAQCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAog
I2VuZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJu
ICJDIiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
dGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2Fs
bEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0
aW9uSGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxM
SW50VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lm
IEVOQUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVO
QUJMRShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2Rl
TWFwLCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYg
KzgzLDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5l
eGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFt
cG9saW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zW2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKwor
ICAgIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9y
TExJbnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklU
Q2FnZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFn
KSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAg
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAg
ICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9p
ZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1
bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4o
TExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcs
ICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNv
ZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
KGpzX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1
Y3QoTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFt
cG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50
OjpnZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8j
I25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0
ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJl
ZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29u
ZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRl
MzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAg
IH0gd2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dB
VEUpCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNN
X0dBVEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNv
ZGVSZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgp
KSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5r
KHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xv
Y2F0aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVj
dChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFn
LCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYi
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihM
TEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxz
ZSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAg
ICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01f
R0FURV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkFTU0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywg
T3BlcmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQ
dHJUYWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdD
b2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZt
RW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxp
bnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlw
dCldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9u
czo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVU
aHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFn
Pih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5
VG9OYXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBv
bGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5l
dmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhl
Y3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAg
ICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0
YWlsQ2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdf
anNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2Vw
dGlvbkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7
CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0
dXJuRnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRy
PHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZy
b21MTEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFw
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYu
Z2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRo
dW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9
IGVudHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFH
X1RIVU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0Nv
ZGVSZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0
cnVjdCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9w
ZXJhdGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRh
Z0NvZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1
bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBc
CisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExM
SW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUjI190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6
Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNf
dW50YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdl
dCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1
bnRhZ0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdo
aWxlICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRB
R19USFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0
ZTI3MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMx
ZmVhMjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0y
MDQsNiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5j
dGlvblB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7Cisj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcu
bGxpbnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bj
b2RlV2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19P
UENPREVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVt
T3Bjb2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRP
cGNvZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X09QQ09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltu
dW1PcGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcg
dGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRy
KFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFn
Q29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNz
KTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7
CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdp
ZGUxNihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJU
YWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+
OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0
clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdp
ZGUzMkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAg
ICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOwor
ICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lO
TElORSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkK
K3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50
Q29kZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNl
bHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisK
K3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZD
b2RlRnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1T
VkMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2Rl
UHRyPHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNv
ZGVJRCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxh
dGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5j
dGlvblB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFn
PihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50
ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vs
c2UKIEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2
ZDI0OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uYzFhMjhmMGE0OWU1MWM4NTRh
ZDM2MWJlNWRiMGU4MTgzZTk0NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9p
ZCBqc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpz
VHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMi
IHZvaWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQp
OworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGlu
ZShQdHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29k
ZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOwor
fQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxv
Y2stPnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lk
IHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3Rh
dGljIERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShl
bnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSks
IGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3
IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRD
b2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBE
aXJlY3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9y
Q29uc3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5j
dGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRl
cnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAg
ICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
KSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMg
dm9pZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMg
TmF0aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9s
aW5lKGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OworI2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8
SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VS
ZWYoKmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJv
Z3JhbUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJ
VENvZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
ICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1Ry
YW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRy
aW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNl
bHNlCiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50
cnlQdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRo
dW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hh
cmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVm
KCpqaXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVs
ZVByb2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRp
dmVKSVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUo
anNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29k
ZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5
cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNo
YXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzQgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVF
bnRyeXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAg
IHJldHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0
dXJuX3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4o
bGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBv
aW50KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAg
ICAgICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQo
T3Bjb2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVz
ZUpJVCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7Cisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29k
ZVNpemU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6
OldpZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6
OldpZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIHNldEVudHJ5
cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFj
ODQ4NDFkYmZkOC4uMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0N2I4OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKyNpbmNs
dWRlICJPcGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw1ICs0Miw3IEBA
IHZvaWQgc2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJD
b3VudEZvcihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBv
aW50KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVy
blBvaW50RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApp
bmRleCBiYmExMjBhN2M1NTg1OGYzNzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhLi5hMzQ3YzYyMzlh
Y2RmZDlmZTMwZDU4NGYwMDAzOGM0YjUwYjk2MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUg
SlNWYWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NB
TExfRU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAg
TExJTlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRy
VGFnPihjYWxsVGFyZ2V0KSksIChjYWxsRnJhbWUpKQorICAgIExMSU5UX1JFVFVSTl9UV08oKHJl
dGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJn
ZXQpKSwgKGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmpl
Y3QsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBK
U0dsb2JhbE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9v
cEhpbnRFeGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxs
aW50RXhlY3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIg
Pj0gT3B0aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAg
ICAgICBMTElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1
enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNh
bGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJ
bnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAog
ICAgIApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NvbnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RW
YXJhcmdzPihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRo
OjpPYmplY3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFs
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBv
aW50KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0
IEluc3RydWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKGJ5dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNh
bGxGcmFtZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+
c2V0UmV0dXJuUEMocmV0dXJuUG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgY2FsbGVl
RnJhbWUtPnNldFJldHVyblBDKHJldHVyblBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFt
ZS0+c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGlu
ZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IGNvbnN0IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y2FsbF9ldmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBM
TEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2lu
dCkpOworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2Vu
ZXJpY1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0
dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJu
IGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRF
bnRyeXBvaW50KE9wY29kZVNpemU6OldpZGUxNikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2
YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4o
bGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwo
Y2FsbEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2Rl
U2l6ZTo6V2lkZTMyKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJj
YXQpCkBAIC0yMjY1LDggKzIyNjUsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNw
YXRjaFRvTmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAg
IGlmIChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVj
dGlvbiogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotICAgICAgICBhdXRvIG5leHRCeXRlY29k
ZSA9IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCpwYy5uZXh0KCkucHRyKCkpOwot
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgbmV4dEJ5dGVjb2RlLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQobmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLnJldGFnZ2Vk
Q29kZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICAg
ICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggNzg1MzYwZjQ4NzYwNzFhZmQ2NGFk
MWNmZTFiYThiZWE4MzhhYjNkMi4uYTYxNjI1ZGE4OTRmNDk4ZTk0MGJlYzE0NTJjNWU5ZTZlOTVm
MjQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBA
IC00MCw2ICs0MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNp
ZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorI2RlZmluZSBKU0NfQU5OT1RBVEVf
TExJTlRfSklUX09QRVJBVElPTihuYW1lKSBcCisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJ
T04oX0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCisKKyNkZWZpbmUgSlNDX0FOTk9UQVRFX0xMSU5U
X0pJVF9PUEVSQVRJT05fV0lUSF9ERUNMQVJFKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIHZvaWQg
bmFtZSh2b2lkKTsgXAorICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRf
IyNuYW1lLCBuYW1lKQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorSlNDX0FOTk9UQVRFX0xMSU5U
X0pJVF9PUEVSQVRJT04oaml0Q2FnZVB0ckdhdGVBZnRlcik7CisjZW5kaWYKK0pTQ19BTk5PVEFU
RV9MTElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHQpOworSlNDX0FOTk9UQVRF
X0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlKTsKK0pTQ19BTk5PVEFURV9MTElO
VF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpOworSlNDX0FOTk9U
QVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKTsKK0pTQ19B
Tk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04o
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOworSlNDX0FO
Tk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFU
SU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIp
OworCisjZW5kaWYKKwogbmFtZXNwYWNlIExMSW50IHsKIAogLy8gVGhlc2UgdGh1bmtzIGFyZSBu
ZWNlc3NhcnkgYmVjYXVzZSBvZiBuZWFyQ2FsbCB1c2VkIG9uIEpJVGVkIGNvZGUuCkBAIC01Miw3
ICs3NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQg
aml0OwogCi0gICAgYXNzZXJ0SXNUYWdnZWRXaXRoPEpTRW50cnlQdHJUYWc+KHRhcmdldCk7Cisg
ICAgYXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKIAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKICAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9
IFdhc206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CkBA
IC02MCwxNiArODIsNTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKICAgICBDQ2FsbEhlbHBl
cnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKICNlbmRpZgog
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0
Y2gpOwotICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5m
YXJKdW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyB0aHVu
ayIsIHRodW5rS2luZCk7CiB9CiAKIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oT3Bjb2RlSUQgb3Bj
b2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG88dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+
KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2Rl
SUQpLCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUoT3Bj
b2RlSUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFj
ZUpJVCBqaXQ7CisKKyAgICBMTEludENvZGUgdGFyZ2V0ID0gTExJbnQ6OmdldENvZGVGdW5jdGlv
blB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8
T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAg
IENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252
ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyNlbHNlCisgICAgQ0NhbGxIZWxwZXJz
OjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6cmVnVDA7CisjZW5kaWYKKyAg
ICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpU
cnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gpOworICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gs
IE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFn
LCAiTExJbnQgJXMganVtcCB0byBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7Cit9CisKK3Rl
bXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChMTEludENvZGUgdGFyZ2V0LCBjb25zdCBj
aGFyICp0aHVua0tpbmQpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIGFzc2VydElz
VGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisgICAgaml0LmZhckp1bXAoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlvblB0clRhZyk7CisgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHJldHVybiBwb2ludCB0
aHVuayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2lu
dChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PHRhZz4oTExJbnQ6OmdldENvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKIH0KIAog
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmsoKQpAQCAtNzcsNyArMTM2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAi
ZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICB9KTsKICAgICByZXR1
cm4gY29kZVJlZjsKIH0KQEAgLTg3LDcgKzE0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmsoKQogICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOworICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJU
YWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3Ig
Y29uc3RydWN0IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtOTcsNyAr
MTU2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRy
eVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBm
b3IgY2FsbCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBj
aGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEwNyw3ICsxNjYs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50
cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssICJmdW5j
dGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4o
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBj
b25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJl
ZjsKIH0KQEAgLTExNyw3ICsxNzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gZXZhbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50
cnlQdHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+
KGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2Rl
UmVmOwogfQpAQCAtMTI3LDcgKzE4Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPiBwcm9ncmFtRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
SlNFbnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CisgICAg
ICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNF
bnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CiAgICAgfSk7
CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMzcsNyArMTk2LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xNDksOSArMjA4LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewogICAgICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+
KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAg
ICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklU
VGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9f
dGxzLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1
bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwog
ICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMjE3LDcgKzI3Niw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNp
emUgc2l6ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0gewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCks
ICJvcF9jYXRjaCIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAg
IH0KQEAgLTIyNSw3ICsyODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4o
b3BfY2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50Ojpn
ZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJvcF9j
YXRjaDE2IikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAgfQpA
QCAtMjMzLDcgKzI5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcF9j
YXRjaCksICJvcF9jYXRjaDMyIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdp
ZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNo
MzIiKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0y
NDIsNiArMzAxLDI4NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgcmV0dXJuIHsgfTsK
IH0KIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Q
b2ludFRodW5rKE9wY29kZVNpemUgc2l6ZSkKK3sKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBj
YXNlIE9wY29kZVNpemU6Ok5hcnJvdzogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVu
Y3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJs
bGludF9nZW5lcmljX3JldHVybl9wb2ludCIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVy
biBjb2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeworICAgICAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQ
dHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihs
bGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDE2
IikpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIGNh
c2UgT3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNv
ZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50
KSwgImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50MzIiKSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgfQorfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpCit7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVy
bl9lYXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hp
bnQiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNy
ZWF0ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5h
bWUpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86OnJl
Z1QzLCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2lu
dGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBP
cGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNt
R2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUpCit7
CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86Ondhc21TY3Jh
dGNoR1BSMCwgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
cG9pbnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7CisgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIHdhc20g
Y2FsbCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFnKQoreworICAg
IENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6YXJndW1lbnRH
UFIyLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Qw
LCB0YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0
ZVB0clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygp
Cit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBD
Q2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpF
X0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3AgT1NSIGVudHJ5
IHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5r
KCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAg
IENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwor
ICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcp
OworCisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQp
OworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7
CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0Owor
CisgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAo
R1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOworCisgICAgICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29k
ZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4g
ZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJl
ZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGpp
dC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKKworICAg
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CisgICAgfSk7CisgICAg
cmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgICAgIGppdC5yZXQoKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJvbUxMSW50IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9pZCogcG9pbnRl
cikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
OjpyZWdUMyk7CisgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRSZWdpc3RlcnM6
OmxyKTsKKyAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAg
ICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ0YWcgdGh1
bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4g
dW50YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0Owor
CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuYWRkUHRyKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OnJlZ1QzKTsKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFSTTY0UmVn
aXN0ZXJzOjpscik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBv
aW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMs
IE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkKK3sKKyAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVy
cyBqaXQ7CisgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFKGppdCk7CisgICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJqaXRDYWdlUHRyIHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
T1NSRXhpdFB0clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRh
Zz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihub3JtYWxfb3Ny
X2V4aXRfdHJhbXBvbGluZSwgIm5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOwor
ICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisjaWYgRU5BQkxFKERGR19KSVQpCisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRy
YW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2lu
dDxPU1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsICJjaGVja3Bv
aW50X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNv
ZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3Bv
aW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+
IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29z
cl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0
X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBy
ZXR1cm5Mb2NhdGlvblRodW5rKE9wY29kZUlEIG9wY29kZUlELCBPcGNvZGVTaXplIHNpemUpCit7
CisjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBcCisgICAgY2FzZSBuYW1lIyNf
cmV0dXJuX2xvY2F0aW9uOiB7IFwKKyAgICAgICAgc3dpdGNoIChzaXplKSB7IFwKKyAgICAgICAg
Y2FzZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7
IFwKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAg
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0
UHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMj
X3JldHVybl9sb2NhdGlvbiksICAjbmFtZSAiX3JldHVybl9sb2NhdGlvbiB0aHVuayIpKTsgXAor
ICAgICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAg
IH0gXAorICAgICAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeyBcCisgICAgICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRy
VGFnPj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAg
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVy
blBvaW50PE9TUkV4aXRQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xv
Y2F0aW9uMTYgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1
cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRl
MzI6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lk
ZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlv
biksICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMzIgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0p
OyBcCisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAg
fSBcCisgICAgICAgIHJldHVybiB7IH07IFwKKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wY29kZUlE
KSB7CisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpCisgICAgTExJTlRfUkVUVVJO
X0xPQ0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9w
X2l0ZXJhdG9yX25leHQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCkK
KyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbF92YXJhcmdzX3Nsb3cpCisgICAgTExJ
TlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04o
b3BfZ2V0X2J5X3ZhbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X2lkKQor
ICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmlu
ZGV4IDAzNjhjZTlhMmRhMDYwNGY0MzcyNDUyZWUxMmY4N2M0ZTYzOGRiMGQuLmE5MjJiMjU5OWI5
YzYzOTQ5YjU1YjNhMTRmNWI3NmM1ZWI1ZTYxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCkBAIC00MCw2ICs0MCwyMiBAQCBleHRlcm4gIkMiIHsKICAgICBF
bmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUq
KTsKIH0KIAorI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCitleHRlcm4gIkMi
IHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZv
aWQpOworI2VuZGlmCisKKyAgICB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIodm9p
ZCk7CisgICAgdm9pZCB2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIodm9pZCk7CisKKyAgICB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7
CisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRl
cih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2tVbnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7Cit9CisjZW5kaWYKKwogaW5saW5l
IEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb1dhc20odm9pZCogY29kZSwgVk0qIHZtLCBQcm90b0Nh
bGxGcmFtZSogZnJhbWUpCiB7CiAgICAgYXV0byBjbG9iYmVyaXplVmFsaWRhdG9yID0gbWFrZVNj
b3BlRXhpdChbJl0gewpAQCAtNTksMTEgKzc1LDMyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpT
RW50cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRUaHVu
ayhPcGNvZGVTaXplKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6
ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvd1RodW5rKCk7CiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRFeGNlcHRp
b25UaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSk7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCosIFB0
clRhZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWls
Q2FsbEdhdGUoUHRyVGFnKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5R2F0ZVRodW5r
KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBleGNlcHRp
b25IYW5kbGVyR2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHRhZ0dhdGVUaHVuayh2b2lk
Kik7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBub3JtYWxPU1JFeGl0
VHJhbXBvbGluZVRodW5rKCk7CisjaWYgRU5BQkxFKERGR19KSVQpCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZy
b21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9T
UkV4aXRQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQsIE9wY29kZVNpemUpOwor
I2VuZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKTsKICNlbmRpZiAvLyBFTkFC
TEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWUzY2RlOTkwNGMxMDJiZWVlZjQ3YjE0ZjM1ZmY2
OTUxNjlmYTk3Zi4uNDUyMjBkM2ZlZWRmODdjN2FiZTdmMzhkYzI5NjU3NDlhMjBjYzk5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMjU2LDkgKzI1NiwxMiBAQCBjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIg
PSBjb25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdQogY29uc3Qg
Qnl0ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKIGNvbnN0IEpTRW50cnlQ
dHJUYWcgPSBjb25zdGV4cHIgSlNFbnRyeVB0clRhZwogY29uc3QgSG9zdEZ1bmN0aW9uUHRyVGFn
ID0gY29uc3RleHByIEhvc3RGdW5jdGlvblB0clRhZworY29uc3QgSlNFbnRyeVNsb3dQYXRoUHRy
VGFnID0gY29uc3RleHByIEpTRW50cnlTbG93UGF0aFB0clRhZworY29uc3QgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnID0gY29uc3RleHByIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwogY29uc3QgRXhjZXB0
aW9uSGFuZGxlclB0clRhZyA9IGNvbnN0ZXhwciBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCitjb25z
dCBZYXJyRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgWWFyckVudHJ5UHRyVGFnCiBjb25zdCBOb1B0
clRhZyA9IGNvbnN0ZXhwciBOb1B0clRhZwotY29uc3QgU2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4
cHIgU2xvd1BhdGhQdHJUYWcKKyAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogIyAt
IFdlIHVzZSBhIHBhaXIgb2YgcmVnaXN0ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdp
c3RlciBmb3IgdGhlCkBAIC0xMDI2LDcgKzEwMjksNyBAQCBtYWNybyB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgZW5kCiBlbmQKIAotbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5h
bWUsIHNpemUpCittYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAg
IG1hY3JvIGRlZmluZU5hcnJvdygpCiAgICAgICAgIGlmIG5vdCBDX0xPT1BfV0lOCiAgICAgICAg
ICAgICBfJW9wY29kZU5hbWUlX3JldHVybl9sb2NhdGlvbjoKQEAgLTEwNDgsMzIgKzEwNTEsNzYg
QEAgbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAg
c2l6ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikg
ZigpIGVuZCkKIGVuZAogCitpZiBBUk02NEUKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9i
YWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIK
K2VuZAorCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBj
YWxsZWUsIGNhbGxQdHJUYWcpCisgICAgbWFjcm8gbGFiZWxOYXJyb3coKQorICAgICAgICBfanNf
dHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgZW5kCisKKyAgICBtYWNybyBsYWJlbFdpZGUx
NigpCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgZW5k
CisKKyAgICBtYWNybyBsYWJlbFdpZGUzMigpCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV93aWRlMzI6CisgICAgZW5kCisKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgor
ICAgICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJlbFdpZGUxNiwgbGFiZWxXaWRlMzIsIG1hY3Jv
IChnZW4pIGdlbigpIGVuZCkKICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAg
ICBlbHNpZiBBUk02NEUKKyAgICAgICAgbWFjcm8gY2FsbE5hcnJvdygpCisgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIGEyCisgICAgICAgICAg
ICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAg
ICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAgY2FsbCB0MywgY2Fs
bFB0clRhZworICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAg
ICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdH
YXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUs
IGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0
clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAg
ICAgICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFj
cm8gY2FsbFdpZGUzMigpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBK
U0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5h
bWUlX3dpZGUzMikgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVv
cGNvZGVOYW1lJV93aWRlMzI6CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAg
ICAgIGVuZAorCisgICAgICAgIG1vdmUgY2FsbGVlLCB0MworICAgICAgICBzaXplKGNhbGxOYXJy
b3csIGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKICAgICBl
bHNlCisgICAgICAgIHNpemUobGFiZWxOYXJyb3csIGxhYmVsV2lkZTE2LCBsYWJlbFdpZGUzMiwg
bWFjcm8gKGdlbikgZ2VuKCkgZW5kKQogICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZwor
ICAgICAgICBpZiBBUk12NyBvciBNSVBTCisgICAgICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGlu
IEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgICAg
ICAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVj
dGlvbnMKKyAgICAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJl
c3VsdGluZyBpbiB1bmV4cGVjdGVkCisgICAgICAgICAgICAjIGNyYXNoZXMuCisgICAgICAgICAg
ICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCkKKyAgICAgICAgZW5kCiAgICAgZW5kCi0KLSAgICBpZiBBUk12NyBv
ciBNSVBTCi0gICAgICAgICMgSXQgaXMgcmVxdWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVz
ZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKLSAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0
dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCi0gICAgICAgICMgdGhhdCBjYW4g
Y2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCi0gICAgICAg
ICMgY3Jhc2hlcy4KLSAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAg
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKLSAgICBlbmQKLSAgICBkZWZpbmVPU1JF
eGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBkZWZpbmVSZXR1cm5MYWJlbChv
cGNvZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVn
dWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8g
cHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQs
IGNhbGxQdHJUYWcpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCiAj
IHNwIHBvaW50cyB0byB0aGUgbmV3IGZyYW1lCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2Fs
bGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclRh
aWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAg
ICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5LDgg
KzExNTYsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIs
IHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAgIGFk
ZHAgMTYsIGNmciwgdGVtcDMKLSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisgICAg
ICAgIGFkZHAgMTYsIGNmciwgdGVtcDQKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRlbXAx
CkBAIC0xMTMwLDcgKzExNzYsMTQgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwg
dGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIG1vdmUgdGVt
cDEsIHNwCi0gICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAg
ICBtb3ZlIHRlbXA0LCBhMgorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVhcCBK
U0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29u
c3RleHByIEdhdGU6OnRhaWxDYWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCisgICAgICAg
IGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBlbHNl
CisgICAgICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNybyBz
bG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpAQCAtMTE0NCwxNiArMTE5NywxNiBAQCBtYWNy
byBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0
cikKICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAg
ICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbChj
YWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNh
bGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAg
ICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVO
YW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAg
ICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVl
LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXR0
ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkgIyBX
ZSBkb24ndCByZWFjaCB0aGlzIGluIHN0cmFpZ2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFjaCBp
dCB2aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2RlIGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3Rh
Y2sgZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4KIAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJl
bChvcE5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAg
ICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1cm5Q
Q1tjZnJdLCBQQwpAQCAtMTM1MSw3ICsxNDA0LDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxzbyB0
cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNl
dCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdS
ZXR1cm5BZGRyZXNzIHNwCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBpZiBU
UkFDSU5HCkBAIC0xMzc5LDE2ICsxNDMxLDI1IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dl
dHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAg
ICAgYnRweiByMCwgLnJlY292ZXIKICAgICAgICAgbW92ZSBjZnIsIHNwICMgcmVzdG9yZSB0aGUg
cHJldmlvdXMgc3AKICAgICAgICAgIyBwb3AgdGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdpbGwg
anVtcCB0byBhIGZ1bmN0aW9uIHRoYXQgd2FudHMgdG8gc2F2ZSBpdAotICAgICAgICBpZiBBUk02
NCBvciBBUk02NEUKKyAgICAgICAgaWYgQVJNNjQKKyAgICAgICAgICAgIHBvcCBsciwgY2ZyCisg
ICAgICAgIGVsc2lmIEFSTTY0RQorICAgICAgICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mgd2ls
bCBiZSBwZXJmb3JtZWQgaW4gR2F0ZTo6ZW50cnlPU1JFbnRyeS4KICAgICAgICAgICAgIHBvcCBs
ciwgY2ZyCi0gICAgICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAgICAgZWxzaWYg
QVJNdjcgb3IgTUlQUwogICAgICAgICAgICAgcG9wIGNmcgogICAgICAgICAgICAgcG9wIGxyCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgZW5kCi0gICAgICAgIGpt
cCByMCwgSlNFbnRyeVB0clRhZworCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92
ZSByMCwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zm
c2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5KSAq
IFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
ICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjAsIEpTRW50
cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6CiAgICAgICAgIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKQEAgLTE0OTQsNyArMTU1NSwxMiBA
QCBlbmQKIG1hY3JvIGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTElu
dCgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUK
KyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZp
Z0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCBh
MgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAg
ICAgICByZXQKKyAgICBlbmQKIGVuZAogCiAjIFRoaXMgYnJlYWsgaW5zdHJ1Y3Rpb24gaXMgbmVl
ZGVkIHNvIHRoYXQgdGhlIHN5bnRoZXNpemVkIGxsaW50UENSYW5nZVN0YXJ0IGxhYmVsCkBAIC0x
NTI1LDYgKzE1OTEsMTcgQEAgZWxzZQogZW5kCiAgICAgZG9WTUVudHJ5KG1ha2VIb3N0RnVuY3Rp
b25DYWxsKQogCitnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcgorZ2xvYmFsIF92bUVudHJ5
VG9ZYXJySklUCitfdm1FbnRyeVRvWWFyckpJVDoKKyAgICBmdW5jdGlvblByb2xvZ3VlKCkKK2lm
IEFSTTY0IG9yIEFSTTY0RQorICAgIGptcCB0NSwgWWFyckVudHJ5UHRyVGFnCisgICAgX3ZtRW50
cnlUb1lhcnJKSVRBZnRlcjoKK2VuZAorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQorICAgIHJldAor
CiAKIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgIyB2b2lkIHNhbml0aXplU3Rh
Y2tGb3JWTUltcGwoVk0qIHZtKQpAQCAtMTU3MCw2ICsxNjQ3LDcxIEBAIGlmIG5vdCAoQ19MT09Q
IG9yIENfTE9PUF9XSU4pCiAgICAgICAgIHJldAogZW5kCiAKK2lmIEFSTTY0RQorICAgICMgdm9p
ZCogaml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKQorICAgIGVtaXQgIi5n
bG9ibCBfaml0Q2FnZVB0ciIKKyAgICBlbWl0ICJfaml0Q2FnZVB0cjoiCisgICAgICAgIHRhZ1Jl
dHVybkFkZHJlc3Mgc3AKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmppdENhZ2VQdHIpICog
UHRyU2l6ZSwgdDIKKyAgICAgICAgam1wIFt0Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAg
ICAgICBnbG9iYWwgX2ppdENhZ2VQdHJHYXRlQWZ0ZXIKKyAgICAgICAgX2ppdENhZ2VQdHJHYXRl
QWZ0ZXI6CisgICAgICAgIHJldAorCisgICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9s
aW5lCisgICAgX3RhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJu
QWRkcmVzcyBhMgorICAgICAgICBqbXAgYTAsIEpTRW50cnlQdHJUYWcKKworICAgIGdsb2JhbCBf
dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lCisgICAgX3RhaWxDYWxsSlNFbnRyeVNs
b3dQYXRoVHJhbXBvbGluZToKKyAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCisgICAgICAg
IGptcCBhMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisKKyAgICBnbG9iYWwgX2V4Y2VwdGlvbkhh
bmRsZXJUcmFtcG9saW5lCisgICAgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lOgorICAgICAg
ICBqbXAgYTAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKworICAgIGdsb2JhbCBfcmV0dXJuRnJv
bUxMSW50VHJhbXBvbGluZQorICAgIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lOgorICAgICAg
ICByZXQKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pz
VHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAor
ICAgICAgICBqbXAgX2xsaW50X3Byb2dyYW1fcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFt
cG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dy
YW1Qcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xs
aW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUV2
YWxQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWU6CisgICAgICAgIHRhZ1Jl
dHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9ldmFsX3Byb2xvZ3VlCisKKyAgICBn
bG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlCisgICAgX2pzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNw
CisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUKKworICAgIGds
b2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZQorICAgIF9qc1Ry
YW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5B
ZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9s
b2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
UHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xv
Z3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2sKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFk
ZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrCitlbmQKKwogaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAjIER1bW15IGVudHJ5
IHBvaW50IHRoZSBDIExvb3AgdXNlcyB0byBpbml0aWFsaXplLgogICAgIF9sbGludF9lbnRyeToK
QEAgLTE3MjQsMjEgKzE4NjYsMzAgQEAgZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjaywgbWFjcm8gKCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9j
YWxsKQotICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93
X3BhdGhfY2FsbF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19w
YXRoX2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlv
bkluaXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAotCiBvcChsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3Vl
KGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1Nl
dHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ss
IF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0
eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0
aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAg
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCisjIE5l
ZWQgdGhlc2Ugc3R1YiBsYWJlbHMgdG8gbWFrZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnIGV0Yy4gTExJbnQgaGVscGVyIG9wY29kZXMuCitf
anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193
aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a191bnRhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6
CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
X3RhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6CisgICAgY3Jhc2goKQogCiAjIFZhbHVlLXJlcHJlc2Vu
dGF0aW9uLXNwZWNpZmljIGNvZGUuCiBpZiBKU1ZBTFVFNjQKQEAgLTIxMDksNyArMjI2MCw3IEBA
IGVuZCkKIAogX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwo
Ci0gICAgICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAg
ICAgICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNw
YXRjaE9wKG5hcnJvdywgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMTE4LDcgKzIyNjksNyBAQCBf
bGxpbnRfb3BfY2FsbF9ldmFsOgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICBz
bG93UGF0aEZvckNvbW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCisgICAg
ICAgIG9wX2NhbGxfZXZhbCwKICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFsLAog
ICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKHdpZGUxNiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBA
IC0yMTI3LDcgKzIyNzgsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKIAogX2xsaW50
X29wX2NhbGxfZXZhbF93aWRlMzI6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAg
ICBvcF9jYWxsX2V2YWxfd2lkZTMyLAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdp
ZGUzMiwKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3
aWRlMzIsIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjIxMiw3ICsyMzYzLDEzIEBAIG9wKGNoZWNr
cG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKIAog
ICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRp
b24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCi0gICAgICAgIGptcCBy
MSwgSlNFbnRyeVB0clRhZworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgIG1vdmUgcjEs
IGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9m
SlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNp
emUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNF
bnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJU
YWcKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVu
ZApAQCAtMjIyOSwxMiArMjM4NiwyMyBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xp
bmUsIG1hY3JvICgpCiAgICAgICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2NoZWNrcG9pbnRf
b3NyX2V4aXQpCiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBicmFu
Y2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKLSAg
ICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAg
ICAgbW92ZSByMSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpT
Qzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50
cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGptcCByMSwg
SlNFbnRyeVB0clRhZworICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBvcnRl
ZCgpCiAgICAgZW5kCiBlbmQpCiAKK29wKG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCBtYWNy
byAoKQorICAgIGRpc3BhdGNoKDApCitlbmQpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0
IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAj
IFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0
aGVyIEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCkBAIC0yMjc5LDQgKzI0NDcsMTggQEAgb3Ao
d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgY3Jhc2goKQogZW5k
KQogCitfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsX25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93
YXNtX2NhbGxfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUx
NjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUxNjoKK193YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9s
aW5lX3dhc21fY2FsbF93aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNf
d2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTMyOgorX3dh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUzMjoKKyAgICBjcmFz
aCgpCisKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2MjZhNDY4MTdiMTUzYjNkNTQ2NDdjM2Q4
MmMxYjQ3NDlmZTYyNjg0Li5iZTU2MTQ5ZjFhNTRmMzZlMjdlNzFmOTY2OThhYTQyN2I2NjMyMzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNjg2LDcgKzY4Niw3IEBAIGVuZAogIyBFbnRyeXBvaW50
cyBpbnRvIHRoZSBpbnRlcnByZXRlcgogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4g
dDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rp
b25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCittYWNybyBmdW5jdGlvbkFyaXR5Q2hl
Y2sob3Bjb2RlTmFtZSwgZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwg
Q29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAgICBwcmVwYXJlU3Rh
dGVGb3JDQ2FsbCgpCkBAIC03MjQsNiArNzI0LDcgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNr
KGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYnRpeiB0MSwgLmNvbnRpbnVlCiAKIC5ub0V4dHJh
U2xvdDoKKyAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CiAgICAgLy8gTW92
ZSBmcmFtZSB1cCB0MSBzbG90cwogICAgIG5lZ2kgdDEKICAgICBtb3ZlIGNmciwgdDMKQEAgLTc1
MCw2ICs3NTEsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0
aCkKICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDEsIDhdCiAgICAgYWRkcCA4LCB0Mwog
ICAgIGJhZGRpbnogMSwgdDIsIC5maWxsTG9vcAorICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVO
YW1lJV90YWc6CiAKIC5jb250aW51ZToKICAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBz
aW5jZSB0aGUgc2xvd19wYXRoIGNsb2JiZXJlZCBpdC4KQEAgLTIxMTUsNyArMjExNyw3IEBAIG1h
Y3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSAr
IFRhZ09mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0s
IHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIs
IHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCiAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogLm9wQ2FsbFNsb3c6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IGFhMTU3MjNjNjQwZjJkNzdlYThhN2ZlODhhOThiYWVhODZkMmI5Yjku
LmJlYTdjNTgxYWZlNDIwNjBhY2UzYzlhYjFlNDhkYzJkYzA1YzFiZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0zMDAsMTUgKzMwMCwyMyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcmV0CiBl
bmQKIAotCiAjIGEwLCBhMiwgdDMsIHQ0CiBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnks
IHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBD
X0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5Cisg
ICAgZWxzaWYgQVJNNjRFCisgICAgICAgIG1vdmUgZW50cnksIHQzCisgICAgICAgIGxlYXAgSlND
Q29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0
ZXhwciBHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0KSAqIFB0clNpemUsIGEyCisgICAgICAgIGpt
cCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGds
b2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb0ph
dmFTY3JpcHRUcmFtcG9saW5lOgorICAgICAgICBjYWxsIHQzLCBKU0VudHJ5UHRyVGFnCiAgICAg
ZWxzZQogICAgICAgICBjYWxsIGVudHJ5LCBKU0VudHJ5UHRyVGFnCiAgICAgZW5kCisgICAgZ2xv
YmFsIF92bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyCisgICAgX3ZtRW50cnlUb0phdmFTY3Jp
cHRHYXRlQWZ0ZXI6CiAgICAgc3VicCAxNiwgc3AKIGVuZAogCkBAIC0zMjYsOSArMzM0LDE4IEBA
IG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEs
IHRlbXAyKQogICAgICAgICBzdWJwIDMyLCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVu
Y3Rpb25QdHJUYWcKICAgICAgICAgYWRkcCAzMiwgc3AKKyAgICBlbHNpZiBBUk02NEUKKyAgICAg
ICAgbW92ZSB0ZW1wMSwgdDMKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlND
OjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb05h
dGl2ZSkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgSG9zdEZ1bmN0aW9uUHRyVGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZl
VHJhbXBvbGluZQorICAgICAgICBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZToKKyAgICAgICAg
Y2FsbCB0MywgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIHRlbXAx
LCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICBlbmQKKyAgICBnbG9iYWwgX3ZtRW50cnlUb05hdGl2
ZUdhdGVBZnRlcgorICAgIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXI6CiBlbmQKIAogb3AobGxp
bnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8gKCkKQEAgLTQzMSw4ICs0NDgsMTQg
QEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAgbW92ZSBQQywg
YTEKICAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IpCiAgICAgICAgICAgICBidHB6
IHIwLCAucmVjb3ZlcgorCiAgICAgICAgICAgICBtb3ZlIHIxLCBzcAotICAgICAgICAgICAgam1w
IHIwLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAg
ICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1h
cCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAg
ICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcK
KyAgICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRQQygp
CiAgICAgICAgIGVuZCkKQEAgLTY0NSw3ICs2NjgsNyBAQCBlbmQKICMgRW50cnlwb2ludHMgaW50
byB0aGUgaW50ZXJwcmV0ZXIuCiAKICMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwg
d2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFy
aXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhv
cGNvZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2Rl
QmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZv
ckNDYWxsKCkKQEAgLTY4Miw5ICs3MDUsMTYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRv
bmVMYWJlbCwgc2xvd1BhdGgpCiAKIC5ub0V4dHJhU2xvdDoKICAgICBpZiBBUk02NEUKKyAgICAg
ICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVN
YXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVVudGFnKSAqIFB0clNpemUsIHQzCisg
ICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgICAgICBsb2FkcCA4W2Nmcl0sIGxyCiAgICAg
ICAgIGFkZHAgMTYsIGNmciwgdDMKICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQzCisgICAg
ICAgIF8lb3Bjb2RlTmFtZSVVbnRhZ0dhdGVBZnRlcjoKKyAgICBlbHNlCisgICAgICAgIF9qc190
cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKKyAgICAgICAgXyVvcGNvZGVOYW1lJVVudGFn
R2F0ZUFmdGVyOgogICAgIGVuZAogCiAgICAgLy8gTW92ZSBmcmFtZSB1cCB0MSBzbG90cwpAQCAt
NzEyLDkgKzc0MiwxNiBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93
UGF0aCkKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKIAogICAgIGlmIEFSTTY0RQorICAg
ICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0
ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVGFnKSAqIFB0clNpemUsIHQzCisg
ICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0MQogICAgICAg
ICB0YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAgICAgIHN0b3JlcCBsciwgOFtjZnJdCisgICAgICAg
IF8lb3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBv
bGluZV8lb3Bjb2RlTmFtZSVfdGFnOgorICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVy
OgogICAgIGVuZAogCiAuY29udGludWU6CkBAIC0yMTc1LDkgKzIyMTIsMTUgQEAgbWFjcm8gY2Fs
bEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWEKICAgICBzdG9yZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAg
IHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9t
YWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2Fs
bFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0
clRhZykKLQorICAgIGlmIEFSTTY0RQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAg
ICBwcmVwYXJlQ2FsbCh0MCwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIHQwCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gsIHQwLCBKU0VudHJ5UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFy
ZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVD
b2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNh
bGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQ
dHJUYWcpCisgICAgZW5kCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyAr
MjI4OCw3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3Bl
cnR5S2V5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxp
bnRfb3BfY2F0Y2gsIG1hY3JvKCkgZW5kLCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29w
X2NhdGNoLCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQogICAgICMgVGhpcyBpcyB3aGVyZSB3
ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAg
ICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3Bf
Y2F0Y2gpLCBhbmQgZnJvbQogICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGlu
ZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KQEAgLTIzMTAsNyArMjM1MywxMyBAQCBv
cChsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICMg
VGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAg
ICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQxCiAgICAgY29udmVydENhbGxlZVRvVk0odDEpCi0gICAg
am1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWcKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIp
ICogUHRyU2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAj
IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCBWTTo6dGFyZ2V0
TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBl
bmQpCiAKIApAQCAtMzAxOCw0ICszMDY3LDMgQEAgb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9t
X2xvb3BfaGludCwgbWFjcm8gKCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKICAgICBkb1JldHVybigpCiBlbmQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGI5MzIyMTM0ODM0MmU5YWE4ODg4MzJkNWM3YmFk
MTY2NDdhY2I0NWIuLjZkMTU2OTY0MzA2ZmYzNGFiZjY1YjE2ZTk1ZWIyMzUyNjE0OWQ3OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTM5LDgg
KzEzOSwxMiBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVn
aXN0ZXIpCiAKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAg
ICAgICAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJu
QWRkcmVzcyBzcAotICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAg
ICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhw
ciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9T
UkVudHJ5KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAg
ICAgICAgLnJlY292ZXI6CiAgICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihj
b2RlQmxvY2tSZWdpc3RlcikKICAgICAgICAgZW5kKQpAQCAtMTU5LDkgKzE2MywxNCBAQCBtYWNy
byBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBidHB6IHIxLCAucmVjb3Zl
cgogICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgICAgICAg
ICByZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNz
IHNwCiAgICAgICAgICAgICBtb3ZlIHIwLCBhMAotICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50
cnlQdHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIG1vdmUgcjEs
IHdzMAorICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zm
c2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICog
UHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBqbXAgcjEsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNv
dmVyOgogICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQpAQCAtMjUzLDcgKzI2Miw2IEBAIGVuZAogCiBt
YWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRX
YXNtSW5zdGFuY2UpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdl
IHNob3VsZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVy
UENBbmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBsb2Fk
V2FzbUluc3RhbmNlKCkKQEAgLTQ1Niw3ICs0NjQsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigp
CiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgcmVzdG9yZUNhbGxlclBD
QW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcg
KyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdh
dGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAgICAgICByZXQKKyAgICBlbmQKIGVuZAog
CiAjIEVudHJ5IHBvaW50CkBAIC00OTcsNyArNTEwLDEzIEBAIG9wKHdhc21fdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbY2ZyXSwgYTMKICAgICBjQ2FsbDQoX3Nsb3dfcGF0
aF93YXNtX3Rocm93X2V4Y2VwdGlvbikKIAotICAgIGptcCByMCwgRXhjZXB0aW9uSGFuZGxlclB0
clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBtb3ZlIHIwLCBhMAorICAgICAgICBsZWFwIEpT
Q0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25z
dGV4cHIgR2F0ZTo6ZXhjZXB0aW9uSGFuZGxlcikgKiBQdHJTaXplLCBhMQorICAgICAgICBqbXAg
W2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgRXhjZXB0aW9uSGFuZGxlclB0clRhZworICAg
IGVsc2UKKyAgICAgICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBl
bmQpCiAKICMgRGlzYWJsZSB3aWRlIHZlcnNpb24gb2YgbmFycm93LW9ubHkgb3Bjb2RlcwpAQCAt
NzA1LDcgKzcyNCwzOCBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgs
IHN0b3JlV2FzbUluc3RhbmNlKQogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBhZGRw
IENhbGxlckZyYW1lQW5kUENTaXplLCBzcAotICAgICAgICAgICAgY2FsbCB3czAsIFNsb3dQYXRo
UHRyVGFnCisKKyAgICAgICAgICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IHNpemUpCisgICAgICAgICAgICAgICAgbWFjcm8gY2FsbE5hcnJvdygpCisgICAgICAgICAgICAg
ICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcg
KyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdh
dGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAg
IGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFt
cG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpTRW50
cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAg
bWFjcm8gY2FsbFdpZGUxNigpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAg
ICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMTYp
ICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFt
ZSVfd2lkZTE2OgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxs
V2lkZTMyKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAg
ICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXpl
LCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6
CisgICAgICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAg
ICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIHNpemUoY2FsbE5hcnJvdywgY2Fs
bFdpZGUxNiwgY2FsbFdpZGUzMiwgbWFjcm8gKGdlbikgZ2VuKCkgZW5kKQorICAgICAgICAgICAg
ICAgIGRlZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgICAgICAgICBlbmQp
CiAKICAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB3czEKICAgICAgICAgICAgIGxv
YWRpIFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1t3czFdLCB3czEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggZjllNTczMmZh
ZjE0YjA4MDliYzJiYjZjMTliMWM4MDJjNTlmODMwMi4uYTVhMGJjZGE1NDE0YTZmMGI2YjlkYmZk
ZDQxZDFjMDVjNDBmYjc4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXJtNjQucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
NjQucmIKQEAgLTQzLDYgKzQzLDcgQEAKICMgIHgzICA9PiB0MywgYTMKICMgIHg0ICA9PiB0NAog
IyAgeDUgID0+IHQ1CisjICB4NiAgPT4gdDYKICMgeDEzICA9PiAgICAgICAgICAgICAgICAgIChz
Y3JhdGNoKQogIyB4MTYgID0+ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAjIHgxNyAgPT4g
ICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NWY1YTMyZDUxMGZjODBjMDYzOGEzOWVkNjUxYWVmNWE5ZDBmZmYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCkBA
IC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoSklUX09Q
RVJBVElPTl9WQUxJREFUSU9OKQorCisjZGVmaW5lIEpTQ19VVElMSVRZX0dBVEVTKHYpIFwKKyAg
ICB2KGppdENhZ2VQdHIsIE5vUHRyVGFnKSBcCisgICAgdih0YWlsQ2FsbEpTRW50cnlQdHJUYWcs
IE5vUHRyVGFnKSBcCisgICAgdih0YWlsQ2FsbEpTRW50cnlTbG93UGF0aFB0clRhZywgTm9QdHJU
YWcpIFwKKyAgICB2KGxvb3BPU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KGVudHJ5T1NSRW50
cnksIE5vUHRyVGFnKSBcCisgICAgdih3YXNtT1NSRW50cnksIE5vUHRyVGFnKSBcCisgICAgdihl
eGNlcHRpb25IYW5kbGVyLCBOb1B0clRhZykgXAorICAgIHYocmV0dXJuRnJvbUxMSW50LCBOb1B0
clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZywg
Tm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFn
LCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja1VudGFnLCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVja1RhZywgTm9QdHJUYWcpIFwKKyAgICB2KHZtRW50cnlUb0phdmFTY3JpcHQs
IEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KHZtRW50cnlUb05hdGl2ZSwgSG9zdEZ1bmN0aW9uUHRy
VGFnKSBcCisKKyNkZWZpbmUgSlNDX0pTX0dBVEVfT1BDT0RFUyh2KSBcCisgICAgdihvcF9jYWxs
LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGwsIEpTRW50cnlQdHJUYWcpIFwK
KyAgICB2KG9wX2NvbnN0cnVjdCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfaXRlcmF0b3Jf
bmV4dCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfaXRlcmF0b3Jfb3BlbiwgSlNFbnRyeVB0
clRhZykgXAorICAgIHYob3BfY2FsbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAg
ICB2KG9wX3RhaWxfY2FsbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9w
X2NvbnN0cnVjdF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxf
dmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2Fs
bF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAg
IHYob3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdihvcF9jYWxsX2V2YWxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihv
cF9pdGVyYXRvcl9uZXh0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3Bf
aXRlcmF0b3Jfb3Blbl9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKworI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKKworI2RlZmluZSBKU0NfV0FTTV9HQVRFX09QQ09ERVModikgXAorICAg
IHYod2FzbV9jYWxsLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdhc21fY2FsbF9u
b190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX2luZGlyZWN0
LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdhc21fY2FsbF9pbmRpcmVjdF9ub190
bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorCisjZWxzZQorI2RlZmluZSBKU0NfV0FTTV9H
QVRFX09QQ09ERVModikKKyNlbmRpZgorCitlbnVtIGNsYXNzIEdhdGUgOiB1aW50OF90IHsKKyNk
ZWZpbmUgSlNDX0RFRklORV9HQVRFX0VOVU0oZ2F0ZU5hbWUsIHRhZykgZ2F0ZU5hbWUsCisjZGVm
aW5lIEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFnKSBnYXRlTmFtZSwg
Z2F0ZU5hbWUjI193aWRlMTYsIGdhdGVOYW1lIyNfd2lkZTMyLAorICAgIEpTQ19VVElMSVRZX0dB
VEVTKEpTQ19ERUZJTkVfR0FURV9FTlVNKQorICAgIEpTQ19KU19HQVRFX09QQ09ERVMoSlNDX0RF
RklORV9PUENPREVfR0FURV9FTlVNKQorICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhKU0NfREVG
SU5FX09QQ09ERV9HQVRFX0VOVU0pCisjdW5kZWYgSlNDX0RFRklORV9HQVRFX0VOVU0KK307CisK
KyNkZWZpbmUgSlNDX0NPVU5UKGdhdGVOYW1lLCB0YWcpICsgMQorI2RlZmluZSBKU0NfT1BDT0RF
X0NPVU5UKGdhdGVOYW1lLCB0YWcpICsgMworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1i
ZXJPZkdhdGVzID0gMCBKU0NfVVRJTElUWV9HQVRFUyhKU0NfQ09VTlQpIEpTQ19KU19HQVRFX09Q
Q09ERVMoSlNDX09QQ09ERV9DT1VOVCkgSlNDX1dBU01fR0FURV9PUENPREVTKEpTQ19PUENPREVf
Q09VTlQpOworI3VuZGVmIEpTQ19DT1VOVAorI3VuZGVmIEpTQ19PUENPREVfQ09VTlQKKyNlbHNl
CisvLyBLZWVwIGl0IG5vbi16ZXJvIHRvIG1ha2UgSlNDQ29uZmlnJ3MgYXJyYXkgbm90IFswXS4K
K3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9IDE7CisjZW5kaWYKKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAppbmRleCA1YTQ3MzE3
YzYyYTVlYmE2NjY2NzU3MzVmNzc0MDM1MDBjNjgwYjQxLi43Zjk2ZWM1MmVkMjFhZmRlMzNkYTEz
MGRiN2RkNDY5NGVjNjE5OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ND
b25maWcuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkdh
dGUuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJPcHRpb25zTGlzdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTkyLDYgKzkzLDcgQEAgc3RydWN0IENvbmZpZyB7
CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBbbnVtT3Bjb2RlSURzICsgbnVtV2FzbU9wY29kZUlE
c107CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBXaWRlMTZbbnVtT3Bjb2RlSURzICsgbnVtV2Fz
bU9wY29kZUlEc107CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBXaWRlMzJbbnVtT3Bjb2RlSURz
ICsgbnVtV2FzbU9wY29kZUlEc107CisgICAgICAgIGNvbnN0IHZvaWQqIGdhdGVNYXBbbnVtYmVy
T2ZHYXRlc107CiAgICAgfSBsbGludDsKIAogI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJU
QUdfREVCVUdHSU5HKQpAQCAtMTE3LDYgKzExOSw3IEBAIGV4dGVybiAiQyIgSlNfRVhQT1JUX1BS
SVZBVEUgQ29uZmlnIGdfanNjQ29uZmlnOwogY29uc3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0Nv
bmZpZ09wY29kZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5vcGNvZGVNYXApOwog
Y29uc3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcFdpZGUxNiA9IG9mZnNl
dG9mKEpTQzo6Q29uZmlnLCBsbGludC5vcGNvZGVNYXBXaWRlMTYpOwogY29uc3RleHByIHNpemVf
dCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcFdpZGUzMiA9IG9mZnNldG9mKEpTQzo6Q29uZmln
LCBsbGludC5vcGNvZGVNYXBXaWRlMzIpOworY29uc3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0Nv
bmZpZ0dhdGVNYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQuZ2F0ZU1hcCk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NQdHJUYWcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRy
VGFnLmNwcAppbmRleCBhOTQxNjM0YmZmZGE3YTQ2MzE1NmM0NTkwNmY3NzQ5YmVhMjI2YWM3Li5l
YWIzN2VlODc4NDE2NDliYmQ5MWFjNDk0MjNlOWUzYmQ3YzUyZWRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKQEAgLTI4LDYgKzI4LDEyIEBACiAKICNp
bmNsdWRlICJKU0NDb25maWcuaCIKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxt
YWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgQ1BVKEFS
TTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0zNSw4ICs0MSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBjaGFyKiB0YWdGb3JQdHIoY29uc3Qgdm9pZCogcHRy
KQogewogI2RlZmluZSBSRVRVUk5fTkFNRV9JRl9UQUdfTUFUQ0hFUyh0YWcsIGNhbGxlZVR5cGUs
IGNhbGxlclR5cGUpIFwKLSAgICBpZiAocHRyID09IFdURjo6dGFnQ29kZVB0ckltcGw8V1RGOjpQ
dHJUYWdBY3Rpb246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4ocmVtb3ZlQ29kZVB0clRhZyhwdHIpKSkg
XAotICAgICAgICByZXR1cm4gI3RhZzsKKyAgICBpZiAoY2FsbGVyVHlwZSAhPSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQgfHwgY2FsbGVlVHlwZSAhPSBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIHsg
XAorICAgICAgICBpZiAocHRyID09IFdURjo6dGFnQ29kZVB0ckltcGw8V1RGOjpQdHJUYWdBY3Rp
b246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4ocmVtb3ZlQ29kZVB0clRhZyhwdHIpKSkgXAorICAgICAg
ICAgICAgcmV0dXJuICN0YWc7IFwKKyAgICB9CiAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRV
Uk5fTkFNRV9JRl9UQUdfTUFUQ0hFUykKICN1bmRlZiBSRVRVUk5fTkFNRV9JRl9UQUdfTUFUQ0hF
UwogICAgIHJldHVybiBudWxscHRyOyAvLyBNYXRjaGluZyB0YWcgbm90IGZvdW5kLgpAQCAtNjEs
NCArNjksMzIgQEAgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3VwKCkKIAogI2VuZGlmIC8vIENQ
VShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogCisjaWYgQ1BVKEFSTTY0RSkK
KworUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyB0YWcpCit7CisjZGVmaW5lIFJF
VFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgY2FzZSBf
dGFnTmFtZTogcmV0dXJuIGNhbGxlclR5cGU7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKKyAgICB9CisjdW5kZWYgUkVU
VVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKK30K
KworUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0clRhZyB0YWcpCit7CisjZGVmaW5lIFJF
VFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgY2FzZSBf
dGFnTmFtZTogcmV0dXJuIGNhbGxlZVR5cGU7CisgICAgc3dpdGNoICh0YWcpIHsKKyAgICAgICAg
Rk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKKyAgICB9CisjdW5kZWYgUkVU
VVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKK30K
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NQdHJUYWcuaAppbmRleCBkZjhiNDAyMjY2ZTBlMDIwMTlhZjM1ZjY4ZTkxZmFhNzhi
ZTc5MzViLi4zMzhhYWFlYWU2YTEyNTUzNjQ0ZWQ1NTczYWY1YjFiYzRmMDM5MDc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaApAQCAtMjcsNDYgKzI3LDUzIEBA
CiAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1B0clRhZy5o
PgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2Fn
ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMi
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0
cl90IHRhZyk7CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5nIFB0clRhZyA9IFdU
Rjo6UHRyVGFnOwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19QVFJUQUcodikgXAotICAgIC8qIE5h
dGl2ZSBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOb25lICovIFwKICAg
ICB2KERPTUpJVEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KFB1dFZhbHVl
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUp
IFwKLSAgICAvKiBKSVQgTm9uZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6Tm9uZSAq
LyBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFibGVNZW1vcnlQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoTGlu
a0J1ZmZlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpO
b25lKSBcCi0gICAgLyogTmF0aXZlIE5hdGl2ZSAqLyBcCisgICAgdihZYXJyOEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZ
YXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6
Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seTE2Qml0
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwK
KyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOYXRpdmUgKi8gXAogICAgIHYoQnl0ZWNvZGVQ
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZl
KSBcCiAgICAgdihKSVRQcm9iZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlRXhlY3V0b3JQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCiAgICAg
dihKSVRQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICB2KFNsb3dQYXRo
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2
ZSkgXAotICAgIC8qIEpJVCBOYXRpdmUgKi8gXAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOk5h
dGl2ZSAqLyBcCiAgICAgdihOYXRpdmVUb0pJVEdhdGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogTmF0aXZlIEpJVCAqLyBc
CisgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxsZXI6SklUICovIFwK
ICAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KEpJVFRvTmF0aXZl
R2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKLSAgICAvKiBKSVQgSklUICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpKSVQg
Ki8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFRodW5rUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUU3R1YlJv
dXRpbmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCiAgICAgdihKU0VudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCkgXAorICAgIHYoSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNJbnRlcm5hbFB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAg
ICB2KEpTU3dpdGNoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogICAgIHYoT1NSRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFeGl0UHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoV2FzbUVudHJ5UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAg
IHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKSBcCi0gICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKICAgICB2KFlhcnJCYWNrdHJhY2tQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAKICNkZWZpbmUgSlNDX0RFQ0xBUkVf
UFRSVEFHKG5hbWUsIHR5cGUsIHRhcmdldCkgV1RGX0RFQ0xBUkVfUFRSVEFHKG5hbWUpCkBAIC0x
MDgsMTggKzExNSwyOCBAQCBGT1JfRUFDSF9KU0NfUFRSVEFHKEpTQ19ERUNMQVJFX1BUUlRBRykK
ICNwcmFnbWEgd2FybmluZyhwb3ApCiAjZW5kaWYKIAorSlNfRVhQT1JUX1BSSVZBVEUgUHRyVGFn
Q2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyk7CitKU19FWFBPUlRfUFJJVkFURSBQdHJUYWdD
YWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnKTsKKwogdGVtcGxhdGU8UHRyVGFnIHRhZywgUHRy
VGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlLCBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUsIHR5
cGVuYW1lIFB0clR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQdHJUeXBlIHRhZ0pTQ0NvZGVQ
dHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2FsbGVyVHlwZSA9PSBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2FsbGVlVHlwZSA9PSBQ
dHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3RleHByICh0YWcgIT0g
SklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9
PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7Ci0gICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAgICAgICAgICAg
ICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIp
OwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOwotICAgICAgICB9CisgICAgICAgIHN0YXRpY19hc3NlcnQodGFn
ID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAg
ICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQorICAgICAgICAgICAgSklU
T3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOworICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKKyAgICAg
ICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24o
cHRyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJh
dGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpKSk7
CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
UHRyVHlwZT4oaml0Q2FnZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIHRhZykpOworI2Vu
ZGlmCiAgICAgfQogICAgIHJldHVybiBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRy
KTsKIH0KQEAgLTEyOSwxNyArMTQ2LDY0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUg
dW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGNh
bGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICBpZiBjb25zdGV4cHIgKGNh
bGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlKSB7Ci0gICAgICAgIGlmIGNvbnN0
ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykgewotICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQot
ICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRP
cGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9z
dEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3Rh
bmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCh0
YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBK
SVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Cisg
ICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAg
ICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlv
bihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lzZV9jYXN0PFB0clR5
cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZv
aWQqPihwdHIpKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1vdmVDb2RlUHRyVGFn
KHB0cik7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAgICAgICBQ
dHJUeXBlIHJlbW92ZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCgodGFnSlNDQ29kZVB0ckltcGw8dGFnLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBl
PihyZW1vdmVkKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1vdmVkOwogICAgICAg
ICB9CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dW50YWdOYXRpdmVDb2RlUHRySW1w
bDx0YWc+KHB0cik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+CitpbmxpbmUgUHRy
VHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihK
U0NfSklUX0NBR0UoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpLCBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdGFja1BvaW50ZXIpKSk7CisjZW5kaWYKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVy
biBwdHJhdXRoX3NpZ25fdW5hdXRoZW50aWNhdGVkKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19k
ZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7CisjZWxz
ZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlw
ZT4KK2lubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxs
KFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCit7CisgICAgQVNTRVJUKHB0
cik7CisgICAgVU5VU0VEX1BBUkFNKHN0YWNrUG9pbnRlcik7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgUHRyVHlwZSB1bmNh
Z2VkID0gcmVtb3ZlQ29kZVB0clRhZyhwdHIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh0YWdD
b2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwodW5jYWdlZCwgc3RhY2tQb2ludGVyKSA9
PSBwdHIpOworICAgICAgICByZXR1cm4gdW5jYWdlZDsKKyAgICB9CisjZW5kaWYKKyNpZiBDUFUo
QVJNNjRFKQorICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2lu
dGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwogI2lmIENQVShBUk02
NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogdm9pZCBpbml0aWFsaXplUHRyVGFnTG9v
a3VwKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0
LmgKaW5kZXggYWRkMjY0ZTkwOTc1YjI2NWZkNWJlMTBmMjYzMmZkNzVlMjg2YzgxYy4uZjMwNWU0
YTE2NGQwMWZmYjFmODFjNzllYjVlNDlmMDQ1YjgxODVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCkBAIC0zNCw3ICszNCwxMCBAQCBzdHJ1Y3QgTWF0
Y2hSZXN1bHQ7CiAjaWYgQ1BVKEFERFJFU1MzMikKIHVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9
IHVpbnQ2NF90OwogI2Vsc2UKLXVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9IE1hdGNoUmVzdWx0
Oworc3RydWN0IEVuY29kZWRNYXRjaFJlc3VsdCB7CisgICAgc2l6ZV90IHN0YXJ0OworICAgIHNp
emVfdCBlbmQ7Cit9OwogI2VuZGlmCiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CkBAIC01Niw2ICs1
OSwxMiBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICAsIGVuZChiaXR3aXNlX2Nhc3Q8
TWF0Y2hSZXN1bHQ+KG1hdGNoKS5lbmQpCiAgICAgewogICAgIH0KKyNlbHNlCisgICAgQUxXQVlT
X0lOTElORSBNYXRjaFJlc3VsdChFbmNvZGVkTWF0Y2hSZXN1bHQgbWF0Y2gpCisgICAgICAgIDog
c3RhcnQobWF0Y2guc3RhcnQpCisgICAgICAgICwgZW5kKG1hdGNoLmVuZCkKKyAgICB7CisgICAg
fQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJlc3VsdCBmYWlsZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRleCAwZDJmNWFj
Zjc5Y2RmNTc0OThlNmE3M2MwNjcyZDZkZDRiZjg4NDc4Li5lNzE3ZDMwZTY0ZDE1OTczNDc5MmEz
ZjQ4YjkyMTY1NzJmYjQwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcApAQCAtNTAsNiArNTAsMTEgQEAKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJ
VENhZ2VBZGRpdGlvbnMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTM5
Miw2ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQWxsSklUT3B0aW9ucygpCiAgICAgT3B0
aW9uczo6dXNlT01HSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25zOjp1c2VET01KSVQoKSA9IGZh
bHNlOwogICAgIE9wdGlvbnM6OnVzZVJlZ0V4cEpJVCgpID0gZmFsc2U7CisgICAgT3B0aW9uczo6
dXNlSklUQ2FnZSgpID0gZmFsc2U7CiB9CiAKIHZvaWQgT3B0aW9uczo6cmVjb21wdXRlRGVwZW5k
ZW50T3B0aW9ucygpCkBAIC0xMTE0LDQgKzExMjAsMTAgQEAgYm9vbCBPcHRpb25SZWFkZXI6Ok9w
dGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2Jvb2wgY2FuVXNlSklUQ2FnZSgpIHsg
cmV0dXJuIEpTQ19KSVRfQ0FHRV9WRVJTSU9OKCk7IH0KKyNlbHNlCitib29sIGNhblVzZUpJVENh
Z2UoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTlkZjU1ZWJk
Mjc2Y2UxNGRkYzliODdjZDAxZTZlYmM3ZjJmNzdmNS4uYjBhMDUyMDYzMGU4ZDBlYWZkMTcwMjQ1
ZTE0Y2YzMTE3ZDE2OTA5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCkBAIC00Myw2ICs0Myw4IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2Vt
Ymx5U3RyZWFtaW5nQXBpID0gdHJ1ZTsKIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAjZW5kaWYKIAorSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
YW5Vc2VKSVRDYWdlKCk7CisKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3b3JrPwogLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlNDX09QVElPTigpIG1h
Y3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBpbiB1c2UsCkBAIC01
MjAsNiArNTIyLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzZWVkRm9yTElDTUZ1enplciwgNDI0MjQyLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJsZSwgYWxsb3dIb2lzdGluZ0xJQ01Qcm9iYWJp
bGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNl
dHRlcnNPbkdsb2JhbE9iamVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
KyAgICB2KEJvb2wsIHVzZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRy
KSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IDljNGI1OTU0NmU2
Zjk2MGFiNzU4ZTNhNTNmMmI2MWRiYjY3NGMyMWUuLjkwNjIxMTIxYTgxZTMxYjUyMTc1YjU5N2Q5
YmM0MTI2NDg2NzYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93
UGF0aHMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgewogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIFdBU01fQ0FMTF9SRVRVUk4odGFy
Z2V0SW5zdGFuY2UsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIGRvIHsgXAotICAgICAgICBX
QVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBTbG93UGF0aFB0clRh
Zz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0YW5jZSk7IFwKKyAgICAgICAgV0FTTV9SRVRVUk5f
VFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnPihj
YWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAj
ZGVmaW5lIENPREVfQkxPQ0soKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CmluZGV4IDIyYmY2NmQ4YzgyMmRhOTFlMDMxODA2YTJmNjlkMzZlNGJkOGY3YmQuLjk0ZDMwMmFl
YWZkNTE2YTViM2ZjN2Y0YmY1Zjc5NWEzZjU2Y2E3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFlhcnIgewogCisjaWYgQ1BVKEFSTTY0KQorSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJ
T04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlUb1lhcnJKSVRBZnRl
cik7CisjZW5kaWYKKwogTWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpNYXRjaGluZ0NvbnRleHRIb2xk
ZXIoVk0mIHZtLCBZYXJyQ29kZUJsb2NrKiB5YXJyQ29kZUJsb2NrLCBNYXRjaEZyb20gbWF0Y2hG
cm9tKQogICAgIDogbV92bSh2bSkKIHsKQEAgLTM3NDYsOSArMzc1MCw3IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWN4KTsKICNlbmRpZgogI2VsaWYgQ1BV
KEFSTTY0KQotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAgIGlmIChtX2RlY29k
ZVN1cnJvZ2F0ZVBhaXJzKSB7Ci0gICAgICAgICAgICBwdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdp
c3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4MTAw
MDApLCBzdXBwbGVtZW50YXJ5UGxhbmVzQmFzZSk7CiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMigweGQ4MDApLCBsZWFkaW5nU3Vycm9nYXRlVGFnKTsKICAgICAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKDB4ZGMwMCksIHRyYWlsaW5nU3Vycm9nYXRlVGFnKTsKQEAgLTM4MDMsOCArMzgw
NSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJ4
KTsKICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKICNlbGlmIENQVShBUk02NCkKLSAg
ICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICBwb3BQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworICAgICAgICAvLyBEbyBub3RoaW5n
CiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgcG9wKEFSTVJlZ2lzdGVyczo6cjgpOwog
ICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyNik7CkBAIC0zODEzLDcgKzM4MTQsMTMgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAjZWxpZiBDUFUoTUlQUykKICAgICAgICAgLy8gRG8gbm90aGluZwogI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihyZXRhZ0Nv
ZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPigmdm1FbnRyeVRv
WWFyckpJVEFmdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgZmFySnVtcChyZWdUMCwgT3BlcmF0aW9u
UHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIHJldCgpOworI2VuZGlmCiAgICAgfQogCiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggNjY0MjhlMDY2M2YzMzIwOTE3
NzgxZGJiOWQwYzczMGQyYjZkNjg1Yi4uMTViN2JkNmEyNmZmNmU0YjAwMTIxMjk4OWU4ZmRjZWVh
NWE0YjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtNzYsNiArNzYs
OSBAQCBjbGFzcyBNYXRjaGluZ0NvbnRleHRIb2xkZXIgewogI2VuZGlmCiB9OwogCitleHRlcm4g
IkMiIEVuY29kZWRNYXRjaFJlc3VsdCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0IHZvaWQqIGlucHV0
LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdD
b250ZXh0SG9sZGVyKiBtYXRjaGluZ0NvbnRleHQsIGNvbnN0IHZvaWQqIGNvZGVQdHIpOworZXh0
ZXJuICJDIiB2b2lkIHZtRW50cnlUb1lhcnJKSVRBZnRlcih2b2lkKTsKKwogY2xhc3MgWWFyckNv
ZGVCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoWWFyckNvZGVCbG9jayk7CkBAIC0xMDksMjUgKzExMiw0MSBAQCBjbGFzcyBZYXJy
Q29kZUJsb2NrIHsKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29u
dGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhC
aXRDb2RlKCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZt
RW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgJm1hdGNoaW5nQ29u
dGV4dCwgcmV0YWdDb2RlUHRyPFlhcnI4Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVm
OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTgsIFlhcnI4Qml0UHRyVGFn
PihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3Ro
LCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hS
ZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7CisjaWYgQ1BVKEFS
TTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwg
c3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFy
cjE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVu
Y3Rpb25QdHI8WWFyckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGlu
Z0NvbnRleHQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29u
c3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBNYXRjaGlu
Z0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCho
YXM4Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRy
LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seThCaXRQdHJUYWcs
IFlhcnJFbnRyeVB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRy
PFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1fbWF0Y2hP
bmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51
bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1
bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjRFKQor
ICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQs
IGxlbmd0aCwgbnVsbHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnJNYXRj
aE9ubHkxNkJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0
KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYsIFlhcnJNYXRjaE9ubHkx
NkJpdFB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5w
dXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAg
ICAgfQogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvT1NBbGxvY2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKaW5kZXgg
NzcxMzYyYjkyYTJlNTIyOTM5ODRlMTE2NTFiZDJhOTM5M2Q5ODNhMi4uMjY4OGE0ZWZkZjgxN2Ri
N2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NB
bGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyByZWxlYXNlRGVjb21taXR0ZWQgc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVz
ZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBk
ZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2ZVVuY29tbWl0dGVkIHJldHVybnMgdG8KICAgICAvLyB5
b3UgbWVtb3J5IHRoYXQgaXMgemVyb2VkLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
KiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFi
bGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVf
dCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRoZXkgY29tbWl0IG9y
IGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91bGQKQEAgLTU1LDI3
ICs1NSwyNyBAQCBjbGFzcyBPU0FsbG9jYXRvciB7CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUg
c3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBWTSBpbiBhbiBjb21taXR0ZWQg
c3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3VsZCBiZSBjYWxsZWQgb24gYSBy
ZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRo
ZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29tbWl0dGVkIHN0YXRlLgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3Qs
IFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QsIFVzYWdl
ID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFn
ZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIGJh
c2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGFraW4gdG8gcmVz
ZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93ZXZlciByYXRoZXIg
dGhhbgogICAgIC8vIGNvbW1pdHRpbmcvZGVjb21taXR0aW5nIHRoZSBlbnRpcmUgcmVnaW9uIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyBhIHN1YnJlZ2lvbiB0byBiZQogICAgIC8vIHNwZWNp
ZmllZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21t
aXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3du
VXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlID0gVW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2Fn
ZUVuYWJsZWQgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFsbG9jYXRlIGFuIGV4aXN0aW5nLCBjb21t
aXR0ZWQgYWxsb2NhdGlvbi4KICAgICAvLyBUaGUgcHJpb3IgYWxsb2NhdGlvbiBtdXN0IGJlIGZ1
bGx5IGNvbWl0dGVkLCBhbmQgdGhlIG5ldyBzaXplIHdpbGwgYWxzbyBiZSBmdWxseSBjb21taXR0
ZWQuCiAgICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgcHJvdmlkZWQgc2luY2UgaXQgbWF5IGJlIHBv
c3NpYmxlIHRvIG9wdGltaXplIHRoaXMgb3BlcmF0aW9uIG9uIHNvbWUgcGxhdGZvcm1zLgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQo
VCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2Us
IGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSk7CisgICAgc3Rh
dGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3
U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKIAogICAgIC8v
IEhpbnQgdG8gdGhlIE9TIHRoYXQgYW4gYWRkcmVzcyByYW5nZSBpcyBub3QgZXhwZWN0ZWQgdG8g
YmUgYWNjZXNzZWQgYW55dGltZSBzb29uLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbih2b2lkKiwgc2l6ZV90KTsKIH07CiAKLWlubGlu
ZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUs
IHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVj
dXRhYmxlKQoraW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCog
YmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBl
eGVjdXRhYmxlKTsKKyAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVT
aXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBj
b21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOwogICAgIHJldHVy
biBiYXNlOwogfQpAQCAtODYsOSArODYsOSBAQCBpbmxpbmUgdm9pZCBPU0FsbG9jYXRvcjo6ZGVj
b21taXRBbmRSZWxlYXNlKHZvaWQqIHJlbGVhc2VCYXNlLCBzaXplX3QgcmVsZWFzZVNpegogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKK2lubGluZSBUKiBPU0Fs
bG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBzaXplX3Qgb2xkU2l6ZSwg
c2l6ZV90IG5ld1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFi
bGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCogbmV3QmFzZSA9IHJlc2VydmVB
bmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAgICB2b2lk
KiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBtZW1jcHkobmV3QmFzZSwgb2xkQmFzZSwg
c3RkOjptaW4ob2xkU2l6ZSwgbmV3U2l6ZSkpOwogICAgIGRlY29tbWl0QW5kUmVsZWFzZShvbGRC
YXNlLCBvbGRTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG5ld0Jhc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QYWdlUmVzZXJ2YXRpb24uaAppbmRleCBhMmFlZTg4NGU5ODY0Y2Q5MzIxYTZiNDk0ZTllNjk4
ODI0NDMxMDMwLi40OTRiZjA1ZTAwMTcxNTM4NTFlYjEwYTU1MzNjMjJmYzY1Y2I3NzJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaApAQCAtNTUsMTIgKzU1LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKIHB1YmxpYzoK
LSAgICBQYWdlUmVzZXJ2YXRpb24oKQotICAgICAgICA6IG1fY29tbWl0dGVkKDApCi0gICAgICAg
ICwgbV93cml0YWJsZShmYWxzZSkKLSAgICAgICAgLCBtX2V4ZWN1dGFibGUoZmFsc2UpCi0gICAg
ewotICAgIH0KKyAgICBQYWdlUmVzZXJ2YXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBQ
YWdlQmxvY2s6OmJhc2U7CiAgICAgdXNpbmcgUGFnZUJsb2NrOjpzaXplOwpAQCAtOTMsMjIgKzg4
LDIyIEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICAg
ICAgcmV0dXJuIG1fY29tbWl0dGVkOwogICAgIH0KIAotICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRp
b24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXplX3Qgc2l6
ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENh
Z2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChz
aXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2Vy
dmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpLCBzaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgZmFsc2UpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpLCBzaXplLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxs
b2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJl
c2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6
OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9
IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFs
c2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAg
IHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSks
IHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VS
ZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6
ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgdHJ1
ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgdHJ1ZSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlQW5kQ29tbWl0V2l0aEd1
YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2Nh
dG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRo
R3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxv
Y2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBB
U1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRp
b24oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAKICAgICB2b2lkIGRlYWxsb2Nh
dGUoKQpAQCAtMTI3LDcgKzEyMiw3IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUg
UGFnZUJsb2NrIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUGFnZVJlc2VydmF0aW9uKHZvaWQq
IGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wg
aGFzR3VhcmRQYWdlcykKKyAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNp
emUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCBoYXNHdWFyZFBh
Z2VzKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBoYXNHdWFyZFBhZ2VzKQogICAg
ICAgICAsIG1fY29tbWl0dGVkKDApCiAgICAgICAgICwgbV93cml0YWJsZSh3cml0YWJsZSkKQEAg
LTEzNSw5ICsxMzAsOSBAQCBjbGFzcyBQYWdlUmVzZXJ2YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9j
ayB7CiAgICAgewogICAgIH0KIAotICAgIHNpemVfdCBtX2NvbW1pdHRlZDsKLSAgICBib29sIG1f
d3JpdGFibGU7Ci0gICAgYm9vbCBtX2V4ZWN1dGFibGU7CisgICAgc2l6ZV90IG1fY29tbWl0dGVk
IHsgMCB9OworICAgIGJvb2wgbV93cml0YWJsZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2V4ZWN1
dGFibGUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZTIy
Mjk4NzViNDc3YjFjNmJhYmJjNWZlZGQ5N2NhNTcyOTFkM2MyMy4uZWJlZDY4NjkyMmI2ZjBmMGJi
MjA4N2NmNTQ2YTE4ODA0MjhjZGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC04ODQs
MTAgKzg4NCwxMCBAQAogI2Vycm9yICJFTkFCTEUoV0hMU0xfQ09NUElMRVIpIHJlcXVpcmVzIEVO
QUJMRShXRUJHUFUpIgogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpICYmIENQVShBRERSRVNTNjQp
Ci0jZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJ
VCkgJiYgKChVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBDUFUoQVJNNjRFKSkpCisjZGVmaW5l
IEVOQUJMRV9KSVRfQ0FHRSAxCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJ
VCkgJiYgQVNTRVJUX0VOQUJMRUQKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBRERSRVNTNjQpICYm
IEVOQUJMRShKSVQpICYmIChFTkFCTEUoSklUX0NBR0UpIHx8IEFTU0VSVF9FTkFCTEVEKQogI2Rl
ZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
VXNlLmgKaW5kZXggMjJmNDYyYjJhNjRkYWJmOGMwODQ5YTkyMGRlYWJkOWExYzFlNWJlMi4uZmNl
OWVkYTEzM2M5YmIzMTY3MGUzMmU5ZGYzYTA3YTRhMmRjMzhjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5o
CkBAIC0zMDgsMyArMzA4LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAwMCkKICNkZWZpbmUg
VVNFX0NURk9OVEdFVEFEVkFOQ0VTX1dPUktBUk9VTkQgMQogI2VuZGlmCisKKyNpZiBDUFUoQVJN
NjQpICYmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaCBiL1NvdXJjZS9XVEYvd3RmL1B0
clRhZy5oCmluZGV4IDhmYjNmZjY5ZThhNjUxZmFlMGJkNWVjYzk0Y2RkNDY0MDRkNTY0ZTUuLmI1
MzRjYjAzMjU2MWI3N2UzYTcyZTY1YmVlNTAyOTUyMDRmZDc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oCkBAIC0zNDQs
NiArMzQ0LDcgQEAgYm9vbCBpc1RhZ2dlZFdpdGgoUHRyVHlwZSB2YWx1ZSkKIHRlbXBsYXRlPFB0
clRhZyB0YWcsIHR5cGVuYW1lIFB0clR5cGU+CiB2b2lkIGFzc2VydElzVGFnZ2VkV2l0aChQdHJU
eXBlIHZhbHVlKQogeworICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAgV1RGX1BUUlRBR19B
U1NFUlQoUHRyVGFnQWN0aW9uOjpEZWJ1Z0Fzc2VydCwgdmFsdWUsIHRhZywgaXNUYWdnZWRXaXRo
PHRhZz4odmFsdWUpKTsKIH0KIApAQCAtNDQyLDIwICs0NDMsNiBAQCBpbmxpbmUgVCogcmV0YWdB
cnJheVB0cihUKiBwdHIsIHNpemVfdCBvbGRMZW5ndGgsIHNpemVfdCBuZXdMZW5ndGgpCiAgICAg
cmV0dXJuIHB0cmF1dGhfYXV0aF9hbmRfcmVzaWduKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19k
ZXBlbmRlbnRfZGF0YSwgb2xkTGVuZ3RoLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9k
YXRhLCBuZXdMZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotaW5saW5l
IFB0clR5cGUgdGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRy
LCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCi17Ci0gICAgQVNTRVJUKHB0cik7Ci0gICAgcmV0
dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNz
X2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KLWlubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFj
a1BvaW50ZXIpCi17Ci0gICAgQVNTRVJUKHB0cik7Ci0gICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJh
dXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNl
X2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKLX0KLQogdGVtcGxhdGUgPFB0clRhZyB0YWcs
IHR5cGVuYW1lIEludFR5cGU+CiBpbmxpbmUgSW50VHlwZSB0YWdJbnQoSW50VHlwZSBwdHJJbnQp
CiB7CkBAIC01MDYsMTIgKzQ5Myw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwg
c2l6ZV90LCBzaXplX3QpCiAgICAgcmV0dXJuIHB0cjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
UHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJU
eXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5cGUgdGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJG
b3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKikgeyByZXR1cm4gcHRyOyB9Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6
OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KLWlubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0
cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKikgeyBy
ZXR1cm4gcHRyOyB9Ci0KIHRlbXBsYXRlIDxQdHJUYWcsIHR5cGVuYW1lIEludFR5cGU+CiBpbmxp
bmUgSW50VHlwZSB0YWdJbnQoSW50VHlwZSBwdHJJbnQpCiB7CkBAIC01NDQsOSArNTI1LDcgQEAg
dXNpbmcgV1RGOjpyZXRhZ0FycmF5UHRyOwogdXNpbmcgV1RGOjpyZW1vdmVBcnJheVB0clRhZzsK
IAogdXNpbmcgV1RGOjp0YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp0YWdDb2RlUHRyV2l0aFN0YWNr
UG9pbnRlckZvckpJVENhbGw7CiB1c2luZyBXVEY6OnVudGFnQ29kZVB0cjsKLXVzaW5nIFdURjo6
dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGw7CiB1c2luZyBXVEY6OnJldGFn
Q29kZVB0cjsKIHVzaW5nIFdURjo6cmVtb3ZlQ29kZVB0clRhZzsKIHVzaW5nIFdURjo6dGFnQ0Z1
bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJ
WC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcAppbmRleCA0
NDU0MDU5YzUxNWQyYTQxMmI0MzJkMDcxNDZjZjZmMDExZDQ3NjBiLi42Y2VmZDJlZTJkMzEwNWMy
ZDQwNDg1ZjY5NjVmZWJhODg0NWI0MzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9PU0FsbG9jYXRvclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9j
YXRvclBPU0lYLmNwcApAQCAtMzEsMTQgKzMxLDI3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbHNlIC8v
IEVOQUJMRShKSVRfQ0FHRSkKKyNpZiBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxF
X0ZPUl9KSVQgTUFQX0pJVAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklU
X0NBR0UgTUFQX0pJVAorI2Vsc2UgLy8gT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJM
RV9GT1JfSklUIDAKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdF
IDAKKyNlbmRpZiAvLyBPUyhEQVJXSU4pCisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCiBu
YW1lc3BhY2UgV1RGIHsKIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUs
IGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNv
bW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4
ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQog
ewogI2lmIE9TKExJTlVYKQogICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHdyaXRhYmxlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZSk7CisgICAgVU5VU0VE
X1BBUkFNKGppdENhZ2VFbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oaW5jbHVkZXNHdWFyZFBh
Z2VzKTsKIAogICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBST1RfTk9ORSwgTUFQ
X05PUkVTRVJWRSB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKQEAgLTQ2LDcgKzU5
LDcgQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMs
IFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLAogICAgICAgICBDUkFTSCgpOwogICAgIG1hZHZp
c2UocmVzdWx0LCBieXRlcywgTUFEVl9ET05UTkVFRCk7CiAjZWxzZQotICAgIHZvaWQqIHJlc3Vs
dCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwg
aW5jbHVkZXNHdWFyZFBhZ2VzKTsKKyAgICB2b2lkKiByZXN1bHQgPSByZXNlcnZlQW5kQ29tbWl0
KGJ5dGVzLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBpbmNs
dWRlc0d1YXJkUGFnZXMpOwogI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQogICAgIGlmIChyZXN1
bHQpIHsKICAgICAgICAgLy8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUgdGhlbiBjb21taXQiIG1v
ZGVsLCB3ZSBoYXZlIHRvIGluaXRpYWxseSBkZWNvbW1pdC4KQEAgLTU5LDcgKzcyLDcgQEAgdm9p
ZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVz
YWdlLCBib29sIHdyaXRhYmxlLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQqIE9TQWxs
b2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wg
d3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lk
KiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdl
LCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJv
b2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQogewogICAgIC8vIEFsbCBQT1NJWCByZXNlcnZhdGlvbnMg
c3RhcnQgb3V0IGxvZ2ljYWxseSBjb21taXR0ZWQuCiAgICAgaW50IHByb3RlY3Rpb24gPSBQUk9U
X1JFQUQ7CkBAIC03MCw4ICs4MywxNCBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBibwogCiAgICAg
aW50IGZsYWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfQU5PTjsKICNpZiBPUyhEQVJXSU4pCi0gICAg
aWYgKGV4ZWN1dGFibGUpCi0gICAgICAgIGZsYWdzIHw9IE1BUF9KSVQ7CisgICAgaWYgKGV4ZWN1
dGFibGUpIHsKKyAgICAgICAgaWYgKGppdENhZ2VFbmFibGVkKQorICAgICAgICAgICAgZmxhZ3Mg
fD0gTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUOworICAgIH0KKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGppdENhZ2VFbmFibGVkKTsKICNlbmRpZgogCiAjaWYgT1MoREFS
V0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKaW5kZXggOWQ2YzBhYTc0MTEz
NmNjOGE4NDZkMDQxMmE5MjFiZGEyYWMzOGI0Ny4uNmQ1MmM2NjJkZjA2Zjk0ODFhOTMzNWE3ZWQy
YjQ1MTQzNjY0NjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9y
V2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCkBAIC0z
OCw3ICszOCw3IEBAIHN0YXRpYyBpbmxpbmUgRFdPUkQgcHJvdGVjdGlvbihib29sIHdyaXRhYmxl
LCBib29sIGV4ZWN1dGFibGUpCiAgICAgICAgICh3cml0YWJsZSA/IFBBR0VfUkVBRFdSSVRFIDog
UEFHRV9SRUFET05MWSk7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0
ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMs
IFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wsIGJvb2wpCiB7CiAg
ICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKG51bGxwdHIsIGJ5dGVzLCBNRU1fUkVTRVJW
RSwgcHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlmICghcmVzdWx0KQpA
QCAtNDYsNyArNDYsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRl
cywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCkKK3ZvaWQqIE9T
QWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQg
PSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFIHwgTUVNX0NPTU1JVCwg
cHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlmICghcmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412483</attachid>
            <date>2020-10-27 17:25:42 -0700</date>
            <delta_ts>2020-10-27 19:50:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201027172541.patch</filename>
            <type>text/plain</type>
            <size>172492</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Mjk4YjVkYWI3NzI1NzE0MjkxNWM4NDU1ZDdiYmIzYTBjYThhZTg2Li4wYWFjNzY1YTVjYWU2MTAx
ZDQ4ODM1NzI1YTdmNTcyZTJlNmYxMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMjAtMTAtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KToKKyAgICAgICAg
KiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpT
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRy
eU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRyeUdh
dGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dW50
YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5l
VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
bGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29u
ZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAgICAgICAoSlNDOjp0
YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2Fs
bGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6
dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToK
KyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6
Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21T
bG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorCiAyMDIwLTEwLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGNvbW1hbmQgbGluZSBBUEkgc2hvdWxkIGJlIGV4
cG9zZWQgdG8gYnJlYWtwb2ludCBjb25kaXRpb25zL2FjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGEwNGYwNTIwYTcx
ZGRjNDc3NzE5YTI3ZjE4YzE3NjU3ZGJlM2ZiMy4uNjI2MDU2MmY5MTg4OTQ2NDZiYjE2NDE0N2M2
OGQ4M2I4NTE5MzA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0xMC0yNyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL09TQWxsb2NhdG9yLmg6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5k
Q29tbWl0KToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQp
OgorICAgICAgICAqIHd0Zi9QYWdlUmVzZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJl
c2VydmF0aW9uOjpyZXNlcnZlKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2Vy
dmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlv
bjo6UGFnZVJlc2VydmF0aW9uKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAg
ICAgIChXVEY6OmFzc2VydElzVGFnZ2VkV2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJX
aXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFn
Q29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2
ZUFuZENvbW1pdCk6CisgICAgICAgICogd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAg
ICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RG
OjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisKIDIwMjAtMTAtMTUgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2lnbiBNYWNyb0Fzc2VtYmxl
cjo6anVtcHNUb0xpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlM2Q4
YWIwYTQ3MDk2ZDBkMTEzZTc4M2FkZDE1NDI4ZjU3ODRjMjVhLi5lNzE2YzYxOTllMDk5ZTE2NjEz
NDdiNDI5ZDViNzJiYWJmYzZlMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC04NjcsNiArODY3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKICAgICBydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaAogICAgIHJ1bnRpbWUvRnV6emVyQWdlbnQuaAorICAgIHJ1bnRpbWUv
R2F0ZS5oCiAgICAgcnVudGltZS9HZW5lcmljT2Zmc2V0LmgKICAgICBydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDNlN2UxY2IyYTlhZGNkOGQ4ZmNm
ZGVkNjUwNGY0YTY4NjJiYWE4OS4uY2JiOTgxNjFjYmMzODE5MjBiZDhmNTZlODBhNmRjOTllYjUw
MTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NTMsNiArMTg1Myw3IEBA
CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZD
Qzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkVEQ0U0
MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlBMCAvKiBH
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzcx
MTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9y
bWF0SW5saW5lcy5oICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBBMjM5MEQ5M0Iw
MDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oICov
OyB9OwpAQCAtNTA2MSw2ICs1MDYyLDcgQEAKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8q
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MjgwLDYgKzcyODIsNyBAQAogCQkJCUUzM0E5NDkyMjI1NTMyMjkwMEQ0
MkIwNiAvKiBGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFQ0ZBRDM1MjM3MkRBQTcwMDI5MTU5OSAv
KiBGdXp6ZXJQcmVkaWN0aW9ucy5jcHAgKi8sCiAJCQkJQ0VDRkFEMzQyMzcyREFBNzAwMjkxNTk5
IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8sCisJCQkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEw
IC8qIEdhdGUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtOTcw
MSw2ICs5NzA0LDcgQEAKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzQTk0OTcyMjU1MzIzMzAwRDQyQjA2IC8q
IEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNGQUQzNjIzNzJEQUQwMDAyOTE1
OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzExOTkyMjUz
RkE4N0YwMEJBNjlBMCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYzRDE4Q0E1
QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0pJVE9wZXJhdGlvbkxpc3QuY3BwCmluZGV4IGIzY2UxNzc5MmQwMTY3ZjRlYzdiZWNjYTRmZGU4
NWM0NWNiYjEwYjAuLmU0ZjI2YWI0NjZlMmZiNTA1NjcwMjg5MmVlM2FiYWM3NjViNzdkMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25M
aXN0LmNwcApAQCAtMjYsNiArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25MaXN0LmgiCiAKKyNpbmNsdWRlICJHYXRlLmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisj
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgSlNDIHsKIAogTGF6eU5ldmVyRGVzdHJveWVkPEpJVE9wZXJhdGlvbkxpc3Q+IGpp
dE9wZXJhdGlvbkxpc3Q7CkBAIC00NSwxOCArNTMsMjIgQEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0
Ojppbml0aWFsaXplKCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQogc3Rh
dGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhhc2hNYXA8
dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWlu
dHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3Qg
dWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBj
dXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgewotICAg
ICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxIb3N0RnVu
Y3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgIH0KKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBKU0NfSklUX0NBR0VEX1BPSU5URVJfUkVHSVNUUkFU
SU9OKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9yIChjb25zdCB1aW50cHRyX3Qq
IGN1cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytj
dXJyZW50KSB7Ci0gICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdp
c2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKLSAgICAgICAgaWYgKGNvZGVQdHIpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQ
dHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29kZVB0cikpOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKyNlbmRpZgorICAgIGlmIGNvbnN0ZXhwciAoQVNTRVJUX0VOQUJM
RUQpIHsKKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdpbkhvc3Q7
IGN1cnJlbnQgIT0gZW5kSG9zdDsgKytjdXJyZW50KSB7CisgICAgICAgICAgICB2b2lkKiBjb2Rl
UHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Cisg
ICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAgICBtYXAuYWRkKGNvZGVQdHIs
IFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdp
bk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytjdXJyZW50KSB7CisgICAg
ICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCpjdXJyZW50KSk7CisgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8T3BlcmF0aW9uUHRy
VGFnPihjb2RlUHRyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03Myw2ICs4NSw1NiBAQCB2
b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlKCkK
ICNlbmRpZgogfQogCit2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkph
dmFTY3JpcHRDb3JlRm9yTExJbnQoKQoreworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElE
QVRJT04pCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10geworCisjZGVmaW5lIExMSU5UX09QKG5hbWUpIFwKKyAgICBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4obmFtZSkpLCBcCisgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldFdp
ZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lKSksCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUs
IC4uLikgXAorICAgIExMSU5UX09QKG5hbWUjI19yZXR1cm5fbG9jYXRpb24pCisKKyAgICAgICAg
Y29uc3QgdWludHB0cl90IG9wZXJhdGlvbnNbXSA9IHsKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKSwK
KyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlKSksCisgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpKSwKKworICAg
ICAgICAgICAgTExJTlRfT1Aob3BfY2F0Y2gpCisgICAgICAgICAgICBMTElOVF9PUChsbGludF9n
ZW5lcmljX3JldHVybl9wb2ludCkKKworICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2dldF9ieV9pZCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfdmFsKQorICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV9pZCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorCisgICAg
ICAgICAgICBKU0NfSlNfR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NBVElPTikKKyAgICAg
ICAgICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAg
ICAgIH07CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGFkZFBv
aW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVkT3BlcmF0aW9ucywgbnVsbHB0ciwg
bnVsbHB0ciwgb3BlcmF0aW9ucywgb3BlcmF0aW9ucyArIFdURl9BUlJBWV9MRU5HVEgob3BlcmF0
aW9ucykpOworI3VuZGVmIExMSU5UX1JFVFVSTl9MT0NBVElPTgorICAgIH0pOworI2VuZGlmCit9
CisKKwogdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihj
b25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRp
b25zKQogewogICAgIFVOVVNFRF9QQVJBTShiZWdpbkhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAppbmRleCAwOTg0OTNmNTBi
MmFkMzNjZDFkOTc1NzRhMjgzZTlmZjhiOTY4MzY5Li41YTQwZmY3YzhjZmFkNmI0MjAzNzczYmQy
NGFkNTU3YjRjZTQyNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaApAQCAtMzksMTIgKzM5LDE1IEBAIGNsYXNzIEpJVE9wZXJh
dGlvbkxpc3QgewogCiAgICAgdm9pZCogY29udGFpbnModm9pZCogcG9pbnRlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKLSAgICAgICAgICAgIHJl
dHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikp
OworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisgICAgICAgIHJldHVybiBt
X3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikpOworI2Vs
c2UKICAgICAgICAgcmV0dXJuIHBvaW50ZXI7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpOworICAgIHN0YXRpYyB2b2lk
IHBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKGNvbnN0
IHVpbnRwdHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhvc3QsIGNvbnN0IHVp
bnRwdHJfdCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVuZE9wZXJhdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDQ1YjRiM2I0Njk2ODU1MmQ3ZGFjOTc4OGFmZjZjZjBiNDNkYjI2
YzYuLjRjOWE5ZWJhNGI2NGY0MWMxMGU5NDRkZjI0MzhhNmZkZWExN2JhNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC0zMzkyLDYgKzMzOTIsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxl
ci5icih0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRh
cmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJyKGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJl
c3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAzOWVhMTUx
MTQ3NjFhMDBlMDAwNTAzMTAwYmU3NmJkZTQ0YTJmOGM0Li5kMTg3ZDY5MzBlNmZkOWY2NjgzNzk4
ZGEzMzljNWExMzZkMDM0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0zMiw2ICszMiw5IEBACiAjaW5j
bHVkZSAiQVJNNjRFQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJBUk02NC5oIgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRl
IDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xMTAsMjAgKzExMywyOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0
RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICBzdGF0aWMgY29uc3RleHByIFJl
Z2lzdGVySUQgSW52YWxpZEdQUiAgPSBzdGF0aWNfY2FzdDxSZWdpc3RlcklEPigtMSk7CiAKICAg
ICBlbnVtIGNsYXNzIENhbGxTaWduYXR1cmVUeXBlIHsKLSAgICAgICAgQ0Z1bmN0aW9uQ2FsbCwK
LSAgICAgICAgT3RoZXJDYWxsCisgICAgICAgIEpJVENhbGwsCisgICAgICAgIE5hdGl2ZUNhbGws
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSnVtcFNpZ25hdHVyZVR5cGUgeworICAgICAgICBK
SVRKdW1wLAorICAgICAgICBOYXRpdmVKdW1wLAogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxDYWxs
U2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsVHJ1c3RlZFB0
cihSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURf
UEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIHBvaW50ZXJMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVs
KCk7CiAgICAgICAgIG1vdmVXaXRoRml4ZWRXaWR0aChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBpbnZh
bGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0
dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFheihk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9DQUxMKHR5cGUsIGRhdGFUZW1wUmVnaXN0ZXIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYihkYXRhVGVtcFJlZ2lzdGVy
LCB0YWdHUFIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxl
ci5sYWJlbCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXJMYWJlbCwgQVJNNjRBc3Nl
bWJsZXI6OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNhbGxMYWJlbCwgcG9pbnRlckxhYmVs
KSA9PSBSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpOwpAQCAtMTMyLDUxICsxNDMsNTMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02
NCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcgdGFnKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpjYWxsKHRhZyk7Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFn
KQotICAgICAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpD
RnVuY3Rpb25DYWxsPigpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAm
JiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0
clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIEFS
TTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2ln
bmF0dXJlVHlwZTo6T3RoZXJDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIHJl
dHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4oQVJNNjRSZWdp
c3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVU
eXBlOjpOYXRpdmVDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhZ0dQUik7
CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZl
Q2FsbD4odGFnR1BSKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxDYWxsU2lnbmF0dXJlVHlwZSB0
eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikKICAgICB7CisgICAgICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKICAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwog
ICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9
PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJscmFheih0YXJnZXRHUFIpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0Nf
SklUX0NBR0VEX0NBTEwodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIodGFyZ2V0R1BSLCB0YWdHUFIp
OwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpOb25lKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQ
UiwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAg
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJnZXRHUFIsIHRhZyk7
Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4odGFyZ2V0R1BS
KTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRy
VGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBl
OjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lzdGVyczo6
bHIpOwotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhl
ckNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxl
ZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpKSVRDYWxsPih0YXJnZXRHUFIsIEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVy
ZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVn
aXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxT
aWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BS
LCB0YWdHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
Ci0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbChhZGRyZXNzLCB0
YWcpOwotCisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBO
b1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVn
aXN0ZXIsIHRhZyk7CiAgICAgfQpAQCAtMTk3LDkwICsyMTAsMTI5IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAgICAgQUxXQVlT
X0lOTElORSBKdW1wIGp1bXAoKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpqdW1wKCk7
IH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUHRyVGFnIHRhZykKKyAg
ICB0ZW1wbGF0ZTxKdW1wU2lnbmF0dXJlVHlwZSB0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBmYXJKdW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BS
ID0gSW52YWxpZEdQUikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICAg
ICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9GQVJfSlVNUCh0eXBlLCB0YXJnZXRHUFIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnR1BSKTsK
KyAgICB9CisKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRhZyB0
YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAodGFyZ2V0LCB0YWcpOworICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAKICAg
ICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBSZWdpc3RlcklE
IGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAg
ICAgZmFySnVtcCh0YXJnZXQsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBl
KHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lz
dGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAg
IHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0YWcpCisgICAgdm9p
ZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXQpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdl
dCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZl
cnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsK
KyAgICAgICAgbW92ZSh0YXJnZXQsIHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBT
aWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0
aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFy
SnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lz
dGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIGlmICh0
YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6
ZmFySnVtcChhZGRyZXNzLCB0YWcpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQ
Uik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4o
dGFyZ2V0R1BSLCB0YWdHUFIpOworICAgIH0KIAotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyk7CisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCB0YWdHUFIpCisgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBk
aXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQo
YWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0
eUdQUik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRh
cmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwotICAgICAgICBt
X2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVy
PEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQog
Ci0gICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZv
aWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAg
ICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIpOworICAgICAgICBsb2FkNjQo
QWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8
SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAK
LSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVt
cChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgeworICAgICAgICBBU1NFUlQodGFn
ICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQo
Y2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIFJlZ2lz
dGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFy
Z2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAg
ICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAg
ICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRH
UFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdp
c3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlH
UFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCB0YWcpCisgICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFn
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0
YXJnZXRHUFIpOworICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1l
bW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVz
cywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAg
ICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIs
IGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3Rl
cjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIp
OwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUHRy
VGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOwotCisg
ICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7
CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbG9h
ZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIGRpdmVyc2l0eUdQUik7Ci0gICAgfQotCi0gICAgdm9pZCBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OwotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbG9hZDY0KEFkZHJl
c3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIHRhZyk7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVl
VHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBl
OjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBy
ZXQoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAg
IEpTQ19KSVRfQ0FHRURfUkVUKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5yZXRhYigpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMGM3NTk3
YmFmNjQyNjY0OTk2MzRhNTk4MDE3YmZiNjRjMzE2YTU2NC4uMmM5YjhmZjgwOTUxNmViMDc3NDRi
ZGZmODI2NzdhMGM2YzRmZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTE3MTksNiArMTcxOSwxMiBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
LmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1v
cnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBm
YXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGU2M2Fi
NDc1NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMuLmFkYWQ1NGNiMDI2MTdkMTE5NzFi
YjI0NWUwYTAzZjRkOGRhZGZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjAwNCw2ICsyMDA0LDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICB2b2lk
IGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1v
dmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgfQorCiAg
ICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKICAgICAgICAg
bV9maXhlZFdpZHRoID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAyOGZhZTJlNzJmMjU2
NTdlNjEzMzA1ZjIwMDNkZmNiZWE1ZWVjYTlhLi43NmRkYjU3Njk0ZGEyNGY0YWU4MDViMDQ5M2I0
MmE4ZTY0MmYzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yNzUwLDYgKzI3NTAsMTIgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX3IodGFyZ2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAg
ICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICAvLyBBZGRy
ZXNzIGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0
bwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAyZmVk
MTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxLi4wNTdiMzA3OGMyYjdlODY5Mzkz
MmI5MDVmMTk0ZDNmNzdiNDY0MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0MDMsNiArMTQwMyw3IEBACiBvcCA6bGxpbnRfaW50
ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9leGl0
X3RyYW1wb2xpbmUKK29wIDpub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZQogb3AgOmZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpsbGludF9nZXRfaG9zdF9jYWxsX3JldHVy
bl92YWx1ZQogb3AgOmxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24KQEAgLTE0MTksNiAr
MTQyMCw0MCBAQAogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscwogCitvcCA6b3BfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbgorb3Ag
Om9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX29wZW5f
c2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9uZXh0X3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6b3BfdGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2Fs
bF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCisKK29w
IDpqc190cmFtcG9saW5lX29wX2NhbGwKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbAor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVy
YXRvcl9uZXh0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJh
cmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93CitvcCA6
anNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRl
cmF0b3JfbmV4dF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3cK
K29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3Vu
dGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a190YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2tfdW50YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbAorb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rf
bm9fdGxzCisKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKIGJlZ2luX3NlY3Rpb24gOldh
c20sCkBAIC0xNDMzLDYgKzE0NjgsMTEgQEAKIAogb3AgOnRocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmUKIAorb3AgOmNhbGxfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9ub190bHNfcmV0
dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9yZXR1cm5fbG9jYXRpb24KK29wIDpjYWxs
X2luZGlyZWN0X25vX3Rsc19yZXR1cm5fbG9jYXRpb24KKwogIyBGSVhNRTogV2FzbSBhbmQgSlMg
TExJbnQgc2hvdWxkIHNoYXJlIGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxNTAzYmYwMzg0N2E2NDg1MzM5MTEyNzc2OGQ3
MDI1MGU4OWE1MzguLmIwNjE1MGZjY2Y0YzdkZGE1ZTUxY2M1ZmFkNjNjZDMxMWQxODIzNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTMy
MCw2ICszMjAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9w
Y29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgbGxpbnRfaGFu
ZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRf
dHJhbXBvbGluZToKKyAgICBjYXNlIG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNh
c2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoKICAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1
cm5fbG9jYXRpb246CkBAIC0zMzEsOCArMzMyLDQwIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3JldHVybl9s
b2NhdGlvbjoKKyAgICBjYXNlIG9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRp
b246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBj
YXNlIG9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWU6CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RsczoK
KyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVf
b3BfdGFpbF9jYWxsOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Q6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHQ6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfc2xv
dzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2NvbnN0cnVjdF9zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9v
cF9jYWxsX3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfZXZhbF9zbG93Ogor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2l0ZXJhdG9yX29wZW5fc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZzoKKyAg
ICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja191bnRhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6CisgICAgY2Fz
ZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorICAgIGNhc2Ugd2FzbV90cmFt
cG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RD
b21waWxlOwogICAgIH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCBkZDY2NmZhYTgzZTgzNTA5ZTY1YjA3NTU3NjIyZjA4YTk0OTQyMWJkLi5hYzRiOGM1NzNiODI2
YjZhMzBjNjNmZWRiNDI1OGI1YWZiZWI1Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xMzgsMjEgKzEz
OCwyMSBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgZG9uZUFkanVzdGluZy5saW5rKCZqaXQpOwog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMo
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxs
Qnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZCwg
Ym9vbCYgY2FsbGVySXNMTEludCkKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhp
dFB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNh
bGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIHRydWVDYWxsZXJDYWxsS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCkKIHsKICAgICBjYWxs
ZXJJc0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGJhc2VsaW5lQ29k
ZUJsb2NrRm9yQ2FsbGVyLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazsK
IAogICAgIGlmIChjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAgICAgICAgaWYg
KCFjYWxsZXJJc0xMSW50KQogICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIt
Pm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBMTEludDo6Z2V0Q29k
ZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxs
X3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJv
bUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgIH0KIAotICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0OwogCiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+
aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7Ci0jZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQorI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgTExJbnQ6
OnJldHVybkxvY2F0aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbEluc3RydWN0
aW9uLndpZHRoKCkpLmNvZGUoKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5k
KSB7CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CkBAIC0yMDksNyArMjA5
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBD
KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBiYXNlbGluZUNv
ZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChjYWxsQnl0
ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwog
Ci0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpOworICAgICAgICAgICAganVtcFRhcmdldCA9
IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0YWdnZWQ8T1NSRXhpdFB0clRh
Zz4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyNiwxMyArMjI2LDEz
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgLy8gNi4gKEIpIGdl
dHMgT1NSIGV4aXQuIChCKSBhdHRlbXB0cyB0byBzZWFyY2ggZm9yIFN0cnVjdHVyZVN0dWJJbmZv
IGluIChBKSBmb3IgUHV0QnlJZCAob3JpZ2luYWxseSwgcHV0X2J5X3ZhbCkuIEJ1dCBpdCBkb2Vz
IG5vdCBleGlzdCBzaW5jZSAoQSkncyBKSVREYXRhIGlzIGNsZWFyZWQgb25jZS4KICAgICAgICAg
ICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVy
LT5maW5kQnlWYWxJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChieVZhbEluZm8pOwotICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBieVZhbEluZm8tPmRvbmVUYXJnZXQucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsK
KyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFn
Z2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJ
bmRleCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8pOwotICAgICAgICAg
ICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24ucmV0YWdnZWQ8SlNFbnRyeVB0
clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9u
LnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgYXV0byBjYWxs
Qnl0ZWNvZGVJbmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVy
UmV0dXJuUEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0
cnVlQ2FsbGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOworICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGp1bXBUYXJnZXQgPSBjYWxsZXJSZXR1cm5QQyhi
YXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgY2FsbEJ5dGVjb2RlSW5kZXgsIHRydWVDYWxsZXJD
YWxsS2luZCwgY2FsbGVySXNMTEludCk7CiAKICAgICAgICAgICAgIGlmICh0cnVlQ2FsbGVyLT5p
bmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCkBAIC00MDIs
MTEgKzQwMiwxMSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICBpZiAoZXhpdFRvTExJbnQp
IHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOwogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9u
ID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0
cigpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGlu
YXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBkZXN0
aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAg
ICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVj
a3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBM
TEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CiAgICAgICAg
IGVsc2UgCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpTRW50
cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9
IExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogCiAgICAgICAg
IGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86
OnJlZ1QyKTsKQEAgLTQxNiwyMiArNDE2LDIyIEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhp
dC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRhdGFUYWJsZUdQUik7
CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tG
b3JFeGl0LT5pbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwYkdQ
Uik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwY0dQUik7Ci0gICAgICAgIGp1bXBU
YXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvZGVCbG9ja0ZvckV4aXQtPm1faGFzTGlu
a2VkT1NSRXhpdCA9IHRydWU7CiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBleGl0SW5kZXggPSBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBkZXN0aW5hdGlvbjsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoZXhpdElu
ZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGlu
ZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChjb2Rl
QmxvY2tGb3JFeGl0LT5ieXRlY29kZUluZGV4Rm9yRXhpdChleGl0SW5kZXgpID09IGV4aXRJbmRl
eCk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVN
YXAoKS5maW5kKGV4aXRJbmRleCk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9j
a0ZvckV4aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCkucmV0YWdnZWQ8T1NSRXhpdFB0
clRhZz4oKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbik7CiAKLSAg
ICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQogCiAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihjb2RlQmxvY2tGb3JF
eGl0KSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQXNz
ZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRleCAzOTExNGVh
Njc3MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkLi5kYmEwZmUzMjJiZjg4MWM5NWMyMmRi
ODUwNjE2MjQyMDRhNmFhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiwgQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwotTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50
KTsKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUq
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGZmOWE4YWZkMDU5NDVjMjliOTc4
YzFmZjNjZjk3YTIyMmJiNGI5MjEuLjliZTY0YmJkZjBmMjhmZDU3NGE0MjU4ODRjZDUzNDFkZjFh
NjY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtNDgsNiArNDgsMTggQEAKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNp
bmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUo
SklUX0NBR0UpCisjaWYgT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
IE1BUF9KSVQKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1B
UF9KSVQKKyNlbHNlIC8vIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VCAwCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCisjZW5k
aWYgLy8gT1MoREFSV0lOKQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKwogZXh0ZXJuICJD
IiB7CiAgICAgLyogUm91dGluZSBtYWNoX3ZtX3JlbWFwICovCiAjaWZkZWYgbWlnX2V4dGVybmFs
CkBAIC0xMzksOCArMTUxLDggQEAgdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIAogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUgPSAxOwog
ICAgICAgICBjb25zdGV4cHIgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
IHwgUFJPVF9FWEVDOwotICAgICAgICBjb25zdGV4cHIgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiB8IE1BUF9KSVQ7CiAgICAgICAgIGNvbnN0ZXhwciBpbnQgZmQgPSBPU0FsbG9j
YXRvcjo6SlNKSVRDb2RlUGFnZXM7CisgICAgICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwg
TUFQX0FOT04gfCAoT3B0aW9uczo6dXNlSklUQ2FnZSgpID8gTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VF9XSVRIX0pJVF9DQUdFIDogTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCk7CiAgICAgICAgIHZvaWQq
IGFsbG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHByb3RlY3Rpb24sIGZsYWdzLCBmZCwg
MCk7CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVy
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbiAhPSBleGVjdXRhYmxlTWVtb3J5
QWxsb2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhhdmUgYWxsb2NhdGVkIGV4ZWN1dGFi
bGUgbWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4iKTsKQEAgLTMyNCw5ICszMzYsOSBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlvbiBpbml0aWFsaXplSklUUGFnZVJl
c2VydmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIEpJVCBjb2Rl
IGxvZ2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2RlIGlzIG5vdCByZWNvcmRlZCBjb3Jy
ZWN0bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgdXNlIGNvbW1pdHRl
ZCByZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVtcCBsb2dnaW5nLgogICAgICAgICBp
ZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAgICAgICAgICAgIHJldHVybiBQYWdl
UmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNp
emUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxF
LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRD
b21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENv
ZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBmYWxzZSk7CiAjZW5kaWYK
LSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJl
c2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BP
T0xfV1JJVEFCTEUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uID0gdHJ5Q3Jl
YXRlUGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAppbmRleCA3NGRhZTIyNmY1NDViN2FhYWYzNDc4NzQ0MzM2NDI3MDAxNWJkMGE0
Li44ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDYgKzQ2NSwxMCBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBY
ODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IFg4NlJlZ2lz
dGVyczo6ZWF4OworI2lmICFPUyhXSU5ET1dTKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHdhc21TY3JhdGNoR1BSMSA9IFg4NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCiAKICAgICAvLyBG
SVhNRTogSSBiZWxpZXZlIHRoYXQgYWxsIHVzZXMgb2YgdGhpcyBhcmUgZGVhZCBpbiB0aGUgc2Vu
c2UgdGhhdCBpdCBqdXN0IGNhdXNlcyB0aGUgc2NyYXRjaAogICAgIC8vIHJlZ2lzdGVyIGFsbG9j
YXRvciB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcmVnaXN0ZXIgYW5kIHBvdGVudGlhbGx5IHNwaWxs
IHRoaW5ncy4gSXQgd291bGQgYmUgYmV0dGVyCkBAIC02MzQsNyArNjM4LDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gQVJNNjRSZWdpc3Rl
cnM6OngyMjsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBV
c2VkIGJ5IEZUTCBvbmx5Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJN
NjRSZWdpc3RlcnM6OngyNTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyBudW1iZXJUYWcK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBBUk02NFJlZ2lzdGVyczo6eDI4
OyAvLyBub3RDZWxsTWFzawpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2
ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpp
cDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJNNjRS
ZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BS
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJl
Y3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJl
Y3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
CmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0NmU5
MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkK
IHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9j
YWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2Vt
Ymx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkp
OworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29kZUlu
ZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3MWRk
OTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5MjJk
NWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFn
VHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52
YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNoVG9T
YXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwotICAg
IGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0b3Jl
KHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29u
KFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAgICAg
ICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0YWcs
IHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7
CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAvLyBX
ZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1
dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggYmZh
NGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2ZDhj
ZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNsdWRl
ICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNfQVNT
RVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAot
CiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwyMiBA
QCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAogI2Vu
ZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2
b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFp
bENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpT
RW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0aW9u
SGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxMSW50
VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lmIEVO
QUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJM
RShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFw
LCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxpbnQu
b3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYgKzgz
LDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKworICAg
IEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJ
bnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFnKSBc
CisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAgICAg
IGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmso
cmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJ
bnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1
cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNvZGVS
ZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpz
X3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3Qo
TExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9s
aW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50Ojpn
ZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmln
LmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIp
XSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0g
d2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dBVEUp
CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNNX0dB
VEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVS
ZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJl
dGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0
aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChj
cmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBP
cGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7
IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAg
ICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFt
ZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01fR0FU
RV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChj
cmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3Bl
cmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQdHJU
YWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2Rl
UHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50
cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
Z2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCld
ID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAg
eworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6
dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2
bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9O
YXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46
OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlv
blB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGlu
ZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAgICBn
X2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWls
Q2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxl
QWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNj
Q29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2VwdGlv
bkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0dXJu
RnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZv
aWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZyb21M
TEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYuZ2V0
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRodW5r
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9IGVu
dHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RI
VU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0NvZGVS
ZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVj
dCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJh
dGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRhZ0Nv
ZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0
aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBcCisg
ICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50
OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUj
I190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6Z2V0
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNfdW50
YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdldCgp
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1bnRh
Z0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxl
ICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19U
SFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0ZTI3
MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMxZmVh
MjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0yMDQs
NiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bjb2Rl
V2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENP
REVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bj
b2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNv
ZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1P
cGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRyKFdh
c21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFnQ29k
ZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsK
K30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7Cisg
ICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUx
NihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcs
IHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+Ojpj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0clRh
ZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdpZGUz
MkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAgICBh
ZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOworICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sK
KyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29k
ZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNl
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4o
b3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3Rl
bXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRy
PHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJ
RCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8
UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihv
cGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1w
bGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vsc2UK
IEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2ZDI0
OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uYzFhMjhmMGE0OWU1MWM4NTRhZDM2
MWJlNWRiMGU4MTgzZTk0NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB2
b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBq
c1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
anNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQpOwor
ZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGluZShQ
dHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOworfQor
I2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2st
PnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lkIHNl
dEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGlj
IERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShlbnRy
eXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSksIGVu
dHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQ
cm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFy
ZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERp
cmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2Rl
OjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJl
Y3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnBy
ZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAg
ICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSht
YWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMgdm9p
ZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0
aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5l
KGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIElu
dHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwor
I2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNF
bnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFy
ZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYo
KmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENv
ZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
IGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1w
b2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5z
aWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNl
CiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpq
aXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVBy
b2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVK
SVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNU
cmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVu
aywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJl
ZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzQgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRy
eXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAgIHJl
dHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJu
X3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAg
ICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bj
b2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29kZVNp
emU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIHNldEVudHJ5cG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFjODQ4
NDFkYmZkOC4uMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0N2I4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKyNpbmNsdWRl
ICJPcGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw1ICs0Miw3IEBAIHZv
aWQgc2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3Vu
dEZvcihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBv
aW50RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBiYmExMjBhN2M1NTg1OGYzNzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhLi5hMzQ3YzYyMzlhY2Rm
ZDlmZTMwZDU4NGYwMDAzOGM0YjUwYjk2MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUgSlNW
YWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAgTExJ
TlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFn
PihjYWxsVGFyZ2V0KSksIChjYWxsRnJhbWUpKQorICAgIExMSU5UX1JFVFVSTl9UV08oKHJldGFn
Q29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQp
KSwgKGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3Qs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBKU0ds
b2JhbE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhp
bnRFeGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIgPj0g
T3B0aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxG
cmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6
OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAogICAg
IApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nv
bnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJh
cmdzPihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpP
YmplY3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVy
blR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50
KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KGJ5dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxG
cmFtZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+c2V0
UmV0dXJuUEMocmV0dXJuUG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgY2FsbGVlRnJh
bWUtPnNldFJldHVyblBDKHJldHVyblBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFtZS0+
c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2Fs
bF9ldmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTElu
dDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJp
Y1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJu
IGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNv
bW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRy
eXBvaW50KE9wY29kZVNpemU6OldpZGUxNikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwo
Y2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2Fs
bEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6
ZTo6V2lkZTMyKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQp
CkBAIC0yMjY1LDggKzIyNjUsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRj
aFRvTmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAgIGlm
IChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotICAgICAgICBhdXRvIG5leHRCeXRlY29kZSA9
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCpwYy5uZXh0KCkucHRyKCkpOwotICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgbmV4dEJ5dGVjb2RlLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
bmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggNzg1MzYwZjQ4NzYwNzFhZmQ2NGFkMWNm
ZTFiYThiZWE4MzhhYjNkMi4uYTYxNjI1ZGE4OTRmNDk4ZTk0MGJlYzE0NTJjNWU5ZTZlOTVmMjQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBAIC00
MCw2ICs0MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorI2RlZmluZSBKU0NfQU5OT1RBVEVfTExJ
TlRfSklUX09QRVJBVElPTihuYW1lKSBcCisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04o
X0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCisKKyNkZWZpbmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT05fV0lUSF9ERUNMQVJFKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIHZvaWQgbmFt
ZSh2b2lkKTsgXAorICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNu
YW1lLCBuYW1lKQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT04oaml0Q2FnZVB0ckdhdGVBZnRlcik7CisjZW5kaWYKK0pTQ19BTk5PVEFURV9M
TElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHQpOworSlNDX0FOTk9UQVRFX0xM
SU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlKTsKK0pTQ19BTk5PVEFURV9MTElOVF9K
SVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRF
X0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKTsKK0pTQ19BTk5P
VEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9U
QVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOwor
CisjZW5kaWYKKwogbmFtZXNwYWNlIExMSW50IHsKIAogLy8gVGhlc2UgdGh1bmtzIGFyZSBuZWNl
c3NhcnkgYmVjYXVzZSBvZiBuZWFyQ2FsbCB1c2VkIG9uIEpJVGVkIGNvZGUuCkBAIC01Miw3ICs3
NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0
OwogCi0gICAgYXNzZXJ0SXNUYWdnZWRXaXRoPEpTRW50cnlQdHJUYWc+KHRhcmdldCk7CisgICAg
YXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdh
c206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CkBAIC02
MCwxNiArODIsNTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKICAgICBDQ2FsbEhlbHBlcnM6
OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKICNlbmRpZgogICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gp
OwotICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5mYXJK
dW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyB0aHVuayIs
IHRodW5rS2luZCk7CiB9CiAKIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oT3Bjb2RlSUQgb3Bjb2Rl
SUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9w
Y29kZUlEKSwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQp
LCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisKKyAgICBMTEludENvZGUgdGFyZ2V0ID0gTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3Bl
cmF0aW9uUHRyVGFnPih0YXJnZXQpOworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIEND
YWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50
aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyNlbHNlCisgICAgQ0NhbGxIZWxwZXJzOjpS
ZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6cmVnVDA7CisjZW5kaWYKKyAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gpOworICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAi
TExJbnQgJXMganVtcCB0byBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChMTEludENvZGUgdGFyZ2V0LCBjb25zdCBjaGFy
ICp0aHVua0tpbmQpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIGFzc2VydElzVGFn
Z2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlvblB0clRhZyk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHJldHVybiBwb2ludCB0aHVu
ayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChP
cGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PHRhZz4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmsoKQpAQCAtNzcsNyArMTM2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICB9KTsKICAgICByZXR1cm4g
Y29kZVJlZjsKIH0KQEAgLTg3LDcgKzE0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29u
c3RydWN0IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtOTcsNyArMTU2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0
clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3Ig
Y2FsbCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEwNyw3ICsxNjYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssICJmdW5jdGlv
biBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25z
dHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsK
IH0KQEAgLTExNyw3ICsxNzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZXZhbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxs
aW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVm
OwogfQpAQCAtMTI3LDcgKzE4Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBwcm9ncmFtRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNF
bnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CisgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRy
eVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMzcsNyArMTk2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CiB9CkBAIC0xNDksOSArMjA4LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewog
ICAgICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdh
c21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1
bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxz
LCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQpAQCAtMjE3LDcgKzI3Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUg
c2l6ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0gewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJv
cF9jYXRjaCIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0K
QEAgLTIyNSw3ICsyODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bf
Y2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRX
aWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRj
aDE2IikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAgfQpAQCAt
MjMzLDcgKzI5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcF9jYXRj
aCksICJvcF9jYXRjaDMyIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUz
MkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMzIi
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0yNDIs
NiArMzAxLDI4NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2lu
dFRodW5rKE9wY29kZVNpemUgc2l6ZSkKK3sKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNl
IE9wY29kZVNpemU6Ok5hcnJvdzogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBj
b2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJU
YWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDE2Iikp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIGNhc2Ug
T3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSwg
ImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50MzIiKSk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgfQorfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpCit7Cisg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVybl9l
YXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQi
KSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0
ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUp
Cit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1Qz
LCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVy
KSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVy
YXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNtR2F0
ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUpCit7Cisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86Ondhc21TY3JhdGNo
R1BSMCwgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9p
bnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7CisgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIHdhc20gY2Fs
bCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFnKQoreworICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCB0
YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpCit7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2Fs
bEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3AgT1NSIGVudHJ5IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOworICAg
ICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOwor
CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJl
ZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZXhj
ZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5m
YXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKKworICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAg
ICAgIGppdC5yZXQoKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJvbUxMSW50IHRodW5r
IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikK
K3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUMyk7CisgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRSZWdpc3RlcnM6Omxy
KTsKKyAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBq
aXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ0YWcgdGh1bmsi
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50
YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFSTTY0UmVnaXN0
ZXJzOjpscik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50
ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkKK3sKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVycyBq
aXQ7CisgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFKGppdCk7CisgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJqaXRDYWdlUHRyIHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NS
RXhpdFB0clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+
IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihub3JtYWxfb3NyX2V4
aXRfdHJhbXBvbGluZSwgIm5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAg
IH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxP
U1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsICJjaGVja3BvaW50
X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVS
ZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50
T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNv
ZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0X2Zy
b21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1
cm5Mb2NhdGlvblRodW5rKE9wY29kZUlEIG9wY29kZUlELCBPcGNvZGVTaXplIHNpemUpCit7Cisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBcCisgICAgY2FzZSBuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uOiB7IFwKKyAgICAgICAgc3dpdGNoIChzaXplKSB7IFwKKyAgICAgICAgY2Fz
ZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwK
KyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRy
VGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbiksICAjbmFtZSAiX3JldHVybl9sb2NhdGlvbiB0aHVuayIpKTsgXAorICAg
ICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0g
XAorICAgICAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeyBcCisgICAgICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFn
Pj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBv
aW50PE9TUkV4aXRQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0
aW9uMTYgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4g
Y29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6
IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTMy
Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiks
ICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMzIgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBc
CisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBc
CisgICAgICAgIHJldHVybiB7IH07IFwKKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpCisgICAgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0
ZXJhdG9yX25leHQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCkKKyAg
ICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Z2V0X2J5X3ZhbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X2lkKQorICAg
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4
IDAzNjhjZTlhMmRhMDYwNGY0MzcyNDUyZWUxMmY4N2M0ZTYzOGRiMGQuLmE5MjJiMjU5OWI5YzYz
OTQ5YjU1YjNhMTRmNWI3NmM1ZWI1ZTYxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCkBAIC00MCw2ICs0MCwyMiBAQCBleHRlcm4gIkMiIHsKICAgICBFbmNv
ZGVkSlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsK
IH0KIAorI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCitleHRlcm4gIkMiIHsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQp
OworI2VuZGlmCisKKyAgICB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIodm9pZCk7
CisgICAgdm9pZCB2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIodm9pZCk7CisKKyAgICB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7Cisg
ICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2
b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tV
bnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7Cit9CisjZW5kaWYKKwogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHZtRW50cnlUb1dhc20odm9pZCogY29kZSwgVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogZnJhbWUpCiB7CiAgICAgYXV0byBjbG9iYmVyaXplVmFsaWRhdG9yID0gbWFrZVNjb3Bl
RXhpdChbJl0gewpAQCAtNTksMTEgKzc1LDMyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhP
cGNvZGVTaXplKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJS
ZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvd1RodW5rKCk7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25U
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSk7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCosIFB0clRh
ZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2Fs
bEdhdGUoUHRyVGFnKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBleGNlcHRpb25I
YW5kbGVyR2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHRhZ0dhdGVUaHVuayh2b2lkKik7
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJh
bXBvbGluZVRodW5rKCk7CisjaWYgRU5BQkxFKERGR19KSVQpCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8T1NSRXhpdFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21J
bmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4
aXRQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQsIE9wY29kZVNpemUpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWUzY2RlOTkwNGMxMDJiZWVlZjQ3YjE0ZjM1ZmY2OTUx
NjlmYTk3Zi4uNDUyMjBkM2ZlZWRmODdjN2FiZTdmMzhkYzI5NjU3NDlhMjBjYzk5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtMjU2LDkgKzI1NiwxMiBAQCBjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBj
b25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdQogY29uc3QgQnl0
ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKIGNvbnN0IEpTRW50cnlQdHJU
YWcgPSBjb25zdGV4cHIgSlNFbnRyeVB0clRhZwogY29uc3QgSG9zdEZ1bmN0aW9uUHRyVGFnID0g
Y29uc3RleHByIEhvc3RGdW5jdGlvblB0clRhZworY29uc3QgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
ID0gY29uc3RleHByIEpTRW50cnlTbG93UGF0aFB0clRhZworY29uc3QgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnID0gY29uc3RleHByIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwogY29uc3QgRXhjZXB0aW9u
SGFuZGxlclB0clRhZyA9IGNvbnN0ZXhwciBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCitjb25zdCBZ
YXJyRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgWWFyckVudHJ5UHRyVGFnCiBjb25zdCBOb1B0clRh
ZyA9IGNvbnN0ZXhwciBOb1B0clRhZwotY29uc3QgU2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4cHIg
U2xvd1BhdGhQdHJUYWcKKyAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogIyAtIFdl
IHVzZSBhIHBhaXIgb2YgcmVnaXN0ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdpc3Rl
ciBmb3IgdGhlCkBAIC0xMDI2LDcgKzEwMjksNyBAQCBtYWNybyB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgZW5kCiBlbmQKIAotbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUs
IHNpemUpCittYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIG1h
Y3JvIGRlZmluZU5hcnJvdygpCiAgICAgICAgIGlmIG5vdCBDX0xPT1BfV0lOCiAgICAgICAgICAg
ICBfJW9wY29kZU5hbWUlX3JldHVybl9sb2NhdGlvbjoKQEAgLTEwNDgsMzIgKzEwNTEsNzYgQEAg
bWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgc2l6
ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikgZigp
IGVuZCkKIGVuZAogCitpZiBBUk02NEUKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwg
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIKK2Vu
ZAorCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxs
ZWUsIGNhbGxQdHJUYWcpCisgICAgbWFjcm8gbGFiZWxOYXJyb3coKQorICAgICAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgZW5kCisKKyAgICBtYWNybyBsYWJlbFdpZGUxNigp
CisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgZW5kCisK
KyAgICBtYWNybyBsYWJlbFdpZGUzMigpCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVO
YW1lJV93aWRlMzI6CisgICAgZW5kCisKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgorICAg
ICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJlbFdpZGUxNiwgbGFiZWxXaWRlMzIsIG1hY3JvIChn
ZW4pIGdlbigpIGVuZCkKICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICBl
bHNpZiBBUk02NEUKKyAgICAgICAgbWFjcm8gY2FsbE5hcnJvdygpCisgICAgICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBq
bXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAg
X2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0
clRhZworICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAg
ICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRl
TWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIGEy
CisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRh
ZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAg
ICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8g
Y2FsbFdpZGUzMigpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUl
X3dpZGUzMikgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV93aWRlMzI6CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAg
IGVuZAorCisgICAgICAgIG1vdmUgY2FsbGVlLCB0MworICAgICAgICBzaXplKGNhbGxOYXJyb3cs
IGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKICAgICBlbHNl
CisgICAgICAgIHNpemUobGFiZWxOYXJyb3csIGxhYmVsV2lkZTE2LCBsYWJlbFdpZGUzMiwgbWFj
cm8gKGdlbikgZ2VuKCkgZW5kKQogICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZworICAg
ICAgICBpZiBBUk12NyBvciBNSVBTCisgICAgICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFS
TXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgICAgICAg
ICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVjdGlv
bnMKKyAgICAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3Vs
dGluZyBpbiB1bmV4cGVjdGVkCisgICAgICAgICAgICAjIGNyYXNoZXMuCisgICAgICAgICAgICBy
ZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCkKKyAgICAgICAgZW5kCiAgICAgZW5kCi0KLSAgICBpZiBBUk12NyBvciBN
SVBTCi0gICAgICAgICMgSXQgaXMgcmVxdWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBn
bG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKLSAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJl
cyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCi0gICAgICAgICMgdGhhdCBjYW4gY2xv
YmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCi0gICAgICAgICMg
Y3Jhc2hlcy4KLSAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKLSAgICBlbmQKLSAgICBkZWZpbmVPU1JFeGl0
UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNv
ZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxh
ckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJl
cGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNh
bGxQdHJUYWcpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCiAjIHNw
IHBvaW50cyB0byB0aGUgbmV3IGZyYW1lCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVl
LCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclRhaWxD
YWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAg
cmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5LDggKzEx
NTYsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRl
bXAzLCBjYWxsUHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAgIGFkZHAg
MTYsIGNmciwgdGVtcDMKLSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisgICAgICAg
IGFkZHAgMTYsIGNmciwgdGVtcDQKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRlbXAxCkBA
IC0xMTMwLDcgKzExNzYsMTQgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVt
cDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEs
IHNwCi0gICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBt
b3ZlIHRlbXA0LCBhMgorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OnRhaWxDYWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCisgICAgICAgIGpt
cCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBlbHNlCisg
ICAgICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNybyBzbG93
UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpAQCAtMTE0NCwxNiArMTE5NywxNiBAQCBtYWNybyBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikK
ICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAg
ICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxs
ZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwo
Y2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICAu
ZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1l
JV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBK
U0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkgIyBXZSBk
b24ndCByZWFjaCB0aGlzIGluIHN0cmFpZ2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFjaCBpdCB2
aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2RlIGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3RhY2sg
ZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4KIAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChv
cE5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAg
cmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tj
ZnJdLCBQQwpAQCAtMTM1MSw3ICsxNDA0LDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxzbyB0cmln
Z2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwg
Y29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1
cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdSZXR1
cm5BZGRyZXNzIHNwCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBpZiBUUkFD
SU5HCkBAIC0xMzc5LDE2ICsxNDMxLDI1IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAg
YnRweiByMCwgLnJlY292ZXIKICAgICAgICAgbW92ZSBjZnIsIHNwICMgcmVzdG9yZSB0aGUgcHJl
dmlvdXMgc3AKICAgICAgICAgIyBwb3AgdGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdpbGwganVt
cCB0byBhIGZ1bmN0aW9uIHRoYXQgd2FudHMgdG8gc2F2ZSBpdAotICAgICAgICBpZiBBUk02NCBv
ciBBUk02NEUKKyAgICAgICAgaWYgQVJNNjQKKyAgICAgICAgICAgIHBvcCBsciwgY2ZyCisgICAg
ICAgIGVsc2lmIEFSTTY0RQorICAgICAgICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mgd2lsbCBi
ZSBwZXJmb3JtZWQgaW4gR2F0ZTo6ZW50cnlPU1JFbnRyeS4KICAgICAgICAgICAgIHBvcCBsciwg
Y2ZyCi0gICAgICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAgICAgZWxzaWYgQVJN
djcgb3IgTUlQUwogICAgICAgICAgICAgcG9wIGNmcgogICAgICAgICAgICAgcG9wIGxyCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgZW5kCi0gICAgICAgIGptcCBy
MCwgSlNFbnRyeVB0clRhZworCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSBy
MCwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5KSAqIFB0
clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMg
SlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQ
dHJUYWcKKyAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6CiAgICAgICAgIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKQEAgLTE0OTQsNyArMTU1NSwxMiBAQCBl
bmQKIG1hY3JvIGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgp
CiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAg
ICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dh
dGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCBhMgor
ICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAgICAg
ICByZXQKKyAgICBlbmQKIGVuZAogCiAjIFRoaXMgYnJlYWsgaW5zdHJ1Y3Rpb24gaXMgbmVlZGVk
IHNvIHRoYXQgdGhlIHN5bnRoZXNpemVkIGxsaW50UENSYW5nZVN0YXJ0IGxhYmVsCkBAIC0xNTI1
LDYgKzE1OTEsMTcgQEAgZWxzZQogZW5kCiAgICAgZG9WTUVudHJ5KG1ha2VIb3N0RnVuY3Rpb25D
YWxsKQogCitnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcgorZ2xvYmFsIF92bUVudHJ5VG9Z
YXJySklUCitfdm1FbnRyeVRvWWFyckpJVDoKKyAgICBmdW5jdGlvblByb2xvZ3VlKCkKK2lmIEFS
TTY0IG9yIEFSTTY0RQorICAgIGptcCB0NSwgWWFyckVudHJ5UHRyVGFnCisgICAgX3ZtRW50cnlU
b1lhcnJKSVRBZnRlcjoKK2VuZAorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQorICAgIHJldAorCiAK
IGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgIyB2b2lkIHNhbml0aXplU3RhY2tG
b3JWTUltcGwoVk0qIHZtKQpAQCAtMTU3MCw2ICsxNjQ3LDcxIEBAIGlmIG5vdCAoQ19MT09QIG9y
IENfTE9PUF9XSU4pCiAgICAgICAgIHJldAogZW5kCiAKK2lmIEFSTTY0RQorICAgICMgdm9pZCog
aml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKQorICAgIGVtaXQgIi5nbG9i
bCBfaml0Q2FnZVB0ciIKKyAgICBlbWl0ICJfaml0Q2FnZVB0cjoiCisgICAgICAgIHRhZ1JldHVy
bkFkZHJlc3Mgc3AKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmppdENhZ2VQdHIpICogUHRy
U2l6ZSwgdDIKKyAgICAgICAgam1wIFt0Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAg
ICBnbG9iYWwgX2ppdENhZ2VQdHJHYXRlQWZ0ZXIKKyAgICAgICAgX2ppdENhZ2VQdHJHYXRlQWZ0
ZXI6CisgICAgICAgIHJldAorCisgICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5l
CisgICAgX3RhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyBhMgorICAgICAgICBqbXAgYTAsIEpTRW50cnlQdHJUYWcKKworICAgIGdsb2JhbCBfdGFp
bENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lCisgICAgX3RhaWxDYWxsSlNFbnRyeVNsb3dQ
YXRoVHJhbXBvbGluZToKKyAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCisgICAgICAgIGpt
cCBhMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisKKyAgICBnbG9iYWwgX2V4Y2VwdGlvbkhhbmRs
ZXJUcmFtcG9saW5lCisgICAgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lOgorICAgICAgICBq
bXAgYTAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKworICAgIGdsb2JhbCBfcmV0dXJuRnJvbUxM
SW50VHJhbXBvbGluZQorICAgIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lOgorICAgICAgICBy
ZXQKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJh
bXBvbGluZVByb2dyYW1Qcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAg
ICAgICBqbXAgX2xsaW50X3Byb2dyYW1fcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9s
aW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Q
cm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUV2YWxQ
cm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVy
bkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9ldmFsX3Byb2xvZ3VlCisKKyAgICBnbG9i
YWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisg
ICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUKKworICAgIGdsb2Jh
bCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZQorICAgIF9qc1RyYW1w
b2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRy
ZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJv
bG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3Vl
OgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2sKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJl
c3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrCitlbmQKKwogaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAjIER1bW15IGVudHJ5IHBv
aW50IHRoZSBDIExvb3AgdXNlcyB0byBpbml0aWFsaXplLgogICAgIF9sbGludF9lbnRyeToKQEAg
LTE3MjQsMjEgKzE4NjYsMzAgQEAgZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaywgbWFjcm8gKCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQotICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3Bh
dGhfY2FsbF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRo
X2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAotCiBvcChsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9j
b25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1
bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCisjIE5lZWQg
dGhlc2Ugc3R1YiBsYWJlbHMgdG8gbWFrZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnIGV0Yy4gTExJbnQgaGVscGVyIG9wY29kZXMuCitfanNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193aWRl
MTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191
bnRhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6Citf
anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3Rh
Z193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZ193aWRlMzI6CisgICAgY3Jhc2goKQogCiAjIFZhbHVlLXJlcHJlc2VudGF0
aW9uLXNwZWNpZmljIGNvZGUuCiBpZiBKU1ZBTFVFNjQKQEAgLTIxMDksNyArMjI2MCw3IEBAIGVu
ZCkKIAogX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0g
ICAgICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAg
ICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRj
aE9wKG5hcnJvdywgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMTE4LDcgKzIyNjksNyBAQCBfbGxp
bnRfb3BfY2FsbF9ldmFsOgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICBzbG93
UGF0aEZvckNvbW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCisgICAgICAg
IG9wX2NhbGxfZXZhbCwKICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFsLAogICAg
ICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKHdpZGUxNiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0y
MTI3LDcgKzIyNzgsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKIAogX2xsaW50X29w
X2NhbGxfZXZhbF93aWRlMzI6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBv
cF9jYWxsX2V2YWxfd2lkZTMyLAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUz
MiwKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRl
MzIsIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjIxMiw3ICsyMzYzLDEzIEBAIG9wKGNoZWNrcG9p
bnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKIAogICAg
ICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRpb24o
X2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCi0gICAgICAgIGptcCByMSwg
SlNFbnRyeVB0clRhZworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgIG1vdmUgcjEsIGEw
CisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUs
IGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRy
eVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcK
KyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVuZApA
QCAtMjIyOSwxMiArMjM4NiwyMyBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUs
IG1hY3JvICgpCiAgICAgICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2NoZWNrcG9pbnRfb3Ny
X2V4aXQpCiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBicmFuY2hJ
ZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKLSAgICAg
ICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAg
bW92ZSByMSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkp
ICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGptcCByMSwgSlNF
bnRyeVB0clRhZworICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBvcnRlZCgp
CiAgICAgZW5kCiBlbmQpCiAKK29wKG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCBtYWNybyAo
KQorICAgIGRpc3BhdGNoKDApCitlbmQpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdl
IGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRo
ZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVy
IEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCkBAIC0yMjc5LDQgKzI0NDcsMTggQEAgb3Aod2Fz
bV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgY3Jhc2goKQogZW5kKQog
Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxs
X25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorX3dhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUxNjoK
K193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUxNjoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF93aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lk
ZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTMyOgorX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUzMjoKKyAgICBjcmFzaCgp
CisKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2MjZhNDY4MTdiMTUzYjNkNTQ2NDdjM2Q4MmMx
YjQ3NDlmZTYyNjg0Li5iZTU2MTQ5ZjFhNTRmMzZlMjdlNzFmOTY2OThhYTQyN2I2NjMyMzU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtNjg2LDcgKzY4Niw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBp
bnRvIHRoZSBpbnRlcnByZXRlcgogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEs
IHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2so
b3Bjb2RlTmFtZSwgZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29k
ZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAgICBwcmVwYXJlU3RhdGVG
b3JDQ2FsbCgpCkBAIC03MjQsNiArNzI0LDcgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRv
bmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYnRpeiB0MSwgLmNvbnRpbnVlCiAKIC5ub0V4dHJhU2xv
dDoKKyAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CiAgICAgLy8gTW92ZSBm
cmFtZSB1cCB0MSBzbG90cwogICAgIG5lZ2kgdDEKICAgICBtb3ZlIGNmciwgdDMKQEAgLTc1MCw2
ICs3NTEsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkK
ICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDEsIDhdCiAgICAgYWRkcCA4LCB0MwogICAg
IGJhZGRpbnogMSwgdDIsIC5maWxsTG9vcAorICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1l
JV90YWc6CiAKIC5jb250aW51ZToKICAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5j
ZSB0aGUgc2xvd19wYXRoIGNsb2JiZXJlZCBpdC4KQEAgLTIxMTUsNyArMjExNyw3IEBAIG1hY3Jv
IGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRh
Z09mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQz
LCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCiAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogLm9wQ2FsbFNsb3c6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IGFhMTU3MjNjNjQwZjJkNzdlYThhN2ZlODhhOThiYWVhODZkMmI5YjkuLmJl
YTdjNTgxYWZlNDIwNjBhY2UzYzlhYjFlNDhkYzJkYzA1YzFiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0z
MDAsMTUgKzMwMCwyMyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcmV0CiBlbmQK
IAotCiAjIGEwLCBhMiwgdDMsIHQ0CiBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHBy
b3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBDX0xP
T1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CisgICAg
ZWxzaWYgQVJNNjRFCisgICAgICAgIG1vdmUgZW50cnksIHQzCisgICAgICAgIGxlYXAgSlNDQ29u
ZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhw
ciBHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0KSAqIFB0clNpemUsIGEyCisgICAgICAgIGptcCBb
YTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGdsb2Jh
bCBfdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb0phdmFT
Y3JpcHRUcmFtcG9saW5lOgorICAgICAgICBjYWxsIHQzLCBKU0VudHJ5UHRyVGFnCiAgICAgZWxz
ZQogICAgICAgICBjYWxsIGVudHJ5LCBKU0VudHJ5UHRyVGFnCiAgICAgZW5kCisgICAgZ2xvYmFs
IF92bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyCisgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRH
YXRlQWZ0ZXI6CiAgICAgc3VicCAxNiwgc3AKIGVuZAogCkBAIC0zMjYsOSArMzM0LDE4IEBAIG1h
Y3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRl
bXAyKQogICAgICAgICBzdWJwIDMyLCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rp
b25QdHJUYWcKICAgICAgICAgYWRkcCAzMiwgc3AKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAg
bW92ZSB0ZW1wMSwgdDMKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb05hdGl2
ZSkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
ICMgSG9zdEZ1bmN0aW9uUHRyVGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZlVHJh
bXBvbGluZQorICAgICAgICBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZToKKyAgICAgICAgY2Fs
bCB0MywgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIHRlbXAxLCBI
b3N0RnVuY3Rpb25QdHJUYWcKICAgICBlbmQKKyAgICBnbG9iYWwgX3ZtRW50cnlUb05hdGl2ZUdh
dGVBZnRlcgorICAgIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXI6CiBlbmQKIAogb3AobGxpbnRf
aGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8gKCkKQEAgLTQzMSw4ICs0NDgsMTQgQEAg
bWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAgbW92ZSBQQywgYTEK
ICAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IpCiAgICAgICAgICAgICBidHB6IHIw
LCAucmVjb3ZlcgorCiAgICAgICAgICAgICBtb3ZlIHIxLCBzcAotICAgICAgICAgICAgam1wIHIw
LCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAg
ICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKyAg
ICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRQQygpCiAg
ICAgICAgIGVuZCkKQEAgLTY0NSw3ICs2NjgsNyBAQCBlbmQKICMgRW50cnlwb2ludHMgaW50byB0
aGUgaW50ZXJwcmV0ZXIuCiAKICMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hp
Y2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNv
ZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxv
Y2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckND
YWxsKCkKQEAgLTY4Miw5ICs3MDUsMTYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVM
YWJlbCwgc2xvd1BhdGgpCiAKIC5ub0V4dHJhU2xvdDoKICAgICBpZiBBUk02NEUKKyAgICAgICAg
bGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAg
KyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVVudGFnKSAqIFB0clNpemUsIHQzCisgICAg
ICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgICAgICBsb2FkcCA4W2Nmcl0sIGxyCiAgICAgICAg
IGFkZHAgMTYsIGNmciwgdDMKICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQzCisgICAgICAg
IF8lb3Bjb2RlTmFtZSVVbnRhZ0dhdGVBZnRlcjoKKyAgICBlbHNlCisgICAgICAgIF9qc190cmFt
cG9saW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKKyAgICAgICAgXyVvcGNvZGVOYW1lJVVudGFnR2F0
ZUFmdGVyOgogICAgIGVuZAogCiAgICAgLy8gTW92ZSBmcmFtZSB1cCB0MSBzbG90cwpAQCAtNzEy
LDkgKzc0MiwxNiBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0
aCkKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKIAogICAgIGlmIEFSTTY0RQorICAgICAg
ICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1h
cCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVGFnKSAqIFB0clNpemUsIHQzCisgICAg
ICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0MQogICAgICAgICB0
YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAgICAgIHN0b3JlcCBsciwgOFtjZnJdCisgICAgICAgIF8l
b3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBvbGlu
ZV8lb3Bjb2RlTmFtZSVfdGFnOgorICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVyOgog
ICAgIGVuZAogCiAuY29udGludWU6CkBAIC0yMTc1LDkgKzIyMTIsMTUgQEAgbWFjcm8gY2FsbEhl
bHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWEKICAgICBzdG9yZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHBy
ZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNo
aW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2FsbFRh
cmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRh
ZykKLQorICAgIGlmIEFSTTY0RQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBw
cmVwYXJlQ2FsbCh0MCwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQwCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIHQwLCBKU0VudHJ5UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFyZUNh
bGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJU
YWcpCisgICAgZW5kCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyArMjI4
OCw3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5
S2V5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxpbnRf
b3BfY2F0Y2gsIG1hY3JvKCkgZW5kLCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29wX2Nh
dGNoLCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBl
bmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAj
IG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0
Y2gpLCBhbmQgZnJvbQogICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAo
c2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KQEAgLTIzMTAsNyArMjM1MywxMyBAQCBvcChs
bGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICMgVGhp
cyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAgICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHQxCiAgICAgY29udmVydENhbGxlZVRvVk0odDEpCi0gICAgam1w
IFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcK
KyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
W3QxXSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICog
UHRyU2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCBWTTo6dGFyZ2V0TWFj
aGluZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBlbmQp
CiAKIApAQCAtMzAxOCw0ICszMDY3LDMgQEAgb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xv
b3BfaGludCwgbWFjcm8gKCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKICAgICBkb1JldHVybigpCiBlbmQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGI5MzIyMTM0ODM0MmU5YWE4ODg4MzJkNWM3YmFkMTY2
NDdhY2I0NWIuLmE5ZGE4YmFkZTY3N2M2MDMzNDRiYmZkNjQyNjA5ODVhODkzNDYwNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTM5LDggKzEz
OSwxMiBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0
ZXIpCiAKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAg
ICAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyBzcAotICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAg
ICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBK
U0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVu
dHJ5KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAg
ICAgLnJlY292ZXI6CiAgICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2Rl
QmxvY2tSZWdpc3RlcikKICAgICAgICAgZW5kKQpAQCAtMTU5LDkgKzE2MywxNCBAQCBtYWNybyBj
aGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBidHB6IHIxLCAucmVjb3Zlcgog
ICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgICAgICAgICBy
ZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNw
CiAgICAgICAgICAgICBtb3ZlIHIwLCBhMAotICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQ
dHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIG1vdmUgcjEsIHdz
MAorICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICogUHRy
U2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBq
bXAgcjEsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVy
OgogICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQpAQCAtMjUzLDcgKzI2Miw2IEBAIGVuZAogCiBtYWNy
byB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNt
SW5zdGFuY2UpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNo
b3VsZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENB
bmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBsb2FkV2Fz
bUluc3RhbmNlKCkKQEAgLTQ1Niw3ICs0NjQsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAg
ICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5k
Q0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCB3czAKKyAgICAgICAgam1wIFt3czBdLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIHJldAorICAgIGVuZAogZW5kCiAK
ICMgRW50cnkgcG9pbnQKQEAgLTQ5Nyw3ICs1MTAsMTMgQEAgb3Aod2FzbV90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMwogICAgIGNDYWxsNChfc2xvd19wYXRo
X3dhc21fdGhyb3dfZXhjZXB0aW9uKQogCi0gICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRy
VGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgIGxlYXAgSlND
Q29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0
ZXhwciBHYXRlOjpleGNlcHRpb25IYW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBb
YTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAg
ZWxzZQorICAgICAgICBqbXAgcjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbmQKIGVu
ZCkKIAogIyBEaXNhYmxlIHdpZGUgdmVyc2lvbiBvZiBuYXJyb3ctb25seSBvcGNvZGVzCkBAIC03
MDUsNyArNzI0LDM4IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwg
c3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAg
Q2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQ
dHJUYWcKKworICAgICAgICAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwg
c2l6ZSkKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyAr
IGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0
ZTo6JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAg
am1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
KyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRy
eVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBt
YWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAg
ICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9m
SlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikg
KiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1l
JV93aWRlMTY6CisgICAgICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxX
aWRlMzIoKQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdH
YXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUs
IHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoK
KyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAg
ICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxs
V2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICAg
ICAgZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkK
IAogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHdzMQogICAgICAgICAgICAgbG9h
ZGkgV2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBmOWU1NzMyZmFm
MTRiMDgwOWJjMmJiNmMxOWIxYzgwMmM1OWY4MzAyLi5mZjU3YjZhNDhhZTk3NTViNGMxMDU0ODU0
M2Q3NTlmNDQzNjI3ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgpAQCAtMzcsMzggKzM3LDQ1IEBACiAjCiAjIEdQUiBjb252ZW50aW9ucywgdG8gbWF0Y2gg
dGhlIGJhc2VsaW5lIEpJVDoKICMKLSMgIHgwICA9PiB0MCwgYTAsIHIwCi0jICB4MSAgPT4gdDEs
IGExLCByMQotIyAgeDIgID0+IHQyLCBhMgotIyAgeDMgID0+IHQzLCBhMwotIyAgeDQgID0+IHQ0
Ci0jICB4NSAgPT4gdDUKKyMgIHgwICA9PiB0MCwgYTAsIHdhMCwgcjAKKyMgIHgxICA9PiB0MSwg
YTEsIHdhMSwgcjEKKyMgIHgyICA9PiB0MiwgYTIsIHdhMgorIyAgeDMgID0+IHQzLCBhMywgd2Ez
CisjICB4NCAgPT4gdDQsIGE0LCB3YTQKKyMgIHg1ICA9PiB0NSwgYTUsIHdhNQorIyAgeDYgID0+
IHQ2LCBhNiwgd2E2CisjICB4NyAgPT4gdDcsIGE3LCB3YTcKKyMgIHg4ICA9PiB3czAKKyMgIHg5
ICA9PiB3czEKICMgeDEzICA9PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTYgID0+
ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAo
c2NyYXRjaCkKLSMgeDI2ICA9PiAgICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAg
ICAgICAgICBjc3IxIChudW1iZXJUYWcpCi0jIHgyOCAgPT4gICAgICAgICAgICAgY3NyMiAobm90
Q2VsbE1hc2spCisjIHgyNSAgPT4gICAgICAgICAgICAgY3NyNiAobWV0YWRhdGFUYWJsZSkKKyMg
eDI2ICA9PiAgICAgICAgICAgICBjc3I3IChQQikKKyMgeDI3ICA9PiAgICAgICAgICAgICBjc3I4
IChudW1iZXJUYWcpCisjIHgyOCAgPT4gICAgICAgICAgICAgY3NyOSAobm90Q2VsbE1hc2spCiAj
IHgyOSAgPT4gY2ZyCiAjICBzcCAgPT4gc3AKICMgIGxyICA9PiBscgogIwogIyBGUFIgY29udmVu
dGlvbnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQ6CiAjCi0jICBxMCAgPT4gZnQwLCBmYTAs
IGZyCi0jICBxMSAgPT4gZnQxLCBmYTEKLSMgIHEyICA9PiBmdDIsIGZhMgotIyAgcTMgID0+IGZ0
MywgZmEzCi0jICBxNCAgPT4gZnQ0ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBx
NSAgPT4gZnQ1ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyAgcTkgID0+IGNzZnIxICAgICAgICAo
T25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEwICA9PiBjc2ZyMiAgICAgICAgKE9ubHkgdGhl
IGxvd2VyIDY0IGJpdHMpCi0jIHExMSAgPT4gY3NmcjMgICAgICAgIChPbmx5IHRoZSBsb3dlciA2
NCBiaXRzKQotIyBxMTIgID0+IGNzZnI0ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykK
LSMgcTEzICA9PiBjc2ZyNSAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNCAg
PT4gY3NmcjYgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTUgID0+IGNzZnI3
ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgIHEwICA9PiBmdDAsIGZhMCwgd2Zh
MCwgZnIKKyMgIHExICA9PiBmdDEsIGZhMSwgd2ZhMQorIyAgcTIgID0+IGZ0MiwgZmEyLCB3ZmEy
CisjICBxMyAgPT4gZnQzLCBmYTMsIHdmYTMKKyMgIHE0ICA9PiBmdDQsICAgICAgd2ZhNCAgICAg
ICAgICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTUgID0+IGZ0NSwgICAgICB3ZmE1ICAgICAg
ICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxNiAgPT4gICAgICAgICAgIHdmYTYgICAgICAg
ICAgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE3ICA9PiAgICAgICAgICAgd2ZhNyAgICAgICAg
ICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTggID0+IGNzZnIwICAgICAgICAgICAgICAgICAg
IChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyAgcTkgID0+IGNzZnIxICAgICAgICAgICAgICAg
ICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTAgID0+IGNzZnIyICAgICAgICAgICAg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTEgID0+IGNzZnIzICAgICAgICAg
ICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTIgID0+IGNzZnI0ICAgICAg
ICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTMgID0+IGNzZnI1ICAg
ICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2
ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTUgID0+IGNz
ZnI3ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQogIyBxMzEgID0+
IHNjcmF0Y2gKIAogZGVmIGFybTY0R1BSTmFtZShuYW1lLCBraW5kKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZjVhMzJkNTEwZmM4MGMwNjM4YTM5ZWQ2NTFh
ZWY1YTlkMGZmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HYXRlLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworI2lm
IEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisKKyNkZWZpbmUgSlNDX1VUSUxJVFlf
R0FURVModikgXAorICAgIHYoaml0Q2FnZVB0ciwgTm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxs
SlNFbnRyeVB0clRhZywgTm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRo
UHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYobG9vcE9TUkVudHJ5LCBOb1B0clRhZykgXAorICAg
IHYoZW50cnlPU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KHdhc21PU1JFbnRyeSwgTm9QdHJU
YWcpIFwKKyAgICB2KGV4Y2VwdGlvbkhhbmRsZXIsIE5vUHRyVGFnKSBcCisgICAgdihyZXR1cm5G
cm9tTExJbnQsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrVW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnLCBOb1B0clRhZykgXAorICAgIHYodm1FbnRy
eVRvSmF2YVNjcmlwdCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYodm1FbnRyeVRvTmF0aXZlLCBI
b3N0RnVuY3Rpb25QdHJUYWcpIFwKKworI2RlZmluZSBKU0NfSlNfR0FURV9PUENPREVTKHYpIFwK
KyAgICB2KG9wX2NhbGwsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2FsbCwgSlNF
bnRyeVB0clRhZykgXAorICAgIHYob3BfY29uc3RydWN0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAg
dihvcF9pdGVyYXRvcl9uZXh0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9v
cGVuLCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0
aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRh
ZykgXAorICAgIHYob3BfY29uc3RydWN0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAor
ICAgIHYob3BfY2FsbF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAg
IHYob3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdihvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdywgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfZXZhbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX25leHRfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykg
XAorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyh2KSBcCisgICAgdih3YXNtX2NhbGwsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAg
IHYod2FzbV9jYWxsX25vX3RscywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNt
X2NhbGxfaW5kaXJlY3QsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxs
X2luZGlyZWN0X25vX3RscywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisKKyNlbHNlCisjZGVm
aW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KQorI2VuZGlmCisKK2VudW0gY2xhc3MgR2F0ZSA6
IHVpbnQ4X3QgeworI2RlZmluZSBKU0NfREVGSU5FX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFnKSBn
YXRlTmFtZSwKKyNkZWZpbmUgSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKGdhdGVOYW1lLCB0
YWcpIGdhdGVOYW1lLCBnYXRlTmFtZSMjX3dpZGUxNiwgZ2F0ZU5hbWUjI193aWRlMzIsCisgICAg
SlNDX1VUSUxJVFlfR0FURVMoSlNDX0RFRklORV9HQVRFX0VOVU0pCisgICAgSlNDX0pTX0dBVEVf
T1BDT0RFUyhKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0pCisgICAgSlNDX1dBU01fR0FURV9P
UENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkKKyN1bmRlZiBKU0NfREVGSU5FX0dB
VEVfRU5VTQorfTsKKworI2RlZmluZSBKU0NfQ09VTlQoZ2F0ZU5hbWUsIHRhZykgKyAxCisjZGVm
aW5lIEpTQ19PUENPREVfQ09VTlQoZ2F0ZU5hbWUsIHRhZykgKyAzCitzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG51bWJlck9mR2F0ZXMgPSAwIEpTQ19VVElMSVRZX0dBVEVTKEpTQ19DT1VOVCkg
SlNDX0pTX0dBVEVfT1BDT0RFUyhKU0NfT1BDT0RFX0NPVU5UKSBKU0NfV0FTTV9HQVRFX09QQ09E
RVMoSlNDX09QQ09ERV9DT1VOVCk7CisjdW5kZWYgSlNDX0NPVU5UCisjdW5kZWYgSlNDX09QQ09E
RV9DT1VOVAorI2Vsc2UKKy8vIEtlZXAgaXQgbm9uLXplcm8gdG8gbWFrZSBKU0NDb25maWcncyBh
cnJheSBub3QgWzBdLgorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkdhdGVzID0g
MTsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5o
CmluZGV4IDVhNDczMTdjNjJhNWViYTY2NjY3NTczNWY3NzQwMzUwMGM2ODBiNDEuLjdmOTZlYzUy
ZWQyMWFmZGUzM2RhMTMwZGI3ZGQ0Njk0ZWM2MTk4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0NvbmZpZy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiR2F0ZS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIk9wdGlv
bnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1dURkNvbmZpZy5oPgpAQCAtOTIsNiArOTMsNyBAQCBz
dHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFtudW1PcGNvZGVJRHMgKyBu
dW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUxNltudW1PcGNv
ZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUz
MltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKKyAgICAgICAgY29uc3Qgdm9pZCog
Z2F0ZU1hcFtudW1iZXJPZkdhdGVzXTsKICAgICB9IGxsaW50OwogCiAjaWYgQ1BVKEFSTTY0RSkg
JiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0xMTcsNiArMTE5LDcgQEAgZXh0ZXJuICJD
IiBKU19FWFBPUlRfUFJJVkFURSBDb25maWcgZ19qc2NDb25maWc7CiBjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50
Lm9wY29kZU1hcCk7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFw
V2lkZTE2ID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUxNik7CiBj
b25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTMyID0gb2Zmc2V0
b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUzMik7Citjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5n
YXRlTWFwKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQdHJUYWcuY3BwCmluZGV4IGE5NDE2MzRiZmZkYTdhNDYzMTU2YzQ1OTA2Zjc3
NDliZWEyMjZhYzcuLmVhYjM3ZWU4Nzg0MTY0OWJiZDkxYWM0OTQyM2U5ZTNiZDdjNTJlZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcApAQCAtMjgsNiAr
MjgsMTIgQEAKIAogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogCisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxpdGllcy5oPgorI2luY2x1ZGUgPHN5cy9t
bWFuLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7
CiAKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTM1LDgg
KzQxLDEwIEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGNoYXIqIHRhZ0ZvclB0cihj
b25zdCB2b2lkKiBwdHIpCiB7CiAjZGVmaW5lIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKHRh
ZywgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgXAotICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2Rl
UHRySW1wbDxXVEY6OlB0clRhZ0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2Rl
UHRyVGFnKHB0cikpKSBcCi0gICAgICAgIHJldHVybiAjdGFnOworICAgIGlmIChjYWxsZXJUeXBl
ICE9IFB0clRhZ0NhbGxlclR5cGU6OkpJVCB8fCBjYWxsZWVUeXBlICE9IFB0clRhZ0NhbGxlclR5
cGU6Ok5hdGl2ZSkgeyBcCisgICAgICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxX
VEY6OlB0clRhZ0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0
cikpKSBcCisgICAgICAgICAgICByZXR1cm4gI3RhZzsgXAorICAgIH0KICAgICBGT1JfRUFDSF9K
U0NfUFRSVEFHKFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKQogI3VuZGVmIFJFVFVSTl9OQU1F
X0lGX1RBR19NQVRDSEVTCiAgICAgcmV0dXJuIG51bGxwdHI7IC8vIE1hdGNoaW5nIHRhZyBub3Qg
Zm91bmQuCkBAIC02MSw0ICs2OSwzMiBAQCB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKQog
CiAjZW5kaWYgLy8gQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiAKKyNp
ZiBDUFUoQVJNNjRFKQorCitQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnIHRhZykK
K3sKKyNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxs
ZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2FsbGVyVHlwZTsKKyAgICBzd2l0Y2ggKHRh
ZykgeworICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworICAg
IH0KKyN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlw
ZTo6TmF0aXZlOworfQorCitQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnIHRhZykK
K3sKKyNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxs
ZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2FsbGVlVHlwZTsKKyAgICBzd2l0Y2ggKHRh
ZykgeworICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworICAg
IH0KKyN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCmluZGV4IGRmOGI0MDIyNjZlMGUwMjAxOWFm
MzVmNjhlOTFmYWE3OGJlNzkzNWIuLjMzOGFhYWVhZTZhMTI1NTM2NDRlZDU1NzNhZjViMWJjNGYw
MzkwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRh
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCkBAIC0y
Nyw0NiArMjcsNTMgQEAKIAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRl
IDx3dGYvUHRyVGFnLmg+CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFk
ZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYKKworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKK2V4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogaml0Q2FnZVB0cih2b2lkKiBw
b2ludGVyLCB1aW50cHRyX3QgdGFnKTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdXNp
bmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BUUlRBRyh2
KSBcCi0gICAgLyogTmF0aXZlIE5vbmUgKi8gXAorICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVy
Ok5vbmUgKi8gXAogICAgIHYoRE9NSklURnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRGlzYXNzZW1ibHlQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAog
ICAgIHYoUHV0VmFsdWVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6Tm9uZSkgXAotICAgIC8qIEpJVCBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6SklU
IENhbGxlcjpOb25lICovIFwKICAgICB2KEIzQ29tcGlsYXRpb25QdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRXhlY3V0YWJsZU1l
bW9yeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25l
KSBcCiAgICAgdihMaW5rQnVmZmVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRh
Z0NhbGxlclR5cGU6Ok5vbmUpIFwKLSAgICAvKiBOYXRpdmUgTmF0aXZlICovIFwKKyAgICB2KFlh
cnI4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5v
bmUpIFwKKyAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJU
YWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVy
VHlwZTo6Tm9uZSkgXAorICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAg
ICAgdihCeXRlY29kZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxs
ZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVFeGVj
dXRvclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpO
YXRpdmUpIFwKICAgICB2KEpJVFByb2JlU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAot
ICAgIHYoU2xvd1BhdGhQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogSklUIE5hdGl2ZSAqLyBcCisgICAgLyogQ2FsbGVl
OkpJVCBDYWxsZXI6TmF0aXZlICovIFwKICAgICB2KE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICAvKiBO
YXRpdmUgSklUICovIFwKKyAgICB2KFlhcnJFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENh
bGxlcjpKSVQgKi8gXAogICAgIHYoSG9zdEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoT3BlcmF0aW9uUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAg
IHYoSklUVG9OYXRpdmVHYXRlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6OkpJVCkgXAotICAgIC8qIEpJVCBKSVQgKi8gXAorICAgIC8qIENhbGxlZTpK
SVQgQ2FsbGVyOkpJVCAqLyBcCiAgICAgdihFeGNlcHRpb25IYW5kbGVyUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUVGh1bmtQ
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAg
ICAgdihKSVRTdHViUm91dGluZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpTRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCisgICAgdihKU0VudHJ5U2xvd1BhdGhQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAg
dihKU0ludGVybmFsUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogICAgIHYoSlNTd2l0Y2hQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFbnRyeVB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9TUkV4aXRQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAg
dihXYXNtRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKSBcCi0gICAgdihZYXJyOEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnJNYXRjaE9u
bHk4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJ
VCkgXAotICAgIHYoWWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpK
SVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoWWFyckJhY2t0cmFja1B0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKIAogI2RlZmlu
ZSBKU0NfREVDTEFSRV9QVFJUQUcobmFtZSwgdHlwZSwgdGFyZ2V0KSBXVEZfREVDTEFSRV9QVFJU
QUcobmFtZSkKQEAgLTEwOCwxOCArMTE1LDI4IEBAIEZPUl9FQUNIX0pTQ19QVFJUQUcoSlNDX0RF
Q0xBUkVfUFRSVEFHKQogI3ByYWdtYSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCitKU19FWFBPUlRf
UFJJVkFURSBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIFB0clRhZ0NhbGxlZVR5cGUgY2FsbGVlVHlwZShQdHJUYWcpOworCiB0ZW1wbGF0ZTxQ
dHJUYWcgdGFnLCBQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUsIFB0clRhZ0NhbGxlclR5cGUg
Y2FsbGVyVHlwZSwgdHlwZW5hbWUgUHRyVHlwZT4KIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5
cGUgdGFnSlNDQ29kZVB0ckltcGwoUHRyVHlwZSBwdHIpCiB7CiAgICAgc3RhdGljX2Fzc2VydChj
YWxsZXJUeXBlID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgaWYgY29uc3RleHByIChj
YWxsZWVUeXBlID09IFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSkgewotICAgICAgICBpZiBjb25z
dGV4cHIgKHRhZyAhPSBKSVRUb05hdGl2ZUdhdGVQdHJUYWcpIHsKLSAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRy
VGFnKTsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykK
LSAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklU
T3BlcmF0aW9uKHB0cik7Ci0gICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhv
c3RGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0
YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgc3Rh
dGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25Q
dHJUYWcpOworICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisg
ICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0
aW9uKHB0cik7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9u
UHRyVGFnKQorICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRy
VHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHB0cikpKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxQdHJUeXBlPihqaXRDYWdlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRy
KSwgdGFnKSk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dGFnTmF0aXZlQ29kZVB0
ckltcGw8dGFnPihwdHIpOwogfQpAQCAtMTI5LDE3ICsxNDYsNjQgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgUHRyVHlwZSB1bnRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0
YXRpY19hc3NlcnQoY2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlm
IGNvbnN0ZXhwciAoY2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAg
ICAgICAgaWYgY29uc3RleHByICh0YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhv
c3RGdW5jdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVy
YXRpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2Uo
KS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4
cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0
aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlv
blB0clRhZyk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykK
KyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVy
YXRpb24ocHRyKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rp
b25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2Vy
dElzSG9zdEZ1bmN0aW9uKHB0cik7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAo
T3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXR3
aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHB0cikpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJl
bW92ZUNvZGVQdHJUYWcocHRyKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfSBlbHNlIHsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsK
KyAgICAgICAgICAgIFB0clR5cGUgcmVtb3ZlZCA9IHJlbW92ZUNvZGVQdHJUYWcocHRyKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCh0YWdKU0NDb2RlUHRySW1wbDx0YWcsIGNhbGxlZVR5
cGUsIGNhbGxlclR5cGU+KHJlbW92ZWQpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJl
bW92ZWQ7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gV1RGOjp1bnRhZ05h
dGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRyKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlw
ZT4KK2lubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQ
dHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2ludGVyKQoreworICAgIEFTU0VSVChwdHIp
OworICAgIFVOVVNFRF9QQVJBTShzdGFja1BvaW50ZXIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFB0clR5cGU+KEpTQ19KSVRfQ0FHRShiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHN0YWNrUG9pbnRlcikpKTsKKyNlbmRpZgorI2lmIENQVShBUk02
NEUpCisgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRo
X2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1Bv
aW50ZXIpKTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBQdHJUeXBlPgoraW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9p
bnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sK
KyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAg
ICBQdHJUeXBlIHVuY2FnZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCh1bmNhZ2VkLCBz
dGFja1BvaW50ZXIpID09IHB0cik7CisgICAgICAgIHJldHVybiB1bmNhZ2VkOworICAgIH0KKyNl
bmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgo
cHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRy
VGFnPihzdGFja1BvaW50ZXIpKTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQor
CiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiB2b2lkIGluaXRp
YWxpemVQdHJUYWdMb29rdXAoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWF0Y2hSZXN1bHQuaAppbmRleCBhZGQyNjRlOTA5NzViMjY1ZmQ1YmUxMGYyNjMyZmQ3NWUy
ODZjODFjLi5mMzA1ZTRhMTY0ZDAxZmZiMWY4MWM3OWViNWU0OWYwNDViODE4NWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmgKQEAgLTM0LDcgKzM0LDEw
IEBAIHN0cnVjdCBNYXRjaFJlc3VsdDsKICNpZiBDUFUoQUREUkVTUzMyKQogdXNpbmcgRW5jb2Rl
ZE1hdGNoUmVzdWx0ID0gdWludDY0X3Q7CiAjZWxzZQotdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0
ID0gTWF0Y2hSZXN1bHQ7CitzdHJ1Y3QgRW5jb2RlZE1hdGNoUmVzdWx0IHsKKyAgICBzaXplX3Qg
c3RhcnQ7CisgICAgc2l6ZV90IGVuZDsKK307CiAjZW5kaWYKIAogc3RydWN0IE1hdGNoUmVzdWx0
IHsKQEAgLTU2LDYgKzU5LDEyIEBAIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgICwgZW5k
KGJpdHdpc2VfY2FzdDxNYXRjaFJlc3VsdD4obWF0Y2gpLmVuZCkKICAgICB7CiAgICAgfQorI2Vs
c2UKKyAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0KEVuY29kZWRNYXRjaFJlc3VsdCBtYXRj
aCkKKyAgICAgICAgOiBzdGFydChtYXRjaC5zdGFydCkKKyAgICAgICAgLCBlbmQobWF0Y2guZW5k
KQorICAgIHsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNo
UmVzdWx0IGZhaWxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CmluZGV4IDBkMmY1YWNmNzljZGY1NzQ5OGU2YTczYzA2NzJkNmRkNGJmODg0NzguLmU3MTdkMzBl
NjRkMTU5NzM0NzkyYTNmNDhiOTIxNjU3MmZiNDAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01MCw2ICs1MCwxMSBAQAogI2luY2x1ZGUgPGNydF9l
eHRlcm5zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2Nh
cGFiaWxpdGllcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtMzkyLDYgKzM5Nyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVBbGxKSVRPcHRp
b25zKCkKICAgICBPcHRpb25zOjp1c2VPTUdKSVQoKSA9IGZhbHNlOwogICAgIE9wdGlvbnM6OnVz
ZURPTUpJVCgpID0gZmFsc2U7CiAgICAgT3B0aW9uczo6dXNlUmVnRXhwSklUKCkgPSBmYWxzZTsK
KyAgICBPcHRpb25zOjp1c2VKSVRDYWdlKCkgPSBmYWxzZTsKIH0KIAogdm9pZCBPcHRpb25zOjpy
ZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKQEAgLTExMTQsNCArMTEyMCwxMCBAQCBib29sIE9w
dGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorYm9vbCBjYW5V
c2VKSVRDYWdlKCkgeyByZXR1cm4gSlNDX0pJVF9DQUdFX1ZFUlNJT04oKTsgfQorI2Vsc2UKK2Jv
b2wgY2FuVXNlSklUQ2FnZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCA4ZDBmZjBlYzY4MzI5YjA0ZDA5M2NlMzhkNGVjYTQ2YWEyODhmM2VhLi5hNjE5MWFiYTAz
MzFjYWMzZGM3ZTY3ODc2NGVkYTc1NGMyMGYzZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQzLDYgKzQzLDggQEAgY29uc3RleHByIGJvb2wg
ZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSB0cnVlOwogY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICNlbmRpZgogCitKU19FWFBPUlRf
UFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKKwogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25z
IHdvcms/CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9K
U0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25z
IGluIHVzZSwKQEAgLTUyMCw2ICs1MjIsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNlZWRGb3JMSUNNRnV6
emVyLCA0MjQyNDIsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0
aW5nTElDTVByb2JhYmlsaXR5LCAwLjUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwg
ZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1h
bCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBO
b3JtYWwsIG51bGxwdHIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9w
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5k
ZXggOWM0YjU5NTQ2ZTZmOTYwYWI3NThlM2E1M2YyYjYxZGJiNjc0YzIxZS4uOTA2MjExMjFhODFl
MzFiNTIxNzViNTk3ZDliYzQxMjY0ODY3NjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgV0FTTV9D
QUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgZG8g
eyBcCi0gICAgICAgIFdBU01fUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcs
IFNsb3dQYXRoUHRyVGFnPihjYWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAorICAgICAg
ICBXQVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xv
d1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgdGFyZ2V0SW5zdGFuY2UpOyBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCiAKICNkZWZpbmUgQ09ERV9CTE9DSygpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAKaW5kZXggMjJiZjY2ZDhjODIyZGE5MWUwMzE4MDZhMmY2OWQzNmU0YmQ4
ZjdiZC4uOTRkMzAyYWVhZmQ1MTZhNWIzZmM3ZjRiZjVmNzk1YTNmNTZjYTc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKKyNpZiBDUFUoQVJNNjQpCitKU0NfQU5OT1RB
VEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRy
eVRvWWFyckpJVEFmdGVyKTsKKyNlbmRpZgorCiBNYXRjaGluZ0NvbnRleHRIb2xkZXI6Ok1hdGNo
aW5nQ29udGV4dEhvbGRlcihWTSYgdm0sIFlhcnJDb2RlQmxvY2sqIHlhcnJDb2RlQmxvY2ssIE1h
dGNoRnJvbSBtYXRjaEZyb20pCiAgICAgOiBtX3ZtKHZtKQogewpAQCAtMzc0Niw5ICszNzUwLDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplY3gpOwogI2Vu
ZGlmCiAjZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAg
ICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpIHsKLSAgICAgICAgICAgIHB1c2hQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIoMHgxMDAwMCksIHN1cHBsZW1lbnRhcnlQbGFuZXNCYXNlKTsKICAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDB4ZDgwMCksIGxlYWRpbmdTdXJyb2dhdGVUYWcpOwogICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHhkYzAwKSwgdHJhaWxpbmdTdXJyb2dhdGVUYWcpOwpA
QCAtMzgwMyw4ICszODA1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBwb3AoWDg2
UmVnaXN0ZXJzOjplYngpOwogICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwogI2VsaWYg
Q1BVKEFSTTY0KQotICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykKLSAgICAgICAg
ICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisgICAgICAg
IC8vIERvIG5vdGhpbmcKICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBwb3AoQVJNUmVn
aXN0ZXJzOjpyOCk7CiAgICAgICAgIHBvcChBUk1SZWdpc3RlcnM6OnI2KTsKQEAgLTM4MTMsNyAr
MzgxNCwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbGlmIENQVShNSVBTKQogICAgICAgICAvLyBE
byBub3RoaW5nCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJU
YWc+KCZ2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpKSwgcmVnVDApOworICAgICAgICBmYXJKdW1wKHJl
Z1QwLCBPcGVyYXRpb25QdHJUYWcpOworI2Vsc2UKICAgICAgICAgcmV0KCk7CisjZW5kaWYKICAg
ICB9CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA2NjQy
OGUwNjYzZjMzMjA5MTc3ODFkYmI5ZDBjNzMwZDJiNmQ2ODViLi4xNWI3YmQ2YTI2ZmY2ZTRiMDAx
MjEyOTg5ZThmZGNlZWE1YTRiOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
CkBAIC03Niw2ICs3Niw5IEBAIGNsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlciB7CiAjZW5kaWYK
IH07CiAKK2V4dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29u
c3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0
cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCog
Y29kZVB0cik7CitleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOwor
CiBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShZYXJyQ29kZUJsb2NrKTsKQEAgLTEwOSwyNSArMTEyLDQx
IEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3Qg
TENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1
dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaGFzOEJpdENvZGUoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4g
TWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0
LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFycjhCaXRQdHJUYWcsIFlhcnJFbnRy
eVB0clRhZz4obV9yZWY4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAg
ICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlOCwg
WWFycjhCaXRQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQs
IHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9
CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRl
ciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZSgp
KTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9Z
YXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsICZtYXRjaGluZ0NvbnRleHQsIHJl
dGFnQ29kZVB0cjxZYXJyMTZCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWYxNi5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1f
cmVmMTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBv
dXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1
bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBs
ZW5ndGgsIG51bGxwdHIsICZtYXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50
YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHk4LCBZYXJyTWF0Y2hPbmx5OEJpdFB0
clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3Rh
cnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAK
ICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lm
IENQVShBUk02NEUpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklU
KGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0Nv
ZGVQdHI8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fbWF0Y2hP
bmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1
cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHkxNiwg
WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0
KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oIGIvU291cmNlL1dURi93dGYvT1NBbGxv
Y2F0b3IuaAppbmRleCA3NzEzNjJiOTJhMmU1MjI5Mzk4NGUxMTY1MWJkMmE5MzkzZDk4M2EyLi4y
Njg4YTRlZmRmODE3ZGI3YWY2NjY5ODc1ZGYyM2E3OTg5MzZhYTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9y
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgT1NBbGxvY2F0b3IgewogICAgIC8vIHJlbGVhc2VE
ZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBi
eSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJl
bnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLiByZXNlcnZlVW5jb21taXR0ZWQgcmV0dXJu
cyB0bwogICAgIC8vIHlvdSBtZW1vcnkgdGhhdCBpcyB6ZXJvZWQuCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVu
a25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNl
LCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93
blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJv
b2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxz
ZSk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRl
ZCh2b2lkKiwgc2l6ZV90KTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsg
dGhleSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNo
b3VsZApAQCAtNTUsMjcgKzU1LDI3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyBUaGVz
ZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGlu
IGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJl
IGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRp
b24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0
ZWQgc3RhdGUuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5k
Q29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVl
LCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxz
ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0
KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29s
IGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGlu
Y2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJl
bGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBo
b3dldmVyIHJhdGhlciB0aGFuCiAgICAgLy8gY29tbWl0dGluZy9kZWNvbW1pdHRpbmcgdGhlIGVu
dGlyZSByZWdpb24gYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFsbG93IGEgc3VicmVnaW9uIHRvIGJl
CiAgICAgLy8gc3BlY2lmaWVkLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCog
cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBV
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVB
bmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBV
bmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxz
ZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgYW4g
ZXhpc3RpbmcsIGNvbW1pdHRlZCBhbGxvY2F0aW9uLgogICAgIC8vIFRoZSBwcmlvciBhbGxvY2F0
aW9uIG11c3QgYmUgZnVsbHkgY29taXR0ZWQsIGFuZCB0aGUgbmV3IHNpemUgd2lsbCBhbHNvIGJl
IGZ1bGx5IGNvbW1pdHRlZC4KICAgICAvLyBUaGlzIGludGVyZmFjZSBpcyBwcm92aWRlZCBzaW5j
ZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gb3B0aW1pemUgdGhpcyBvcGVyYXRpb24gb24gc29tZSBw
bGF0Zm9ybXMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgVCogcmVhbGxv
Y2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9
IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZh
bHNlKTsKKyAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNp
emUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9
IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFs
c2UpOwogCiAgICAgLy8gSGludCB0byB0aGUgT1MgdGhhdCBhbiBhZGRyZXNzIHJhbmdlIGlzIG5v
dCBleHBlY3RlZCB0byBiZSBhY2Nlc3NlZCBhbnl0aW1lIHNvb24uCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKHZvaWQqLCBzaXplX3Qp
OwogfTsKIAotaW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUpCitpbmxpbmUgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVB
bmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgdXNh
Z2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkK
IHsKLSAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVTaXplLCB1c2Fn
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIGJhc2UgPSByZXNlcnZlVW5jb21t
aXR0ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVu
YWJsZWQpOwogICAgIGNvbW1pdChiYXNlLCBjb21taXRTaXplLCB3cml0YWJsZSwgZXhlY3V0YWJs
ZSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC04Niw5ICs4Niw5IEBAIGlubGluZSB2b2lkIE9T
QWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogcmVsZWFzZUJhc2UsIHNpemVfdCBy
ZWxlYXNlU2l6CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogT1NBbGxvY2F0
b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQoVCogb2xkQmFzZSwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQor
aW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNp
emVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
IGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBuZXdC
YXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUpOworICAgIHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZlQW5kQ29tbWl0KG5ld1NpemUsIHVzYWdl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIG1lbWNweShuZXdC
YXNlLCBvbGRCYXNlLCBzdGQ6Om1pbihvbGRTaXplLCBuZXdTaXplKSk7CiAgICAgZGVjb21taXRB
bmRSZWxlYXNlKG9sZEJhc2UsIG9sZFNpemUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
bmV3QmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCBi
L1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCmluZGV4IGEyYWVlODg0ZTk4NjRjZDkz
MjFhNmI0OTRlOWU2OTg4MjQ0MzEwMzAuLjQ5NGJmMDVlMDAxNzE1Mzg1MWViMTBhNTUzM2MyMmZj
NjVjYjc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCkBAIC01NSwxMiArNTUsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxv
Y2sgewogcHVibGljOgotICAgIFBhZ2VSZXNlcnZhdGlvbigpCi0gICAgICAgIDogbV9jb21taXR0
ZWQoMCkKLSAgICAgICAgLCBtX3dyaXRhYmxlKGZhbHNlKQotICAgICAgICAsIG1fZXhlY3V0YWJs
ZShmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFBhZ2VSZXNlcnZhdGlvbigpID0gZGVmYXVsdDsK
IAogICAgIHVzaW5nIFBhZ2VCbG9jazo6YmFzZTsKICAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7
CkBAIC05MywyMiArODgsMjIgQEAgY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdl
QmxvY2sgewogICAgICAgICByZXR1cm4gbV9jb21taXR0ZWQ7CiAgICAgfQogCi0gICAgc3RhdGlj
IFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UpCisgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNl
cnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBmYWxzZSk7CisgICAgICAgIHJldHVy
biBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBmYWxzZSksIHNpemUs
IHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpOwogICAgIH0KICAg
ICAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXpl
X3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25V
c2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAg
IHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXpl
LCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2Fn
ZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNp
emUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVj
dXRhYmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpOworICAgICAg
ICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQo
c2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENh
Z2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFi
bGVkLCB0cnVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVB
bmRDb21taXRXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVz
YWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2
ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJu
IFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFn
ZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdy
aXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlv
bihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVz
YWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpLCBzaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpOwogICAgIH0KIAogICAg
IHZvaWQgZGVhbGxvY2F0ZSgpCkBAIC0xMjcsNyArMTIyLDcgQEAgY2xhc3MgUGFnZVJlc2VydmF0
aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQYWdlUmVz
ZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhl
Y3V0YWJsZSwgYm9vbCBoYXNHdWFyZFBhZ2VzKQorICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBi
YXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBi
b29sIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUsIGhhc0d1
YXJkUGFnZXMpCiAgICAgICAgICwgbV9jb21taXR0ZWQoMCkKICAgICAgICAgLCBtX3dyaXRhYmxl
KHdyaXRhYmxlKQpAQCAtMTM1LDkgKzEzMCw5IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHBy
aXZhdGUgUGFnZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgc2l6ZV90IG1fY29tbWl0dGVk
OwotICAgIGJvb2wgbV93cml0YWJsZTsKLSAgICBib29sIG1fZXhlY3V0YWJsZTsKKyAgICBzaXpl
X3QgbV9jb21taXR0ZWQgeyAwIH07CisgICAgYm9vbCBtX3dyaXRhYmxlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fZXhlY3V0YWJsZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaAppbmRleCBlMjIyOTg3NWI0NzdiMWM2YmFiYmM1ZmVkZDk3Y2E1NzI5MWQzYzIzLi5lYmVk
Njg2OTIyYjZmMGYwYmIyMDg3Y2Y1NDZhMTg4MDQyOGNkYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgKQEAgLTg4NCwxMCArODg0LDEwIEBACiAjZXJyb3IgIkVOQUJMRShXSExTTF9DT01QSUxF
UikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgJiYg
Q1BVKEFERFJFU1M2NCkKLSNkZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjaWYgT1MoREFSV0lO
KSAmJiBFTkFCTEUoSklUKSAmJiAoKFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIENQVShBUk02
NEUpKSkKKyNkZWZpbmUgRU5BQkxFX0pJVF9DQUdFIDEKICNlbmRpZgogCi0jaWYgT1MoREFSV0lO
KSAmJiBFTkFCTEUoSklUKSAmJiBBU1NFUlRfRU5BQkxFRAorI2lmIE9TKERBUldJTikgJiYgQ1BV
KEFERFJFU1M2NCkgJiYgRU5BQkxFKEpJVCkgJiYgKEVOQUJMRShKSVRfQ0FHRSkgfHwgQVNTRVJU
X0VOQUJMRUQpCiAjZGVmaW5lIEVOQUJMRV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCAyMmY0NjJiMmE2NGRhYmY4YzA4NDlhOTIwZGVhYmQ5
YTFjMWU1YmUyLi5mY2U5ZWRhMTMzYzliYjMxNjcwZTMyZTlkZjNhMDdhNGEyZGMzOGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlLmgKQEAgLTMwOCwzICszMDgsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEw
MDAwKQogI2RlZmluZSBVU0VfQ1RGT05UR0VUQURWQU5DRVNfV09SS0FST1VORCAxCiAjZW5kaWYK
KworI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgVVNFX0pVTVBfSVNM
QU5EUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oIGIvU291
cmNlL1dURi93dGYvUHRyVGFnLmgKaW5kZXggNWE0MjE3MTExZDVmYTkxMjE3NjBhMjQyMWUwMjBi
NWYxZGViNzhiYy4uYWM5MmVjMzE5NGRmYWM4NGMxNTNmYjY2ZmFmZWVhM2NlOTYwNGY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUHRyVGFnLmgKKysrIGIvU291cmNlL1dURi93dGYvUHRy
VGFnLmgKQEAgLTM0NCw2ICszNDQsNyBAQCBib29sIGlzVGFnZ2VkV2l0aChQdHJUeXBlIHZhbHVl
KQogdGVtcGxhdGU8UHRyVGFnIHRhZywgdHlwZW5hbWUgUHRyVHlwZT4KIHZvaWQgYXNzZXJ0SXNU
YWdnZWRXaXRoKFB0clR5cGUgdmFsdWUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAg
ICBXVEZfUFRSVEFHX0FTU0VSVChQdHJUYWdBY3Rpb246OkRlYnVnQXNzZXJ0LCB2YWx1ZSwgdGFn
LCBpc1RhZ2dlZFdpdGg8dGFnPih2YWx1ZSkpOwogfQogCkBAIC00NDksMjAgKzQ1MCw2IEBAIGlu
bGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IG9sZExlbmd0aCwgc2l6ZV90IG5l
d0xlbmd0aCkKICAgICByZXR1cm4gcHRyYXV0aF9hdXRoX2FuZF9yZXNpZ24ocHRyLCBwdHJhdXRo
X2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRMZW5ndGgsIHB0cmF1dGhfa2V5X3Byb2Nl
c3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFB0
clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENh
bGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQo
cHRyKTsKLSAgICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVudGljYXRlZChwdHIsIHB0cmF1
dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNr
UG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotaW5saW5lIFB0clR5
cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4g
X19idWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50
X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCiB0ZW1wbGF0
ZSA8UHRyVGFnIHRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJ
bnRUeXBlIHB0ckludCkKIHsKQEAgLTUyMCwxMiArNTA3LDYgQEAgaW5saW5lIFQqIHJldGFnQXJy
YXlQdHIoVCogcHRyLCBzaXplX3QsIHNpemVfdCkKICAgICByZXR1cm4gcHRyOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0
aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVy
biBwdHI7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5
cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQogdGVtcGxhdGUgPFB0clRhZywgdHlwZW5hbWUg
SW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTU3
Miw5ICs1NTMsNyBAQCB1c2luZyBXVEY6OnJldGFnQXJyYXlQdHI7CiB1c2luZyBXVEY6OnJlbW92
ZUFycmF5UHRyVGFnOwogCiB1c2luZyBXVEY6OnRhZ0NvZGVQdHI7Ci11c2luZyBXVEY6OnRhZ0Nv
ZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6dW50YWdDb2RlUHRy
OwotdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVz
aW5nIFdURjo6cmV0YWdDb2RlUHRyOwogdXNpbmcgV1RGOjpyZW1vdmVDb2RlUHRyVGFnOwogdXNp
bmcgV1RGOjp0YWdDRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9P
U0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9T
SVguY3BwCmluZGV4IDQ0NTQwNTljNTE1ZDJhNDEyYjQzMmQwNzE0NmNmNmYwMTFkNDc2MGIuLjZj
ZWZkMmVlMmQzMTA1YzJkNDA0ODVmNjk2NWZlYmE4ODQ1YjQzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBAIC0zMSwxNCArMzEsMjcgQEAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAorI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9u
cy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdFKQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUg
TUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisjZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5l
IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
X1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUo
SklUX0NBR0UpCisKIG5hbWVzcGFjZSBXVEYgewogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0FsbG9jYXRv
cjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMpCiB7CiAjaWYgT1MoTElOVVgpCiAgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsK
ICAgICBVTlVTRURfUEFSQU0od3JpdGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxl
KTsKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShp
bmNsdWRlc0d1YXJkUGFnZXMpOwogCiAgICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRlcywg
UFJPVF9OT05FLCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDAp
OwpAQCAtNDYsNyArNTksNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVk
KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgICAgIENSQVNI
KCk7CiAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBNQURWX0RPTlRORUVEKTsKICNlbHNlCi0g
ICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBpbmNsdWRlc0d1YXJkUGFnZXMpOworICAgIHZvaWQqIHJlc3VsdCA9IHJl
c2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2Fn
ZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0Up
CiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAvLyBUbyBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0
aGVuIGNvbW1pdCIgbW9kZWwsIHdlIGhhdmUgdG8gaW5pdGlhbGx5IGRlY29tbWl0LgpAQCAtNTks
NyArNzIsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBi
eXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2Fn
ZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3Vh
cmRQYWdlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRl
cywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRD
YWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAgICAgLy8gQWxsIFBPU0lY
IHJlc2VydmF0aW9ucyBzdGFydCBvdXQgbG9naWNhbGx5IGNvbW1pdHRlZC4KICAgICBpbnQgcHJv
dGVjdGlvbiA9IFBST1RfUkVBRDsKQEAgLTcwLDggKzgzLDE0IEBAIHZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFi
bGUsIGJvCiAKICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9OOwogI2lmIE9T
KERBUldJTikKLSAgICBpZiAoZXhlY3V0YWJsZSkKLSAgICAgICAgZmxhZ3MgfD0gTUFQX0pJVDsK
KyAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICBpZiAoaml0Q2FnZUVuYWJsZWQpCisgICAg
ICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0U7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzIHw9IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQ7
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogI2VuZGlm
CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxv
Y2F0b3JXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcAppbmRl
eCA5ZDZjMGFhNzQxMTM2Y2M4YTg0NmQwNDEyYTkyMWJkYTJhYzM4YjQ3Li42ZDUyYzY2MmRmMDZm
OTQ4MWE5MzM1YTdlZDJiNDUxNDM2NjQ2NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vT1NBbGxvY2F0b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRv
cldpbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGluZSBEV09SRCBwcm90ZWN0aW9u
KGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKICAgICAgICAgKHdyaXRhYmxlID8gUEFH
RV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJl
c2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29s
IGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVk
KHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0
ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAg
aWYgKCFyZXN1bHQpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZl
VW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21t
aXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBV
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBib29sKQogewogICAg
IHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYyhudWxscHRyLCBieXRlcywgTUVNX1JFU0VSVkUg
fCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYg
KCFyZXN1bHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412500</attachid>
            <date>2020-10-27 19:50:07 -0700</date>
            <delta_ts>2020-10-28 15:06:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201027195006.patch</filename>
            <type>text/plain</type>
            <size>172492</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Mjk4YjVkYWI3NzI1NzE0MjkxNWM4NDU1ZDdiYmIzYTBjYThhZTg2Li4wYWFjNzY1YTVjYWU2MTAx
ZDQ4ODM1NzI1YTdmNTcyZTJlNmYxMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMjAtMTAtMjcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KToKKyAgICAgICAg
KiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpT
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRy
eU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRyeUdh
dGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dW50
YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5l
VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
bGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29u
ZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAgICAgICAoSlNDOjp0
YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2Fs
bGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6
dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToK
KyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6
Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21T
bG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorCiAyMDIwLTEwLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGNvbW1hbmQgbGluZSBBUEkgc2hvdWxkIGJlIGV4
cG9zZWQgdG8gYnJlYWtwb2ludCBjb25kaXRpb25zL2FjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGEwNGYwNTIwYTcx
ZGRjNDc3NzE5YTI3ZjE4YzE3NjU3ZGJlM2ZiMy4uNjI2MDU2MmY5MTg4OTQ2NDZiYjE2NDE0N2M2
OGQ4M2I4NTE5MzA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0xMC0yNyAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL09TQWxsb2NhdG9yLmg6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5k
Q29tbWl0KToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQp
OgorICAgICAgICAqIHd0Zi9QYWdlUmVzZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJl
c2VydmF0aW9uOjpyZXNlcnZlKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2Vy
dmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlv
bjo6UGFnZVJlc2VydmF0aW9uKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAg
ICAgIChXVEY6OmFzc2VydElzVGFnZ2VkV2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJX
aXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFn
Q29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2
ZUFuZENvbW1pdCk6CisgICAgICAgICogd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAg
ICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RG
OjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisKIDIwMjAtMTAtMTUgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2lnbiBNYWNyb0Fzc2VtYmxl
cjo6anVtcHNUb0xpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlM2Q4
YWIwYTQ3MDk2ZDBkMTEzZTc4M2FkZDE1NDI4ZjU3ODRjMjVhLi5lNzE2YzYxOTllMDk5ZTE2NjEz
NDdiNDI5ZDViNzJiYWJmYzZlMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC04NjcsNiArODY3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKICAgICBydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaAogICAgIHJ1bnRpbWUvRnV6emVyQWdlbnQuaAorICAgIHJ1bnRpbWUv
R2F0ZS5oCiAgICAgcnVudGltZS9HZW5lcmljT2Zmc2V0LmgKICAgICBydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDNlN2UxY2IyYTlhZGNkOGQ4ZmNm
ZGVkNjUwNGY0YTY4NjJiYWE4OS4uY2JiOTgxNjFjYmMzODE5MjBiZDhmNTZlODBhNmRjOTllYjUw
MTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NTMsNiArMTg1Myw3IEBA
CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZD
Qzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkVEQ0U0
MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlBMCAvKiBH
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzcx
MTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9y
bWF0SW5saW5lcy5oICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBBMjM5MEQ5M0Iw
MDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oICov
OyB9OwpAQCAtNTA2MSw2ICs1MDYyLDcgQEAKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8q
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MjgwLDYgKzcyODIsNyBAQAogCQkJCUUzM0E5NDkyMjI1NTMyMjkwMEQ0
MkIwNiAvKiBGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFQ0ZBRDM1MjM3MkRBQTcwMDI5MTU5OSAv
KiBGdXp6ZXJQcmVkaWN0aW9ucy5jcHAgKi8sCiAJCQkJQ0VDRkFEMzQyMzcyREFBNzAwMjkxNTk5
IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8sCisJCQkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEw
IC8qIEdhdGUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtOTcw
MSw2ICs5NzA0LDcgQEAKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzQTk0OTcyMjU1MzIzMzAwRDQyQjA2IC8q
IEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNGQUQzNjIzNzJEQUQwMDAyOTE1
OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzExOTkyMjUz
RkE4N0YwMEJBNjlBMCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYzRDE4Q0E1
QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0pJVE9wZXJhdGlvbkxpc3QuY3BwCmluZGV4IGIzY2UxNzc5MmQwMTY3ZjRlYzdiZWNjYTRmZGU4
NWM0NWNiYjEwYjAuLmU0ZjI2YWI0NjZlMmZiNTA1NjcwMjg5MmVlM2FiYWM3NjViNzdkMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25M
aXN0LmNwcApAQCAtMjYsNiArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25MaXN0LmgiCiAKKyNpbmNsdWRlICJHYXRlLmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisj
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgSlNDIHsKIAogTGF6eU5ldmVyRGVzdHJveWVkPEpJVE9wZXJhdGlvbkxpc3Q+IGpp
dE9wZXJhdGlvbkxpc3Q7CkBAIC00NSwxOCArNTMsMjIgQEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0
Ojppbml0aWFsaXplKCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQogc3Rh
dGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhhc2hNYXA8
dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWlu
dHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3Qg
dWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBj
dXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgewotICAg
ICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxIb3N0RnVu
Y3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgIH0KKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBKU0NfSklUX0NBR0VEX1BPSU5URVJfUkVHSVNUUkFU
SU9OKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9yIChjb25zdCB1aW50cHRyX3Qq
IGN1cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytj
dXJyZW50KSB7Ci0gICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdp
c2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKLSAgICAgICAgaWYgKGNvZGVQdHIpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQ
dHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29kZVB0cikpOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKyNlbmRpZgorICAgIGlmIGNvbnN0ZXhwciAoQVNTRVJUX0VOQUJM
RUQpIHsKKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdpbkhvc3Q7
IGN1cnJlbnQgIT0gZW5kSG9zdDsgKytjdXJyZW50KSB7CisgICAgICAgICAgICB2b2lkKiBjb2Rl
UHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Cisg
ICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAgICBtYXAuYWRkKGNvZGVQdHIs
IFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdp
bk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytjdXJyZW50KSB7CisgICAg
ICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCpjdXJyZW50KSk7CisgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8T3BlcmF0aW9uUHRy
VGFnPihjb2RlUHRyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03Myw2ICs4NSw1NiBAQCB2
b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlKCkK
ICNlbmRpZgogfQogCit2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkph
dmFTY3JpcHRDb3JlRm9yTExJbnQoKQoreworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElE
QVRJT04pCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10geworCisjZGVmaW5lIExMSU5UX09QKG5hbWUpIFwKKyAgICBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4obmFtZSkpLCBcCisgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldFdp
ZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lKSksCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUs
IC4uLikgXAorICAgIExMSU5UX09QKG5hbWUjI19yZXR1cm5fbG9jYXRpb24pCisKKyAgICAgICAg
Y29uc3QgdWludHB0cl90IG9wZXJhdGlvbnNbXSA9IHsKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKSwK
KyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlKSksCisgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpKSwKKworICAg
ICAgICAgICAgTExJTlRfT1Aob3BfY2F0Y2gpCisgICAgICAgICAgICBMTElOVF9PUChsbGludF9n
ZW5lcmljX3JldHVybl9wb2ludCkKKworICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2dldF9ieV9pZCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfdmFsKQorICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV9pZCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorCisgICAg
ICAgICAgICBKU0NfSlNfR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NBVElPTikKKyAgICAg
ICAgICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAg
ICAgIH07CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGFkZFBv
aW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVkT3BlcmF0aW9ucywgbnVsbHB0ciwg
bnVsbHB0ciwgb3BlcmF0aW9ucywgb3BlcmF0aW9ucyArIFdURl9BUlJBWV9MRU5HVEgob3BlcmF0
aW9ucykpOworI3VuZGVmIExMSU5UX1JFVFVSTl9MT0NBVElPTgorICAgIH0pOworI2VuZGlmCit9
CisKKwogdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihj
b25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRp
b25zKQogewogICAgIFVOVVNFRF9QQVJBTShiZWdpbkhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAppbmRleCAwOTg0OTNmNTBi
MmFkMzNjZDFkOTc1NzRhMjgzZTlmZjhiOTY4MzY5Li41YTQwZmY3YzhjZmFkNmI0MjAzNzczYmQy
NGFkNTU3YjRjZTQyNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaApAQCAtMzksMTIgKzM5LDE1IEBAIGNsYXNzIEpJVE9wZXJh
dGlvbkxpc3QgewogCiAgICAgdm9pZCogY29udGFpbnModm9pZCogcG9pbnRlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKLSAgICAgICAgICAgIHJl
dHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikp
OworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisgICAgICAgIHJldHVybiBt
X3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikpOworI2Vs
c2UKICAgICAgICAgcmV0dXJuIHBvaW50ZXI7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpOworICAgIHN0YXRpYyB2b2lk
IHBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKGNvbnN0
IHVpbnRwdHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhvc3QsIGNvbnN0IHVp
bnRwdHJfdCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVuZE9wZXJhdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDQ1YjRiM2I0Njk2ODU1MmQ3ZGFjOTc4OGFmZjZjZjBiNDNkYjI2
YzYuLjRjOWE5ZWJhNGI2NGY0MWMxMGU5NDRkZjI0MzhhNmZkZWExN2JhNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC0zMzkyLDYgKzMzOTIsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxl
ci5icih0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRh
cmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJyKGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJl
c3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAzOWVhMTUx
MTQ3NjFhMDBlMDAwNTAzMTAwYmU3NmJkZTQ0YTJmOGM0Li5kMTg3ZDY5MzBlNmZkOWY2NjgzNzk4
ZGEzMzljNWExMzZkMDM0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0zMiw2ICszMiw5IEBACiAjaW5j
bHVkZSAiQVJNNjRFQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJBUk02NC5oIgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRl
IDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xMTAsMjAgKzExMywyOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0
RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICBzdGF0aWMgY29uc3RleHByIFJl
Z2lzdGVySUQgSW52YWxpZEdQUiAgPSBzdGF0aWNfY2FzdDxSZWdpc3RlcklEPigtMSk7CiAKICAg
ICBlbnVtIGNsYXNzIENhbGxTaWduYXR1cmVUeXBlIHsKLSAgICAgICAgQ0Z1bmN0aW9uQ2FsbCwK
LSAgICAgICAgT3RoZXJDYWxsCisgICAgICAgIEpJVENhbGwsCisgICAgICAgIE5hdGl2ZUNhbGws
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSnVtcFNpZ25hdHVyZVR5cGUgeworICAgICAgICBK
SVRKdW1wLAorICAgICAgICBOYXRpdmVKdW1wLAogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxDYWxs
U2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsVHJ1c3RlZFB0
cihSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURf
UEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIHBvaW50ZXJMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVs
KCk7CiAgICAgICAgIG1vdmVXaXRoRml4ZWRXaWR0aChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBpbnZh
bGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0
dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFheihk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9DQUxMKHR5cGUsIGRhdGFUZW1wUmVnaXN0ZXIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYihkYXRhVGVtcFJlZ2lzdGVy
LCB0YWdHUFIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxl
ci5sYWJlbCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXJMYWJlbCwgQVJNNjRBc3Nl
bWJsZXI6OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNhbGxMYWJlbCwgcG9pbnRlckxhYmVs
KSA9PSBSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpOwpAQCAtMTMyLDUxICsxNDMsNTMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02
NCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcgdGFnKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpjYWxsKHRhZyk7Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFn
KQotICAgICAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpD
RnVuY3Rpb25DYWxsPigpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAm
JiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0
clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIEFS
TTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2ln
bmF0dXJlVHlwZTo6T3RoZXJDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIHJl
dHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4oQVJNNjRSZWdp
c3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVU
eXBlOjpOYXRpdmVDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhZ0dQUik7
CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZl
Q2FsbD4odGFnR1BSKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxDYWxsU2lnbmF0dXJlVHlwZSB0
eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikKICAgICB7CisgICAgICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKICAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwog
ICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9
PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJscmFheih0YXJnZXRHUFIpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0Nf
SklUX0NBR0VEX0NBTEwodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIodGFyZ2V0R1BSLCB0YWdHUFIp
OwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpOb25lKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQ
UiwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAg
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJnZXRHUFIsIHRhZyk7
Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4odGFyZ2V0R1BS
KTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRy
VGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBl
OjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lzdGVyczo6
bHIpOwotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhl
ckNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxl
ZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpKSVRDYWxsPih0YXJnZXRHUFIsIEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVy
ZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVn
aXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxT
aWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BS
LCB0YWdHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
Ci0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbChhZGRyZXNzLCB0
YWcpOwotCisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBO
b1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVn
aXN0ZXIsIHRhZyk7CiAgICAgfQpAQCAtMTk3LDkwICsyMTAsMTI5IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAgICAgQUxXQVlT
X0lOTElORSBKdW1wIGp1bXAoKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpqdW1wKCk7
IH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUHRyVGFnIHRhZykKKyAg
ICB0ZW1wbGF0ZTxKdW1wU2lnbmF0dXJlVHlwZSB0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBmYXJKdW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BS
ID0gSW52YWxpZEdQUikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICAg
ICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9GQVJfSlVNUCh0eXBlLCB0YXJnZXRHUFIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnR1BSKTsK
KyAgICB9CisKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRhZyB0
YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAodGFyZ2V0LCB0YWcpOworICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAKICAg
ICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBSZWdpc3RlcklE
IGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAg
ICAgZmFySnVtcCh0YXJnZXQsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBl
KHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lz
dGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAg
IHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0YWcpCisgICAgdm9p
ZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXQpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdl
dCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZl
cnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsK
KyAgICAgICAgbW92ZSh0YXJnZXQsIHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBT
aWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0
aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFy
SnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lz
dGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIGlmICh0
YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6
ZmFySnVtcChhZGRyZXNzLCB0YWcpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQ
Uik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4o
dGFyZ2V0R1BSLCB0YWdHUFIpOworICAgIH0KIAotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyk7CisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCB0YWdHUFIpCisgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBk
aXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQo
YWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0
eUdQUik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRh
cmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwotICAgICAgICBt
X2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVy
PEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQog
Ci0gICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZv
aWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAg
ICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIpOworICAgICAgICBsb2FkNjQo
QWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8
SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAK
LSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVt
cChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgeworICAgICAgICBBU1NFUlQodGFn
ICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQo
Y2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIFJlZ2lz
dGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFy
Z2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAg
ICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAg
ICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRH
UFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdp
c3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlH
UFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCB0YWcpCisgICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFn
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0
YXJnZXRHUFIpOworICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1l
bW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVz
cywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAg
ICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIs
IGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3Rl
cjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIp
OwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUHRy
VGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOwotCisg
ICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7
CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbG9h
ZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIGRpdmVyc2l0eUdQUik7Ci0gICAgfQotCi0gICAgdm9pZCBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OwotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbG9hZDY0KEFkZHJl
c3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIHRhZyk7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVl
VHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBl
OjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBy
ZXQoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAg
IEpTQ19KSVRfQ0FHRURfUkVUKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5yZXRhYigpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMGM3NTk3
YmFmNjQyNjY0OTk2MzRhNTk4MDE3YmZiNjRjMzE2YTU2NC4uMmM5YjhmZjgwOTUxNmViMDc3NDRi
ZGZmODI2NzdhMGM2YzRmZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTE3MTksNiArMTcxOSwxMiBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
LmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1v
cnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBm
YXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGU2M2Fi
NDc1NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMuLmFkYWQ1NGNiMDI2MTdkMTE5NzFi
YjI0NWUwYTAzZjRkOGRhZGZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjAwNCw2ICsyMDA0LDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICB2b2lk
IGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1v
dmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgfQorCiAg
ICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKICAgICAgICAg
bV9maXhlZFdpZHRoID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAyOGZhZTJlNzJmMjU2
NTdlNjEzMzA1ZjIwMDNkZmNiZWE1ZWVjYTlhLi43NmRkYjU3Njk0ZGEyNGY0YWU4MDViMDQ5M2I0
MmE4ZTY0MmYzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yNzUwLDYgKzI3NTAsMTIgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX3IodGFyZ2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAg
ICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICAvLyBBZGRy
ZXNzIGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0
bwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAyZmVk
MTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxLi4wNTdiMzA3OGMyYjdlODY5Mzkz
MmI5MDVmMTk0ZDNmNzdiNDY0MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0MDMsNiArMTQwMyw3IEBACiBvcCA6bGxpbnRfaW50
ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9leGl0
X3RyYW1wb2xpbmUKK29wIDpub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZQogb3AgOmZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpsbGludF9nZXRfaG9zdF9jYWxsX3JldHVy
bl92YWx1ZQogb3AgOmxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24KQEAgLTE0MTksNiAr
MTQyMCw0MCBAQAogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscwogCitvcCA6b3BfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbgorb3Ag
Om9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX29wZW5f
c2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9uZXh0X3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6b3BfdGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2Fs
bF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCisKK29w
IDpqc190cmFtcG9saW5lX29wX2NhbGwKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbAor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVy
YXRvcl9uZXh0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJh
cmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93CitvcCA6
anNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRl
cmF0b3JfbmV4dF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3cK
K29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3Vu
dGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a190YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2tfdW50YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbAorb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rf
bm9fdGxzCisKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKIGJlZ2luX3NlY3Rpb24gOldh
c20sCkBAIC0xNDMzLDYgKzE0NjgsMTEgQEAKIAogb3AgOnRocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmUKIAorb3AgOmNhbGxfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9ub190bHNfcmV0
dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9yZXR1cm5fbG9jYXRpb24KK29wIDpjYWxs
X2luZGlyZWN0X25vX3Rsc19yZXR1cm5fbG9jYXRpb24KKwogIyBGSVhNRTogV2FzbSBhbmQgSlMg
TExJbnQgc2hvdWxkIHNoYXJlIGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxNTAzYmYwMzg0N2E2NDg1MzM5MTEyNzc2OGQ3
MDI1MGU4OWE1MzguLmIwNjE1MGZjY2Y0YzdkZGE1ZTUxY2M1ZmFkNjNjZDMxMWQxODIzNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTMy
MCw2ICszMjAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9w
Y29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgbGxpbnRfaGFu
ZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRf
dHJhbXBvbGluZToKKyAgICBjYXNlIG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNh
c2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoKICAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1
cm5fbG9jYXRpb246CkBAIC0zMzEsOCArMzMyLDQwIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3JldHVybl9s
b2NhdGlvbjoKKyAgICBjYXNlIG9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRp
b246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBj
YXNlIG9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWU6CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RsczoK
KyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVf
b3BfdGFpbF9jYWxsOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Q6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHQ6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfc2xv
dzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2NvbnN0cnVjdF9zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9v
cF9jYWxsX3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfZXZhbF9zbG93Ogor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2l0ZXJhdG9yX29wZW5fc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZzoKKyAg
ICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja191bnRhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6CisgICAgY2Fz
ZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorICAgIGNhc2Ugd2FzbV90cmFt
cG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RD
b21waWxlOwogICAgIH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCBkZDY2NmZhYTgzZTgzNTA5ZTY1YjA3NTU3NjIyZjA4YTk0OTQyMWJkLi5hYzRiOGM1NzNiODI2
YjZhMzBjNjNmZWRiNDI1OGI1YWZiZWI1Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xMzgsMjEgKzEz
OCwyMSBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgZG9uZUFkanVzdGluZy5saW5rKCZqaXQpOwog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMo
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxs
Qnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZCwg
Ym9vbCYgY2FsbGVySXNMTEludCkKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhp
dFB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNh
bGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIHRydWVDYWxsZXJDYWxsS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCkKIHsKICAgICBjYWxs
ZXJJc0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGJhc2VsaW5lQ29k
ZUJsb2NrRm9yQ2FsbGVyLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazsK
IAogICAgIGlmIChjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAgICAgICAgaWYg
KCFjYWxsZXJJc0xMSW50KQogICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIt
Pm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBMTEludDo6Z2V0Q29k
ZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxs
X3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJv
bUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgIH0KIAotICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0OwogCiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+
aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7Ci0jZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQorI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgTExJbnQ6
OnJldHVybkxvY2F0aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbEluc3RydWN0
aW9uLndpZHRoKCkpLmNvZGUoKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5k
KSB7CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CkBAIC0yMDksNyArMjA5
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBD
KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBiYXNlbGluZUNv
ZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChjYWxsQnl0
ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwog
Ci0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpOworICAgICAgICAgICAganVtcFRhcmdldCA9
IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0YWdnZWQ8T1NSRXhpdFB0clRh
Zz4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyNiwxMyArMjI2LDEz
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgLy8gNi4gKEIpIGdl
dHMgT1NSIGV4aXQuIChCKSBhdHRlbXB0cyB0byBzZWFyY2ggZm9yIFN0cnVjdHVyZVN0dWJJbmZv
IGluIChBKSBmb3IgUHV0QnlJZCAob3JpZ2luYWxseSwgcHV0X2J5X3ZhbCkuIEJ1dCBpdCBkb2Vz
IG5vdCBleGlzdCBzaW5jZSAoQSkncyBKSVREYXRhIGlzIGNsZWFyZWQgb25jZS4KICAgICAgICAg
ICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVy
LT5maW5kQnlWYWxJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChieVZhbEluZm8pOwotICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBieVZhbEluZm8tPmRvbmVUYXJnZXQucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsK
KyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFn
Z2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJ
bmRleCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8pOwotICAgICAgICAg
ICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24ucmV0YWdnZWQ8SlNFbnRyeVB0
clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9u
LnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgYXV0byBjYWxs
Qnl0ZWNvZGVJbmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVy
UmV0dXJuUEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0
cnVlQ2FsbGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOworICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGp1bXBUYXJnZXQgPSBjYWxsZXJSZXR1cm5QQyhi
YXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgY2FsbEJ5dGVjb2RlSW5kZXgsIHRydWVDYWxsZXJD
YWxsS2luZCwgY2FsbGVySXNMTEludCk7CiAKICAgICAgICAgICAgIGlmICh0cnVlQ2FsbGVyLT5p
bmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCkBAIC00MDIs
MTEgKzQwMiwxMSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICBpZiAoZXhpdFRvTExJbnQp
IHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOwogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9u
ID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0
cigpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGlu
YXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBkZXN0
aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAg
ICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVj
a3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBM
TEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CiAgICAgICAg
IGVsc2UgCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpTRW50
cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9
IExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogCiAgICAgICAg
IGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86
OnJlZ1QyKTsKQEAgLTQxNiwyMiArNDE2LDIyIEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhp
dC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRhdGFUYWJsZUdQUik7
CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tG
b3JFeGl0LT5pbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwYkdQ
Uik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwY0dQUik7Ci0gICAgICAgIGp1bXBU
YXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvZGVCbG9ja0ZvckV4aXQtPm1faGFzTGlu
a2VkT1NSRXhpdCA9IHRydWU7CiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBleGl0SW5kZXggPSBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBkZXN0aW5hdGlvbjsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoZXhpdElu
ZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGlu
ZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChjb2Rl
QmxvY2tGb3JFeGl0LT5ieXRlY29kZUluZGV4Rm9yRXhpdChleGl0SW5kZXgpID09IGV4aXRJbmRl
eCk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVN
YXAoKS5maW5kKGV4aXRJbmRleCk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9j
a0ZvckV4aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCkucmV0YWdnZWQ8T1NSRXhpdFB0
clRhZz4oKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbik7CiAKLSAg
ICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQogCiAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihjb2RlQmxvY2tGb3JF
eGl0KSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQXNz
ZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRleCAzOTExNGVh
Njc3MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkLi5kYmEwZmUzMjJiZjg4MWM5NWMyMmRi
ODUwNjE2MjQyMDRhNmFhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiwgQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwotTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50
KTsKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUq
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGZmOWE4YWZkMDU5NDVjMjliOTc4
YzFmZjNjZjk3YTIyMmJiNGI5MjEuLjliZTY0YmJkZjBmMjhmZDU3NGE0MjU4ODRjZDUzNDFkZjFh
NjY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtNDgsNiArNDgsMTggQEAKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNp
bmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUo
SklUX0NBR0UpCisjaWYgT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
IE1BUF9KSVQKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1B
UF9KSVQKKyNlbHNlIC8vIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VCAwCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCisjZW5k
aWYgLy8gT1MoREFSV0lOKQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKwogZXh0ZXJuICJD
IiB7CiAgICAgLyogUm91dGluZSBtYWNoX3ZtX3JlbWFwICovCiAjaWZkZWYgbWlnX2V4dGVybmFs
CkBAIC0xMzksOCArMTUxLDggQEAgdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIAogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUgPSAxOwog
ICAgICAgICBjb25zdGV4cHIgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
IHwgUFJPVF9FWEVDOwotICAgICAgICBjb25zdGV4cHIgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiB8IE1BUF9KSVQ7CiAgICAgICAgIGNvbnN0ZXhwciBpbnQgZmQgPSBPU0FsbG9j
YXRvcjo6SlNKSVRDb2RlUGFnZXM7CisgICAgICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwg
TUFQX0FOT04gfCAoT3B0aW9uczo6dXNlSklUQ2FnZSgpID8gTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VF9XSVRIX0pJVF9DQUdFIDogTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCk7CiAgICAgICAgIHZvaWQq
IGFsbG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHByb3RlY3Rpb24sIGZsYWdzLCBmZCwg
MCk7CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVy
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbiAhPSBleGVjdXRhYmxlTWVtb3J5
QWxsb2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhhdmUgYWxsb2NhdGVkIGV4ZWN1dGFi
bGUgbWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4iKTsKQEAgLTMyNCw5ICszMzYsOSBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlvbiBpbml0aWFsaXplSklUUGFnZVJl
c2VydmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIEpJVCBjb2Rl
IGxvZ2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2RlIGlzIG5vdCByZWNvcmRlZCBjb3Jy
ZWN0bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgdXNlIGNvbW1pdHRl
ZCByZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVtcCBsb2dnaW5nLgogICAgICAgICBp
ZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAgICAgICAgICAgIHJldHVybiBQYWdl
UmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNp
emUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxF
LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRD
b21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENv
ZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBmYWxzZSk7CiAjZW5kaWYK
LSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJl
c2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BP
T0xfV1JJVEFCTEUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uID0gdHJ5Q3Jl
YXRlUGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAppbmRleCA3NGRhZTIyNmY1NDViN2FhYWYzNDc4NzQ0MzM2NDI3MDAxNWJkMGE0
Li44ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDYgKzQ2NSwxMCBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBY
ODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IFg4NlJlZ2lz
dGVyczo6ZWF4OworI2lmICFPUyhXSU5ET1dTKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHdhc21TY3JhdGNoR1BSMSA9IFg4NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCiAKICAgICAvLyBG
SVhNRTogSSBiZWxpZXZlIHRoYXQgYWxsIHVzZXMgb2YgdGhpcyBhcmUgZGVhZCBpbiB0aGUgc2Vu
c2UgdGhhdCBpdCBqdXN0IGNhdXNlcyB0aGUgc2NyYXRjaAogICAgIC8vIHJlZ2lzdGVyIGFsbG9j
YXRvciB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcmVnaXN0ZXIgYW5kIHBvdGVudGlhbGx5IHNwaWxs
IHRoaW5ncy4gSXQgd291bGQgYmUgYmV0dGVyCkBAIC02MzQsNyArNjM4LDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gQVJNNjRSZWdpc3Rl
cnM6OngyMjsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBV
c2VkIGJ5IEZUTCBvbmx5Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJN
NjRSZWdpc3RlcnM6OngyNTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyBudW1iZXJUYWcK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBBUk02NFJlZ2lzdGVyczo6eDI4
OyAvLyBub3RDZWxsTWFzawpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2
ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpp
cDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJNNjRS
ZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BS
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJl
Y3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJl
Y3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
CmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0NmU5
MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkK
IHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9j
YWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2Vt
Ymx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkp
OworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29kZUlu
ZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3MWRk
OTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5MjJk
NWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFn
VHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52
YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNoVG9T
YXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwotICAg
IGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0b3Jl
KHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29u
KFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAgICAg
ICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0YWcs
IHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7
CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAvLyBX
ZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1
dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggYmZh
NGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2ZDhj
ZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNsdWRl
ICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNfQVNT
RVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAot
CiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwyMiBA
QCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAogI2Vu
ZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2
b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFp
bENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpT
RW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0aW9u
SGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxMSW50
VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lmIEVO
QUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJM
RShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFw
LCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxpbnQu
b3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYgKzgz
LDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKworICAg
IEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJ
bnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFnKSBc
CisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAgICAg
IGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmso
cmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJ
bnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1
cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNvZGVS
ZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpz
X3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3Qo
TExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9s
aW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50Ojpn
ZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmln
LmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIp
XSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0g
d2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dBVEUp
CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNNX0dB
VEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVS
ZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJl
dGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0
aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChj
cmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBP
cGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7
IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAg
ICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFt
ZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01fR0FU
RV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChj
cmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3Bl
cmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQdHJU
YWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2Rl
UHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50
cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
Z2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCld
ID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAg
eworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6
dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2
bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9O
YXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46
OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlv
blB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGlu
ZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAgICBn
X2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWls
Q2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxl
QWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNj
Q29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2VwdGlv
bkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0dXJu
RnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZv
aWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZyb21M
TEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYuZ2V0
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRodW5r
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9IGVu
dHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RI
VU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0NvZGVS
ZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVj
dCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJh
dGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRhZ0Nv
ZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0
aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBcCisg
ICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50
OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUj
I190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6Z2V0
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNfdW50
YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdldCgp
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1bnRh
Z0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxl
ICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19U
SFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0ZTI3
MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMxZmVh
MjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0yMDQs
NiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bjb2Rl
V2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENP
REVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bj
b2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNv
ZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1P
cGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRyKFdh
c21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFnQ29k
ZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsK
K30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7Cisg
ICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUx
NihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcs
IHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+Ojpj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0clRh
ZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdpZGUz
MkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAgICBh
ZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOworICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sK
KyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29k
ZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNl
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4o
b3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3Rl
bXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRy
PHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJ
RCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8
UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihv
cGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1w
bGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vsc2UK
IEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2ZDI0
OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uYzFhMjhmMGE0OWU1MWM4NTRhZDM2
MWJlNWRiMGU4MTgzZTk0NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB2
b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBq
c1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
anNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQpOwor
ZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGluZShQ
dHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOworfQor
I2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2st
PnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lkIHNl
dEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGlj
IERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShlbnRy
eXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSksIGVu
dHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQ
cm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFy
ZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERp
cmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2Rl
OjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJl
Y3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnBy
ZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAg
ICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSht
YWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMgdm9p
ZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0
aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5l
KGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIElu
dHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwor
I2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNF
bnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFy
ZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYo
KmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENv
ZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
IGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1w
b2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5z
aWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNl
CiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpq
aXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVBy
b2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVK
SVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNU
cmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVu
aywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJl
ZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzQgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRy
eXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAgIHJl
dHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJu
X3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAg
ICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bj
b2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29kZVNp
emU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIHNldEVudHJ5cG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFjODQ4
NDFkYmZkOC4uMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0N2I4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKyNpbmNsdWRl
ICJPcGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw1ICs0Miw3IEBAIHZv
aWQgc2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3Vu
dEZvcihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBv
aW50RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBiYmExMjBhN2M1NTg1OGYzNzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhLi5hMzQ3YzYyMzlhY2Rm
ZDlmZTMwZDU4NGYwMDAzOGM0YjUwYjk2MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUgSlNW
YWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAgTExJ
TlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFn
PihjYWxsVGFyZ2V0KSksIChjYWxsRnJhbWUpKQorICAgIExMSU5UX1JFVFVSTl9UV08oKHJldGFn
Q29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQp
KSwgKGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3Qs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBKU0ds
b2JhbE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhp
bnRFeGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIgPj0g
T3B0aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxG
cmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6
OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAogICAg
IApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nv
bnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJh
cmdzPihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpP
YmplY3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVy
blR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50
KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KGJ5dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxG
cmFtZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+c2V0
UmV0dXJuUEMocmV0dXJuUG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgY2FsbGVlRnJh
bWUtPnNldFJldHVyblBDKHJldHVyblBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFtZS0+
c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2Fs
bF9ldmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTElu
dDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJp
Y1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJu
IGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNv
bW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRy
eXBvaW50KE9wY29kZVNpemU6OldpZGUxNikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwo
Y2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2Fs
bEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6
ZTo6V2lkZTMyKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQp
CkBAIC0yMjY1LDggKzIyNjUsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRj
aFRvTmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAgIGlm
IChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotICAgICAgICBhdXRvIG5leHRCeXRlY29kZSA9
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCpwYy5uZXh0KCkucHRyKCkpOwotICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgbmV4dEJ5dGVjb2RlLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
bmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggNzg1MzYwZjQ4NzYwNzFhZmQ2NGFkMWNm
ZTFiYThiZWE4MzhhYjNkMi4uYTYxNjI1ZGE4OTRmNDk4ZTk0MGJlYzE0NTJjNWU5ZTZlOTVmMjQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBAIC00
MCw2ICs0MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorI2RlZmluZSBKU0NfQU5OT1RBVEVfTExJ
TlRfSklUX09QRVJBVElPTihuYW1lKSBcCisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04o
X0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCisKKyNkZWZpbmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT05fV0lUSF9ERUNMQVJFKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIHZvaWQgbmFt
ZSh2b2lkKTsgXAorICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNu
YW1lLCBuYW1lKQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT04oaml0Q2FnZVB0ckdhdGVBZnRlcik7CisjZW5kaWYKK0pTQ19BTk5PVEFURV9M
TElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHQpOworSlNDX0FOTk9UQVRFX0xM
SU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlKTsKK0pTQ19BTk5PVEFURV9MTElOVF9K
SVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRF
X0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKTsKK0pTQ19BTk5P
VEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9U
QVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOwor
CisjZW5kaWYKKwogbmFtZXNwYWNlIExMSW50IHsKIAogLy8gVGhlc2UgdGh1bmtzIGFyZSBuZWNl
c3NhcnkgYmVjYXVzZSBvZiBuZWFyQ2FsbCB1c2VkIG9uIEpJVGVkIGNvZGUuCkBAIC01Miw3ICs3
NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0
OwogCi0gICAgYXNzZXJ0SXNUYWdnZWRXaXRoPEpTRW50cnlQdHJUYWc+KHRhcmdldCk7CisgICAg
YXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdh
c206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CkBAIC02
MCwxNiArODIsNTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKICAgICBDQ2FsbEhlbHBlcnM6
OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKICNlbmRpZgogICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gp
OwotICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5mYXJK
dW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyB0aHVuayIs
IHRodW5rS2luZCk7CiB9CiAKIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oT3Bjb2RlSUQgb3Bjb2Rl
SUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9w
Y29kZUlEKSwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQp
LCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisKKyAgICBMTEludENvZGUgdGFyZ2V0ID0gTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3Bl
cmF0aW9uUHRyVGFnPih0YXJnZXQpOworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIEND
YWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50
aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyNlbHNlCisgICAgQ0NhbGxIZWxwZXJzOjpS
ZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6cmVnVDA7CisjZW5kaWYKKyAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gpOworICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAi
TExJbnQgJXMganVtcCB0byBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChMTEludENvZGUgdGFyZ2V0LCBjb25zdCBjaGFy
ICp0aHVua0tpbmQpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIGFzc2VydElzVGFn
Z2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlvblB0clRhZyk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHJldHVybiBwb2ludCB0aHVu
ayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChP
cGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PHRhZz4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmsoKQpAQCAtNzcsNyArMTM2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICB9KTsKICAgICByZXR1cm4g
Y29kZVJlZjsKIH0KQEAgLTg3LDcgKzE0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29u
c3RydWN0IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtOTcsNyArMTU2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0
clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3Ig
Y2FsbCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEwNyw3ICsxNjYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssICJmdW5jdGlv
biBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25z
dHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsK
IH0KQEAgLTExNyw3ICsxNzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZXZhbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxs
aW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVm
OwogfQpAQCAtMTI3LDcgKzE4Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBwcm9ncmFtRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNF
bnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CisgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRy
eVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMzcsNyArMTk2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CiB9CkBAIC0xNDksOSArMjA4LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewog
ICAgICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdh
c21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1
bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxz
LCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQpAQCAtMjE3LDcgKzI3Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUg
c2l6ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0gewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJv
cF9jYXRjaCIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0K
QEAgLTIyNSw3ICsyODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bf
Y2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRX
aWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRj
aDE2IikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAgfQpAQCAt
MjMzLDcgKzI5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcF9jYXRj
aCksICJvcF9jYXRjaDMyIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUz
MkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMzIi
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0yNDIs
NiArMzAxLDI4NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2lu
dFRodW5rKE9wY29kZVNpemUgc2l6ZSkKK3sKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNl
IE9wY29kZVNpemU6Ok5hcnJvdzogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBj
b2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJU
YWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDE2Iikp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIGNhc2Ug
T3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSwg
ImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50MzIiKSk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgfQorfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpCit7Cisg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVybl9l
YXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQi
KSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0
ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUp
Cit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1Qz
LCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVy
KSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVy
YXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNtR2F0
ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUpCit7Cisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86Ondhc21TY3JhdGNo
R1BSMCwgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9p
bnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7CisgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIHdhc20gY2Fs
bCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFnKQoreworICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCB0
YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpCit7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2Fs
bEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3AgT1NSIGVudHJ5IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOworICAg
ICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOwor
CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJl
ZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZXhj
ZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5m
YXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKKworICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAg
ICAgIGppdC5yZXQoKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJvbUxMSW50IHRodW5r
IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikK
K3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUMyk7CisgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRSZWdpc3RlcnM6Omxy
KTsKKyAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBq
aXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ0YWcgdGh1bmsi
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50
YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFSTTY0UmVnaXN0
ZXJzOjpscik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50
ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkKK3sKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVycyBq
aXQ7CisgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFKGppdCk7CisgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJqaXRDYWdlUHRyIHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NS
RXhpdFB0clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+
IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihub3JtYWxfb3NyX2V4
aXRfdHJhbXBvbGluZSwgIm5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAg
IH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxP
U1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsICJjaGVja3BvaW50
X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVS
ZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50
T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNv
ZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0X2Zy
b21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1
cm5Mb2NhdGlvblRodW5rKE9wY29kZUlEIG9wY29kZUlELCBPcGNvZGVTaXplIHNpemUpCit7Cisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBcCisgICAgY2FzZSBuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uOiB7IFwKKyAgICAgICAgc3dpdGNoIChzaXplKSB7IFwKKyAgICAgICAgY2Fz
ZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwK
KyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRy
VGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbiksICAjbmFtZSAiX3JldHVybl9sb2NhdGlvbiB0aHVuayIpKTsgXAorICAg
ICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0g
XAorICAgICAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeyBcCisgICAgICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFn
Pj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBv
aW50PE9TUkV4aXRQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0
aW9uMTYgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4g
Y29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6
IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTMy
Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiks
ICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMzIgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBc
CisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBc
CisgICAgICAgIHJldHVybiB7IH07IFwKKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpCisgICAgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0
ZXJhdG9yX25leHQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCkKKyAg
ICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Z2V0X2J5X3ZhbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X2lkKQorICAg
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4
IDAzNjhjZTlhMmRhMDYwNGY0MzcyNDUyZWUxMmY4N2M0ZTYzOGRiMGQuLmE5MjJiMjU5OWI5YzYz
OTQ5YjU1YjNhMTRmNWI3NmM1ZWI1ZTYxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCkBAIC00MCw2ICs0MCwyMiBAQCBleHRlcm4gIkMiIHsKICAgICBFbmNv
ZGVkSlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsK
IH0KIAorI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCitleHRlcm4gIkMiIHsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQp
OworI2VuZGlmCisKKyAgICB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIodm9pZCk7
CisgICAgdm9pZCB2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIodm9pZCk7CisKKyAgICB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7Cisg
ICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2
b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tV
bnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7Cit9CisjZW5kaWYKKwogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHZtRW50cnlUb1dhc20odm9pZCogY29kZSwgVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogZnJhbWUpCiB7CiAgICAgYXV0byBjbG9iYmVyaXplVmFsaWRhdG9yID0gbWFrZVNjb3Bl
RXhpdChbJl0gewpAQCAtNTksMTEgKzc1LDMyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhP
cGNvZGVTaXplKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJS
ZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvd1RodW5rKCk7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25U
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSk7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCosIFB0clRh
ZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2Fs
bEdhdGUoUHRyVGFnKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBleGNlcHRpb25I
YW5kbGVyR2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHRhZ0dhdGVUaHVuayh2b2lkKik7
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJh
bXBvbGluZVRodW5rKCk7CisjaWYgRU5BQkxFKERGR19KSVQpCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8T1NSRXhpdFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21J
bmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4
aXRQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQsIE9wY29kZVNpemUpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWUzY2RlOTkwNGMxMDJiZWVlZjQ3YjE0ZjM1ZmY2OTUx
NjlmYTk3Zi4uNDUyMjBkM2ZlZWRmODdjN2FiZTdmMzhkYzI5NjU3NDlhMjBjYzk5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtMjU2LDkgKzI1NiwxMiBAQCBjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBj
b25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdQogY29uc3QgQnl0
ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKIGNvbnN0IEpTRW50cnlQdHJU
YWcgPSBjb25zdGV4cHIgSlNFbnRyeVB0clRhZwogY29uc3QgSG9zdEZ1bmN0aW9uUHRyVGFnID0g
Y29uc3RleHByIEhvc3RGdW5jdGlvblB0clRhZworY29uc3QgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
ID0gY29uc3RleHByIEpTRW50cnlTbG93UGF0aFB0clRhZworY29uc3QgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnID0gY29uc3RleHByIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwogY29uc3QgRXhjZXB0aW9u
SGFuZGxlclB0clRhZyA9IGNvbnN0ZXhwciBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCitjb25zdCBZ
YXJyRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgWWFyckVudHJ5UHRyVGFnCiBjb25zdCBOb1B0clRh
ZyA9IGNvbnN0ZXhwciBOb1B0clRhZwotY29uc3QgU2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4cHIg
U2xvd1BhdGhQdHJUYWcKKyAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogIyAtIFdl
IHVzZSBhIHBhaXIgb2YgcmVnaXN0ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdpc3Rl
ciBmb3IgdGhlCkBAIC0xMDI2LDcgKzEwMjksNyBAQCBtYWNybyB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgZW5kCiBlbmQKIAotbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUs
IHNpemUpCittYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIG1h
Y3JvIGRlZmluZU5hcnJvdygpCiAgICAgICAgIGlmIG5vdCBDX0xPT1BfV0lOCiAgICAgICAgICAg
ICBfJW9wY29kZU5hbWUlX3JldHVybl9sb2NhdGlvbjoKQEAgLTEwNDgsMzIgKzEwNTEsNzYgQEAg
bWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgc2l6
ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikgZigp
IGVuZCkKIGVuZAogCitpZiBBUk02NEUKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwg
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIKK2Vu
ZAorCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxs
ZWUsIGNhbGxQdHJUYWcpCisgICAgbWFjcm8gbGFiZWxOYXJyb3coKQorICAgICAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgZW5kCisKKyAgICBtYWNybyBsYWJlbFdpZGUxNigp
CisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgZW5kCisK
KyAgICBtYWNybyBsYWJlbFdpZGUzMigpCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVO
YW1lJV93aWRlMzI6CisgICAgZW5kCisKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgorICAg
ICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJlbFdpZGUxNiwgbGFiZWxXaWRlMzIsIG1hY3JvIChn
ZW4pIGdlbigpIGVuZCkKICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICBl
bHNpZiBBUk02NEUKKyAgICAgICAgbWFjcm8gY2FsbE5hcnJvdygpCisgICAgICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBq
bXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAg
X2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0
clRhZworICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAg
ICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRl
TWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIGEy
CisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRh
ZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAg
ICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8g
Y2FsbFdpZGUzMigpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUl
X3dpZGUzMikgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV93aWRlMzI6CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAg
IGVuZAorCisgICAgICAgIG1vdmUgY2FsbGVlLCB0MworICAgICAgICBzaXplKGNhbGxOYXJyb3cs
IGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKICAgICBlbHNl
CisgICAgICAgIHNpemUobGFiZWxOYXJyb3csIGxhYmVsV2lkZTE2LCBsYWJlbFdpZGUzMiwgbWFj
cm8gKGdlbikgZ2VuKCkgZW5kKQogICAgICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZworICAg
ICAgICBpZiBBUk12NyBvciBNSVBTCisgICAgICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFS
TXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgICAgICAg
ICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVjdGlv
bnMKKyAgICAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3Vs
dGluZyBpbiB1bmV4cGVjdGVkCisgICAgICAgICAgICAjIGNyYXNoZXMuCisgICAgICAgICAgICBy
ZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCkKKyAgICAgICAgZW5kCiAgICAgZW5kCi0KLSAgICBpZiBBUk12NyBvciBN
SVBTCi0gICAgICAgICMgSXQgaXMgcmVxdWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBn
bG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKLSAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJl
cyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCi0gICAgICAgICMgdGhhdCBjYW4gY2xv
YmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCi0gICAgICAgICMg
Y3Jhc2hlcy4KLSAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKLSAgICBlbmQKLSAgICBkZWZpbmVPU1JFeGl0
UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNv
ZGVOYW1lLCBzaXplKQogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxh
ckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJl
cGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNh
bGxQdHJUYWcpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCiAjIHNw
IHBvaW50cyB0byB0aGUgbmV3IGZyYW1lCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVl
LCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclRhaWxD
YWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAg
cmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5LDggKzEx
NTYsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRl
bXAzLCBjYWxsUHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAgIGFkZHAg
MTYsIGNmciwgdGVtcDMKLSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisgICAgICAg
IGFkZHAgMTYsIGNmciwgdGVtcDQKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRlbXAxCkBA
IC0xMTMwLDcgKzExNzYsMTQgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVt
cDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEs
IHNwCi0gICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBt
b3ZlIHRlbXA0LCBhMgorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OnRhaWxDYWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCisgICAgICAgIGpt
cCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBlbHNlCisg
ICAgICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNybyBzbG93
UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpAQCAtMTE0NCwxNiArMTE5NywxNiBAQCBtYWNybyBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikK
ICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAg
ICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxs
ZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwo
Y2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICAu
ZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1l
JV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBK
U0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkgIyBXZSBk
b24ndCByZWFjaCB0aGlzIGluIHN0cmFpZ2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFjaCBpdCB2
aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2RlIGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3RhY2sg
ZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4KIAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChv
cE5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAg
cmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tj
ZnJdLCBQQwpAQCAtMTM1MSw3ICsxNDA0LDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxzbyB0cmln
Z2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwg
Y29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1
cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdSZXR1
cm5BZGRyZXNzIHNwCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBpZiBUUkFD
SU5HCkBAIC0xMzc5LDE2ICsxNDMxLDI1IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAg
YnRweiByMCwgLnJlY292ZXIKICAgICAgICAgbW92ZSBjZnIsIHNwICMgcmVzdG9yZSB0aGUgcHJl
dmlvdXMgc3AKICAgICAgICAgIyBwb3AgdGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdpbGwganVt
cCB0byBhIGZ1bmN0aW9uIHRoYXQgd2FudHMgdG8gc2F2ZSBpdAotICAgICAgICBpZiBBUk02NCBv
ciBBUk02NEUKKyAgICAgICAgaWYgQVJNNjQKKyAgICAgICAgICAgIHBvcCBsciwgY2ZyCisgICAg
ICAgIGVsc2lmIEFSTTY0RQorICAgICAgICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mgd2lsbCBi
ZSBwZXJmb3JtZWQgaW4gR2F0ZTo6ZW50cnlPU1JFbnRyeS4KICAgICAgICAgICAgIHBvcCBsciwg
Y2ZyCi0gICAgICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAgICAgZWxzaWYgQVJN
djcgb3IgTUlQUwogICAgICAgICAgICAgcG9wIGNmcgogICAgICAgICAgICAgcG9wIGxyCiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgZW5kCi0gICAgICAgIGptcCBy
MCwgSlNFbnRyeVB0clRhZworCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSBy
MCwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5KSAqIFB0
clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMg
SlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQ
dHJUYWcKKyAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6CiAgICAgICAgIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKQEAgLTE0OTQsNyArMTU1NSwxMiBAQCBl
bmQKIG1hY3JvIGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgp
CiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAg
ICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dh
dGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCBhMgor
ICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAgICAg
ICByZXQKKyAgICBlbmQKIGVuZAogCiAjIFRoaXMgYnJlYWsgaW5zdHJ1Y3Rpb24gaXMgbmVlZGVk
IHNvIHRoYXQgdGhlIHN5bnRoZXNpemVkIGxsaW50UENSYW5nZVN0YXJ0IGxhYmVsCkBAIC0xNTI1
LDYgKzE1OTEsMTcgQEAgZWxzZQogZW5kCiAgICAgZG9WTUVudHJ5KG1ha2VIb3N0RnVuY3Rpb25D
YWxsKQogCitnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcgorZ2xvYmFsIF92bUVudHJ5VG9Z
YXJySklUCitfdm1FbnRyeVRvWWFyckpJVDoKKyAgICBmdW5jdGlvblByb2xvZ3VlKCkKK2lmIEFS
TTY0IG9yIEFSTTY0RQorICAgIGptcCB0NSwgWWFyckVudHJ5UHRyVGFnCisgICAgX3ZtRW50cnlU
b1lhcnJKSVRBZnRlcjoKK2VuZAorICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQorICAgIHJldAorCiAK
IGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgIyB2b2lkIHNhbml0aXplU3RhY2tG
b3JWTUltcGwoVk0qIHZtKQpAQCAtMTU3MCw2ICsxNjQ3LDcxIEBAIGlmIG5vdCAoQ19MT09QIG9y
IENfTE9PUF9XSU4pCiAgICAgICAgIHJldAogZW5kCiAKK2lmIEFSTTY0RQorICAgICMgdm9pZCog
aml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKQorICAgIGVtaXQgIi5nbG9i
bCBfaml0Q2FnZVB0ciIKKyAgICBlbWl0ICJfaml0Q2FnZVB0cjoiCisgICAgICAgIHRhZ1JldHVy
bkFkZHJlc3Mgc3AKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmppdENhZ2VQdHIpICogUHRy
U2l6ZSwgdDIKKyAgICAgICAgam1wIFt0Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAg
ICBnbG9iYWwgX2ppdENhZ2VQdHJHYXRlQWZ0ZXIKKyAgICAgICAgX2ppdENhZ2VQdHJHYXRlQWZ0
ZXI6CisgICAgICAgIHJldAorCisgICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5l
CisgICAgX3RhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyBhMgorICAgICAgICBqbXAgYTAsIEpTRW50cnlQdHJUYWcKKworICAgIGdsb2JhbCBfdGFp
bENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lCisgICAgX3RhaWxDYWxsSlNFbnRyeVNsb3dQ
YXRoVHJhbXBvbGluZToKKyAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCisgICAgICAgIGpt
cCBhMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisKKyAgICBnbG9iYWwgX2V4Y2VwdGlvbkhhbmRs
ZXJUcmFtcG9saW5lCisgICAgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lOgorICAgICAgICBq
bXAgYTAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKworICAgIGdsb2JhbCBfcmV0dXJuRnJvbUxM
SW50VHJhbXBvbGluZQorICAgIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lOgorICAgICAgICBy
ZXQKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJh
bXBvbGluZVByb2dyYW1Qcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAg
ICAgICBqbXAgX2xsaW50X3Byb2dyYW1fcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9s
aW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Q
cm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUV2YWxQ
cm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVy
bkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9ldmFsX3Byb2xvZ3VlCisKKyAgICBnbG9i
YWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisg
ICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUKKworICAgIGdsb2Jh
bCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZQorICAgIF9qc1RyYW1w
b2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRy
ZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJv
bG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3Vl
OgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2sKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJl
c3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrCitlbmQKKwogaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAjIER1bW15IGVudHJ5IHBv
aW50IHRoZSBDIExvb3AgdXNlcyB0byBpbml0aWFsaXplLgogICAgIF9sbGludF9lbnRyeToKQEAg
LTE3MjQsMjEgKzE4NjYsMzAgQEAgZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaywgbWFjcm8gKCkKICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQotICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3Bh
dGhfY2FsbF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRo
X2NhbGxfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKDApCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAotCiBvcChsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9j
b25zdHJ1Y3RfYXJpdHlDaGVjaykKIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1
bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCisjIE5lZWQg
dGhlc2Ugc3R1YiBsYWJlbHMgdG8gbWFrZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnIGV0Yy4gTExJbnQgaGVscGVyIG9wY29kZXMuCitfanNf
dHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193aWRl
MTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191
bnRhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6Citf
anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3Rh
Z193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrX3RhZ193aWRlMzI6CisgICAgY3Jhc2goKQogCiAjIFZhbHVlLXJlcHJlc2VudGF0
aW9uLXNwZWNpZmljIGNvZGUuCiBpZiBKU1ZBTFVFNjQKQEAgLTIxMDksNyArMjI2MCw3IEBAIGVu
ZCkKIAogX2xsaW50X29wX2NhbGxfZXZhbDoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0g
ICAgICAgIG9wX2NhbGxfZXZhbF9uYXJyb3csCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAg
ICAgbmFycm93LAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRj
aE9wKG5hcnJvdywgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMTE4LDcgKzIyNjksNyBAQCBfbGxp
bnRfb3BfY2FsbF9ldmFsOgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICBzbG93
UGF0aEZvckNvbW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCisgICAgICAg
IG9wX2NhbGxfZXZhbCwKICAgICAgICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFsLAogICAg
ICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKHdpZGUxNiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0y
MTI3LDcgKzIyNzgsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKIAogX2xsaW50X29w
X2NhbGxfZXZhbF93aWRlMzI6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBv
cF9jYWxsX2V2YWxfd2lkZTMyLAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUz
MiwKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRl
MzIsIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjIxMiw3ICsyMzYzLDEzIEBAIG9wKGNoZWNrcG9p
bnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKIAogICAg
ICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRpb24o
X2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCi0gICAgICAgIGptcCByMSwg
SlNFbnRyeVB0clRhZworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgIG1vdmUgcjEsIGEw
CisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUs
IGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRy
eVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcK
KyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVuZApA
QCAtMjIyOSwxMiArMjM4NiwyMyBAQCBvcChjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUs
IG1hY3JvICgpCiAgICAgICAgIGNDYWxsMihfbGxpbnRfc2xvd19wYXRoX2NoZWNrcG9pbnRfb3Ny
X2V4aXQpCiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBicmFuY2hJ
ZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKLSAgICAg
ICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAg
bW92ZSByMSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkp
ICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGptcCByMSwgSlNF
bnRyeVB0clRhZworICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBvcnRlZCgp
CiAgICAgZW5kCiBlbmQpCiAKK29wKG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCBtYWNybyAo
KQorICAgIGRpc3BhdGNoKDApCitlbmQpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdl
IGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRo
ZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVy
IEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCkBAIC0yMjc5LDQgKzI0NDcsMTggQEAgb3Aod2Fz
bV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMsIG1hY3JvICgpCiAgICAgY3Jhc2goKQogZW5kKQog
Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxs
X25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorX3dhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUxNjoK
K193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUxNjoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF93aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lk
ZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTMyOgorX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUzMjoKKyAgICBjcmFzaCgp
CisKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2MjZhNDY4MTdiMTUzYjNkNTQ2NDdjM2Q4MmMx
YjQ3NDlmZTYyNjg0Li5iZTU2MTQ5ZjFhNTRmMzZlMjdlNzFmOTY2OThhYTQyN2I2NjMyMzU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQpAQCAtNjg2LDcgKzY4Niw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBp
bnRvIHRoZSBpbnRlcnByZXRlcgogCiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEs
IHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2so
b3Bjb2RlTmFtZSwgZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29k
ZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKICAgICBwcmVwYXJlU3RhdGVG
b3JDQ2FsbCgpCkBAIC03MjQsNiArNzI0LDcgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRv
bmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYnRpeiB0MSwgLmNvbnRpbnVlCiAKIC5ub0V4dHJhU2xv
dDoKKyAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CiAgICAgLy8gTW92ZSBm
cmFtZSB1cCB0MSBzbG90cwogICAgIG5lZ2kgdDEKICAgICBtb3ZlIGNmciwgdDMKQEAgLTc1MCw2
ICs3NTEsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkK
ICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDEsIDhdCiAgICAgYWRkcCA4LCB0MwogICAg
IGJhZGRpbnogMSwgdDIsIC5maWxsTG9vcAorICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1l
JV90YWc6CiAKIC5jb250aW51ZToKICAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5j
ZSB0aGUgc2xvd19wYXRoIGNsb2JiZXJlZCBpdC4KQEAgLTIxMTUsNyArMjExNyw3IEBAIG1hY3Jv
IGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRh
Z09mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQz
LCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCiAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogLm9wQ2FsbFNsb3c6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IGFhMTU3MjNjNjQwZjJkNzdlYThhN2ZlODhhOThiYWVhODZkMmI5YjkuLmJl
YTdjNTgxYWZlNDIwNjBhY2UzYzlhYjFlNDhkYzJkYzA1YzFiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0z
MDAsMTUgKzMwMCwyMyBAQCBtYWNybyBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcmV0CiBlbmQK
IAotCiAjIGEwLCBhMiwgdDMsIHQ0CiBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHBy
b3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBDX0xP
T1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CisgICAg
ZWxzaWYgQVJNNjRFCisgICAgICAgIG1vdmUgZW50cnksIHQzCisgICAgICAgIGxlYXAgSlNDQ29u
ZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhw
ciBHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0KSAqIFB0clNpemUsIGEyCisgICAgICAgIGptcCBb
YTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGdsb2Jh
bCBfdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb0phdmFT
Y3JpcHRUcmFtcG9saW5lOgorICAgICAgICBjYWxsIHQzLCBKU0VudHJ5UHRyVGFnCiAgICAgZWxz
ZQogICAgICAgICBjYWxsIGVudHJ5LCBKU0VudHJ5UHRyVGFnCiAgICAgZW5kCisgICAgZ2xvYmFs
IF92bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyCisgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRH
YXRlQWZ0ZXI6CiAgICAgc3VicCAxNiwgc3AKIGVuZAogCkBAIC0zMjYsOSArMzM0LDE4IEBAIG1h
Y3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRl
bXAyKQogICAgICAgICBzdWJwIDMyLCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rp
b25QdHJUYWcKICAgICAgICAgYWRkcCAzMiwgc3AKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAg
bW92ZSB0ZW1wMSwgdDMKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb05hdGl2
ZSkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
ICMgSG9zdEZ1bmN0aW9uUHRyVGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZlVHJh
bXBvbGluZQorICAgICAgICBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZToKKyAgICAgICAgY2Fs
bCB0MywgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIHRlbXAxLCBI
b3N0RnVuY3Rpb25QdHJUYWcKICAgICBlbmQKKyAgICBnbG9iYWwgX3ZtRW50cnlUb05hdGl2ZUdh
dGVBZnRlcgorICAgIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXI6CiBlbmQKIAogb3AobGxpbnRf
aGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8gKCkKQEAgLTQzMSw4ICs0NDgsMTQgQEAg
bWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAgbW92ZSBQQywgYTEK
ICAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IpCiAgICAgICAgICAgICBidHB6IHIw
LCAucmVjb3ZlcgorCiAgICAgICAgICAgICBtb3ZlIHIxLCBzcAotICAgICAgICAgICAgam1wIHIw
LCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAg
ICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKyAg
ICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRQQygpCiAg
ICAgICAgIGVuZCkKQEAgLTY0NSw3ICs2NjgsNyBAQCBlbmQKICMgRW50cnlwb2ludHMgaW50byB0
aGUgaW50ZXJwcmV0ZXIuCiAKICMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hp
Y2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNv
ZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxv
Y2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckND
YWxsKCkKQEAgLTY4Miw5ICs3MDUsMTYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVM
YWJlbCwgc2xvd1BhdGgpCiAKIC5ub0V4dHJhU2xvdDoKICAgICBpZiBBUk02NEUKKyAgICAgICAg
bGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAg
KyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVVudGFnKSAqIFB0clNpemUsIHQzCisgICAg
ICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgICAgICBsb2FkcCA4W2Nmcl0sIGxyCiAgICAgICAg
IGFkZHAgMTYsIGNmciwgdDMKICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQzCisgICAgICAg
IF8lb3Bjb2RlTmFtZSVVbnRhZ0dhdGVBZnRlcjoKKyAgICBlbHNlCisgICAgICAgIF9qc190cmFt
cG9saW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKKyAgICAgICAgXyVvcGNvZGVOYW1lJVVudGFnR2F0
ZUFmdGVyOgogICAgIGVuZAogCiAgICAgLy8gTW92ZSBmcmFtZSB1cCB0MSBzbG90cwpAQCAtNzEy
LDkgKzc0MiwxNiBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0
aCkKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKIAogICAgIGlmIEFSTTY0RQorICAgICAg
ICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1h
cCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVGFnKSAqIFB0clNpemUsIHQzCisgICAg
ICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0MQogICAgICAgICB0
YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAgICAgIHN0b3JlcCBsciwgOFtjZnJdCisgICAgICAgIF8l
b3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBvbGlu
ZV8lb3Bjb2RlTmFtZSVfdGFnOgorICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVyOgog
ICAgIGVuZAogCiAuY29udGludWU6CkBAIC0yMTc1LDkgKzIyMTIsMTUgQEAgbWFjcm8gY2FsbEhl
bHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1l
LCBkc3RWaXJ0dWEKICAgICBzdG9yZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHBy
ZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNo
aW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2FsbFRh
cmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxl
TmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRh
ZykKLQorICAgIGlmIEFSTTY0RQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBw
cmVwYXJlQ2FsbCh0MCwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGxv
YWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQwCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIHQwLCBKU0VudHJ5UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFyZUNh
bGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJU
YWcpCisgICAgZW5kCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyArMjI4
OCw3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5
S2V5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxpbnRf
b3BfY2F0Y2gsIG1hY3JvKCkgZW5kLCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29wX2Nh
dGNoLCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBl
bmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAj
IG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0
Y2gpLCBhbmQgZnJvbQogICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAo
c2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KQEAgLTIzMTAsNyArMjM1MywxMyBAQCBvcChs
bGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICMgVGhp
cyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAgICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHQxCiAgICAgY29udmVydENhbGxlZVRvVk0odDEpCi0gICAgam1w
IFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcK
KyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
W3QxXSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICog
UHRyU2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCBWTTo6dGFyZ2V0TWFj
aGluZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBlbmQp
CiAKIApAQCAtMzAxOCw0ICszMDY3LDMgQEAgb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xv
b3BfaGludCwgbWFjcm8gKCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKICAgICBkb1JldHVybigpCiBlbmQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGI5MzIyMTM0ODM0MmU5YWE4ODg4MzJkNWM3YmFkMTY2
NDdhY2I0NWIuLmE5ZGE4YmFkZTY3N2M2MDMzNDRiYmZkNjQyNjA5ODVhODkzNDYwNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTM5LDggKzEz
OSwxMiBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0
ZXIpCiAKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAg
ICAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRk
cmVzcyBzcAotICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAg
ICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBK
U0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVu
dHJ5KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAg
ICAgLnJlY292ZXI6CiAgICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2Rl
QmxvY2tSZWdpc3RlcikKICAgICAgICAgZW5kKQpAQCAtMTU5LDkgKzE2MywxNCBAQCBtYWNybyBj
aGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBidHB6IHIxLCAucmVjb3Zlcgog
ICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgICAgICAgICBy
ZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNw
CiAgICAgICAgICAgICBtb3ZlIHIwLCBhMAotICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQ
dHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIG1vdmUgcjEsIHdz
MAorICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICogUHRy
U2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBq
bXAgcjEsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVy
OgogICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQpAQCAtMjUzLDcgKzI2Miw2IEBAIGVuZAogCiBtYWNy
byB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNt
SW5zdGFuY2UpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNo
b3VsZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENB
bmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBsb2FkV2Fz
bUluc3RhbmNlKCkKQEAgLTQ1Niw3ICs0NjQsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAg
ICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5k
Q0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCB3czAKKyAgICAgICAgam1wIFt3czBdLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIHJldAorICAgIGVuZAogZW5kCiAK
ICMgRW50cnkgcG9pbnQKQEAgLTQ5Nyw3ICs1MTAsMTMgQEAgb3Aod2FzbV90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMwogICAgIGNDYWxsNChfc2xvd19wYXRo
X3dhc21fdGhyb3dfZXhjZXB0aW9uKQogCi0gICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRy
VGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgIGxlYXAgSlND
Q29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0
ZXhwciBHYXRlOjpleGNlcHRpb25IYW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBb
YTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAg
ZWxzZQorICAgICAgICBqbXAgcjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbmQKIGVu
ZCkKIAogIyBEaXNhYmxlIHdpZGUgdmVyc2lvbiBvZiBuYXJyb3ctb25seSBvcGNvZGVzCkBAIC03
MDUsNyArNzI0LDM4IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwg
c3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAg
Q2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQ
dHJUYWcKKworICAgICAgICAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwg
c2l6ZSkKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyAr
IGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0
ZTo6JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAg
am1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
KyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRy
eVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBt
YWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAg
ICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9m
SlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikg
KiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1l
JV93aWRlMTY6CisgICAgICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxX
aWRlMzIoKQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdH
YXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUs
IHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoK
KyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAg
ICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxs
V2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICAg
ICAgZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkK
IAogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHdzMQogICAgICAgICAgICAgbG9h
ZGkgV2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBmOWU1NzMyZmFm
MTRiMDgwOWJjMmJiNmMxOWIxYzgwMmM1OWY4MzAyLi5mZjU3YjZhNDhhZTk3NTViNGMxMDU0ODU0
M2Q3NTlmNDQzNjI3ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02
NC5yYgpAQCAtMzcsMzggKzM3LDQ1IEBACiAjCiAjIEdQUiBjb252ZW50aW9ucywgdG8gbWF0Y2gg
dGhlIGJhc2VsaW5lIEpJVDoKICMKLSMgIHgwICA9PiB0MCwgYTAsIHIwCi0jICB4MSAgPT4gdDEs
IGExLCByMQotIyAgeDIgID0+IHQyLCBhMgotIyAgeDMgID0+IHQzLCBhMwotIyAgeDQgID0+IHQ0
Ci0jICB4NSAgPT4gdDUKKyMgIHgwICA9PiB0MCwgYTAsIHdhMCwgcjAKKyMgIHgxICA9PiB0MSwg
YTEsIHdhMSwgcjEKKyMgIHgyICA9PiB0MiwgYTIsIHdhMgorIyAgeDMgID0+IHQzLCBhMywgd2Ez
CisjICB4NCAgPT4gdDQsIGE0LCB3YTQKKyMgIHg1ICA9PiB0NSwgYTUsIHdhNQorIyAgeDYgID0+
IHQ2LCBhNiwgd2E2CisjICB4NyAgPT4gdDcsIGE3LCB3YTcKKyMgIHg4ICA9PiB3czAKKyMgIHg5
ICA9PiB3czEKICMgeDEzICA9PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTYgID0+
ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAo
c2NyYXRjaCkKLSMgeDI2ICA9PiAgICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAg
ICAgICAgICBjc3IxIChudW1iZXJUYWcpCi0jIHgyOCAgPT4gICAgICAgICAgICAgY3NyMiAobm90
Q2VsbE1hc2spCisjIHgyNSAgPT4gICAgICAgICAgICAgY3NyNiAobWV0YWRhdGFUYWJsZSkKKyMg
eDI2ICA9PiAgICAgICAgICAgICBjc3I3IChQQikKKyMgeDI3ICA9PiAgICAgICAgICAgICBjc3I4
IChudW1iZXJUYWcpCisjIHgyOCAgPT4gICAgICAgICAgICAgY3NyOSAobm90Q2VsbE1hc2spCiAj
IHgyOSAgPT4gY2ZyCiAjICBzcCAgPT4gc3AKICMgIGxyICA9PiBscgogIwogIyBGUFIgY29udmVu
dGlvbnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQ6CiAjCi0jICBxMCAgPT4gZnQwLCBmYTAs
IGZyCi0jICBxMSAgPT4gZnQxLCBmYTEKLSMgIHEyICA9PiBmdDIsIGZhMgotIyAgcTMgID0+IGZ0
MywgZmEzCi0jICBxNCAgPT4gZnQ0ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBx
NSAgPT4gZnQ1ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyAgcTkgID0+IGNzZnIxICAgICAgICAo
T25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEwICA9PiBjc2ZyMiAgICAgICAgKE9ubHkgdGhl
IGxvd2VyIDY0IGJpdHMpCi0jIHExMSAgPT4gY3NmcjMgICAgICAgIChPbmx5IHRoZSBsb3dlciA2
NCBiaXRzKQotIyBxMTIgID0+IGNzZnI0ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykK
LSMgcTEzICA9PiBjc2ZyNSAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNCAg
PT4gY3NmcjYgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTUgID0+IGNzZnI3
ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgIHEwICA9PiBmdDAsIGZhMCwgd2Zh
MCwgZnIKKyMgIHExICA9PiBmdDEsIGZhMSwgd2ZhMQorIyAgcTIgID0+IGZ0MiwgZmEyLCB3ZmEy
CisjICBxMyAgPT4gZnQzLCBmYTMsIHdmYTMKKyMgIHE0ICA9PiBmdDQsICAgICAgd2ZhNCAgICAg
ICAgICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTUgID0+IGZ0NSwgICAgICB3ZmE1ICAgICAg
ICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxNiAgPT4gICAgICAgICAgIHdmYTYgICAgICAg
ICAgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE3ICA9PiAgICAgICAgICAgd2ZhNyAgICAgICAg
ICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTggID0+IGNzZnIwICAgICAgICAgICAgICAgICAg
IChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyAgcTkgID0+IGNzZnIxICAgICAgICAgICAgICAg
ICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTAgID0+IGNzZnIyICAgICAgICAgICAg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTEgID0+IGNzZnIzICAgICAgICAg
ICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTIgID0+IGNzZnI0ICAgICAg
ICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTMgID0+IGNzZnI1ICAg
ICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2
ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTUgID0+IGNz
ZnI3ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQogIyBxMzEgID0+
IHNjcmF0Y2gKIAogZGVmIGFybTY0R1BSTmFtZShuYW1lLCBraW5kKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZjVhMzJkNTEwZmM4MGMwNjM4YTM5ZWQ2NTFh
ZWY1YTlkMGZmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HYXRlLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworI2lm
IEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisKKyNkZWZpbmUgSlNDX1VUSUxJVFlf
R0FURVModikgXAorICAgIHYoaml0Q2FnZVB0ciwgTm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxs
SlNFbnRyeVB0clRhZywgTm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRo
UHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYobG9vcE9TUkVudHJ5LCBOb1B0clRhZykgXAorICAg
IHYoZW50cnlPU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KHdhc21PU1JFbnRyeSwgTm9QdHJU
YWcpIFwKKyAgICB2KGV4Y2VwdGlvbkhhbmRsZXIsIE5vUHRyVGFnKSBcCisgICAgdihyZXR1cm5G
cm9tTExJbnQsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrVW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnLCBOb1B0clRhZykgXAorICAgIHYodm1FbnRy
eVRvSmF2YVNjcmlwdCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYodm1FbnRyeVRvTmF0aXZlLCBI
b3N0RnVuY3Rpb25QdHJUYWcpIFwKKworI2RlZmluZSBKU0NfSlNfR0FURV9PUENPREVTKHYpIFwK
KyAgICB2KG9wX2NhbGwsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2FsbCwgSlNF
bnRyeVB0clRhZykgXAorICAgIHYob3BfY29uc3RydWN0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAg
dihvcF9pdGVyYXRvcl9uZXh0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9v
cGVuLCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0
aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRh
ZykgXAorICAgIHYob3BfY29uc3RydWN0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAor
ICAgIHYob3BfY2FsbF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAg
IHYob3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdihvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdywgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfZXZhbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX25leHRfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykg
XAorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyh2KSBcCisgICAgdih3YXNtX2NhbGwsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAg
IHYod2FzbV9jYWxsX25vX3RscywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNt
X2NhbGxfaW5kaXJlY3QsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxs
X2luZGlyZWN0X25vX3RscywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisKKyNlbHNlCisjZGVm
aW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KQorI2VuZGlmCisKK2VudW0gY2xhc3MgR2F0ZSA6
IHVpbnQ4X3QgeworI2RlZmluZSBKU0NfREVGSU5FX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFnKSBn
YXRlTmFtZSwKKyNkZWZpbmUgSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKGdhdGVOYW1lLCB0
YWcpIGdhdGVOYW1lLCBnYXRlTmFtZSMjX3dpZGUxNiwgZ2F0ZU5hbWUjI193aWRlMzIsCisgICAg
SlNDX1VUSUxJVFlfR0FURVMoSlNDX0RFRklORV9HQVRFX0VOVU0pCisgICAgSlNDX0pTX0dBVEVf
T1BDT0RFUyhKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0pCisgICAgSlNDX1dBU01fR0FURV9P
UENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkKKyN1bmRlZiBKU0NfREVGSU5FX0dB
VEVfRU5VTQorfTsKKworI2RlZmluZSBKU0NfQ09VTlQoZ2F0ZU5hbWUsIHRhZykgKyAxCisjZGVm
aW5lIEpTQ19PUENPREVfQ09VTlQoZ2F0ZU5hbWUsIHRhZykgKyAzCitzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG51bWJlck9mR2F0ZXMgPSAwIEpTQ19VVElMSVRZX0dBVEVTKEpTQ19DT1VOVCkg
SlNDX0pTX0dBVEVfT1BDT0RFUyhKU0NfT1BDT0RFX0NPVU5UKSBKU0NfV0FTTV9HQVRFX09QQ09E
RVMoSlNDX09QQ09ERV9DT1VOVCk7CisjdW5kZWYgSlNDX0NPVU5UCisjdW5kZWYgSlNDX09QQ09E
RV9DT1VOVAorI2Vsc2UKKy8vIEtlZXAgaXQgbm9uLXplcm8gdG8gbWFrZSBKU0NDb25maWcncyBh
cnJheSBub3QgWzBdLgorc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkdhdGVzID0g
MTsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NDb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5o
CmluZGV4IDVhNDczMTdjNjJhNWViYTY2NjY3NTczNWY3NzQwMzUwMGM2ODBiNDEuLjdmOTZlYzUy
ZWQyMWFmZGUzM2RhMTMwZGI3ZGQ0Njk0ZWM2MTk4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0NvbmZpZy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiR2F0ZS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIk9wdGlv
bnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1dURkNvbmZpZy5oPgpAQCAtOTIsNiArOTMsNyBAQCBz
dHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFtudW1PcGNvZGVJRHMgKyBu
dW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUxNltudW1PcGNv
ZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUz
MltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKKyAgICAgICAgY29uc3Qgdm9pZCog
Z2F0ZU1hcFtudW1iZXJPZkdhdGVzXTsKICAgICB9IGxsaW50OwogCiAjaWYgQ1BVKEFSTTY0RSkg
JiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0xMTcsNiArMTE5LDcgQEAgZXh0ZXJuICJD
IiBKU19FWFBPUlRfUFJJVkFURSBDb25maWcgZ19qc2NDb25maWc7CiBjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50
Lm9wY29kZU1hcCk7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFw
V2lkZTE2ID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUxNik7CiBj
b25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTMyID0gb2Zmc2V0
b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUzMik7Citjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5n
YXRlTWFwKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQdHJUYWcuY3BwCmluZGV4IGE5NDE2MzRiZmZkYTdhNDYzMTU2YzQ1OTA2Zjc3
NDliZWEyMjZhYzcuLmVhYjM3ZWU4Nzg0MTY0OWJiZDkxYWM0OTQyM2U5ZTNiZDdjNTJlZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcApAQCAtMjgsNiAr
MjgsMTIgQEAKIAogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogCisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxpdGllcy5oPgorI2luY2x1ZGUgPHN5cy9t
bWFuLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7
CiAKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTM1LDgg
KzQxLDEwIEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIGNvbnN0IGNoYXIqIHRhZ0ZvclB0cihj
b25zdCB2b2lkKiBwdHIpCiB7CiAjZGVmaW5lIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKHRh
ZywgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgXAotICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2Rl
UHRySW1wbDxXVEY6OlB0clRhZ0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2Rl
UHRyVGFnKHB0cikpKSBcCi0gICAgICAgIHJldHVybiAjdGFnOworICAgIGlmIChjYWxsZXJUeXBl
ICE9IFB0clRhZ0NhbGxlclR5cGU6OkpJVCB8fCBjYWxsZWVUeXBlICE9IFB0clRhZ0NhbGxlclR5
cGU6Ok5hdGl2ZSkgeyBcCisgICAgICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxX
VEY6OlB0clRhZ0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0
cikpKSBcCisgICAgICAgICAgICByZXR1cm4gI3RhZzsgXAorICAgIH0KICAgICBGT1JfRUFDSF9K
U0NfUFRSVEFHKFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKQogI3VuZGVmIFJFVFVSTl9OQU1F
X0lGX1RBR19NQVRDSEVTCiAgICAgcmV0dXJuIG51bGxwdHI7IC8vIE1hdGNoaW5nIHRhZyBub3Qg
Zm91bmQuCkBAIC02MSw0ICs2OSwzMiBAQCB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKQog
CiAjZW5kaWYgLy8gQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiAKKyNp
ZiBDUFUoQVJNNjRFKQorCitQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnIHRhZykK
K3sKKyNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxs
ZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2FsbGVyVHlwZTsKKyAgICBzd2l0Y2ggKHRh
ZykgeworICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworICAg
IH0KKyN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlw
ZTo6TmF0aXZlOworfQorCitQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnIHRhZykK
K3sKKyNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxs
ZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2FsbGVlVHlwZTsKKyAgICBzd2l0Y2ggKHRh
ZykgeworICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworICAg
IH0KKyN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCmluZGV4IGRmOGI0MDIyNjZlMGUwMjAxOWFm
MzVmNjhlOTFmYWE3OGJlNzkzNWIuLjMzOGFhYWVhZTZhMTI1NTM2NDRlZDU1NzNhZjViMWJjNGYw
MzkwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRh
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCkBAIC0y
Nyw0NiArMjcsNTMgQEAKIAogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRl
IDx3dGYvUHRyVGFnLmg+CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFk
ZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYKKworI2lmIEVOQUJMRShKSVRfQ0FH
RSkKK2V4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogaml0Q2FnZVB0cih2b2lkKiBw
b2ludGVyLCB1aW50cHRyX3QgdGFnKTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdXNp
bmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BUUlRBRyh2
KSBcCi0gICAgLyogTmF0aXZlIE5vbmUgKi8gXAorICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVy
Ok5vbmUgKi8gXAogICAgIHYoRE9NSklURnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRGlzYXNzZW1ibHlQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAog
ICAgIHYoUHV0VmFsdWVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6Tm9uZSkgXAotICAgIC8qIEpJVCBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6SklU
IENhbGxlcjpOb25lICovIFwKICAgICB2KEIzQ29tcGlsYXRpb25QdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRXhlY3V0YWJsZU1l
bW9yeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25l
KSBcCiAgICAgdihMaW5rQnVmZmVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRh
Z0NhbGxlclR5cGU6Ok5vbmUpIFwKLSAgICAvKiBOYXRpdmUgTmF0aXZlICovIFwKKyAgICB2KFlh
cnI4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5v
bmUpIFwKKyAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJU
YWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJy
TWF0Y2hPbmx5MTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVy
VHlwZTo6Tm9uZSkgXAorICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAg
ICAgdihCeXRlY29kZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxs
ZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVFeGVj
dXRvclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpO
YXRpdmUpIFwKICAgICB2KEpJVFByb2JlU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAot
ICAgIHYoU2xvd1BhdGhQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogSklUIE5hdGl2ZSAqLyBcCisgICAgLyogQ2FsbGVl
OkpJVCBDYWxsZXI6TmF0aXZlICovIFwKICAgICB2KE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICAvKiBO
YXRpdmUgSklUICovIFwKKyAgICB2KFlhcnJFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENh
bGxlcjpKSVQgKi8gXAogICAgIHYoSG9zdEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoT3BlcmF0aW9uUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAg
IHYoSklUVG9OYXRpdmVHYXRlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6OkpJVCkgXAotICAgIC8qIEpJVCBKSVQgKi8gXAorICAgIC8qIENhbGxlZTpK
SVQgQ2FsbGVyOkpJVCAqLyBcCiAgICAgdihFeGNlcHRpb25IYW5kbGVyUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUVGh1bmtQ
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAg
ICAgdihKSVRTdHViUm91dGluZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpTRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCisgICAgdihKU0VudHJ5U2xvd1BhdGhQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAg
dihKU0ludGVybmFsUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogICAgIHYoSlNTd2l0Y2hQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFbnRyeVB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9TUkV4aXRQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAg
dihXYXNtRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKSBcCi0gICAgdihZYXJyOEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnJNYXRjaE9u
bHk4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJ
VCkgXAotICAgIHYoWWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpK
SVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoWWFyckJhY2t0cmFja1B0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKIAogI2RlZmlu
ZSBKU0NfREVDTEFSRV9QVFJUQUcobmFtZSwgdHlwZSwgdGFyZ2V0KSBXVEZfREVDTEFSRV9QVFJU
QUcobmFtZSkKQEAgLTEwOCwxOCArMTE1LDI4IEBAIEZPUl9FQUNIX0pTQ19QVFJUQUcoSlNDX0RF
Q0xBUkVfUFRSVEFHKQogI3ByYWdtYSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCitKU19FWFBPUlRf
UFJJVkFURSBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIFB0clRhZ0NhbGxlZVR5cGUgY2FsbGVlVHlwZShQdHJUYWcpOworCiB0ZW1wbGF0ZTxQ
dHJUYWcgdGFnLCBQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUsIFB0clRhZ0NhbGxlclR5cGUg
Y2FsbGVyVHlwZSwgdHlwZW5hbWUgUHRyVHlwZT4KIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5
cGUgdGFnSlNDQ29kZVB0ckltcGwoUHRyVHlwZSBwdHIpCiB7CiAgICAgc3RhdGljX2Fzc2VydChj
YWxsZXJUeXBlID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgaWYgY29uc3RleHByIChj
YWxsZWVUeXBlID09IFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSkgewotICAgICAgICBpZiBjb25z
dGV4cHIgKHRhZyAhPSBKSVRUb05hdGl2ZUdhdGVQdHJUYWcpIHsKLSAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRy
VGFnKTsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykK
LSAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklU
T3BlcmF0aW9uKHB0cik7Ci0gICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhv
c3RGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0
YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgc3Rh
dGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25Q
dHJUYWcpOworICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisg
ICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0
aW9uKHB0cik7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9u
UHRyVGFnKQorICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRy
VHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHB0cikpKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxQdHJUeXBlPihqaXRDYWdlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRy
KSwgdGFnKSk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dGFnTmF0aXZlQ29kZVB0
ckltcGw8dGFnPihwdHIpOwogfQpAQCAtMTI5LDE3ICsxNDYsNjQgQEAgQUxXQVlTX0lOTElORSBz
dGF0aWMgUHRyVHlwZSB1bnRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0
YXRpY19hc3NlcnQoY2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlm
IGNvbnN0ZXhwciAoY2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAg
ICAgICAgaWYgY29uc3RleHByICh0YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhv
c3RGdW5jdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVy
YXRpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2Uo
KS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4
cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0
aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOworICAgICAgICBz
dGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlv
blB0clRhZyk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykK
KyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVy
YXRpb24ocHRyKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rp
b25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2Vy
dElzSG9zdEZ1bmN0aW9uKHB0cik7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAo
T3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXR3
aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHB0cikpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJl
bW92ZUNvZGVQdHJUYWcocHRyKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfSBlbHNlIHsKKyNp
ZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsK
KyAgICAgICAgICAgIFB0clR5cGUgcmVtb3ZlZCA9IHJlbW92ZUNvZGVQdHJUYWcocHRyKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCh0YWdKU0NDb2RlUHRySW1wbDx0YWcsIGNhbGxlZVR5
cGUsIGNhbGxlclR5cGU+KHJlbW92ZWQpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJl
bW92ZWQ7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gV1RGOjp1bnRhZ05h
dGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRyKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlw
ZT4KK2lubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQ
dHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2ludGVyKQoreworICAgIEFTU0VSVChwdHIp
OworICAgIFVOVVNFRF9QQVJBTShzdGFja1BvaW50ZXIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9j
YXN0PFB0clR5cGU+KEpTQ19KSVRfQ0FHRShiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHN0YWNrUG9pbnRlcikpKTsKKyNlbmRpZgorI2lmIENQVShBUk02
NEUpCisgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRo
X2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1Bv
aW50ZXIpKTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBQdHJUeXBlPgoraW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9p
bnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sK
KyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAg
ICBQdHJUeXBlIHVuY2FnZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCh1bmNhZ2VkLCBz
dGFja1BvaW50ZXIpID09IHB0cik7CisgICAgICAgIHJldHVybiB1bmNhZ2VkOworICAgIH0KKyNl
bmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgo
cHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRy
VGFnPihzdGFja1BvaW50ZXIpKTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQor
CiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiB2b2lkIGluaXRp
YWxpemVQdHJUYWdMb29rdXAoKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWF0Y2hSZXN1bHQuaAppbmRleCBhZGQyNjRlOTA5NzViMjY1ZmQ1YmUxMGYyNjMyZmQ3NWUy
ODZjODFjLi5mMzA1ZTRhMTY0ZDAxZmZiMWY4MWM3OWViNWU0OWYwNDViODE4NWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmgKQEAgLTM0LDcgKzM0LDEw
IEBAIHN0cnVjdCBNYXRjaFJlc3VsdDsKICNpZiBDUFUoQUREUkVTUzMyKQogdXNpbmcgRW5jb2Rl
ZE1hdGNoUmVzdWx0ID0gdWludDY0X3Q7CiAjZWxzZQotdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0
ID0gTWF0Y2hSZXN1bHQ7CitzdHJ1Y3QgRW5jb2RlZE1hdGNoUmVzdWx0IHsKKyAgICBzaXplX3Qg
c3RhcnQ7CisgICAgc2l6ZV90IGVuZDsKK307CiAjZW5kaWYKIAogc3RydWN0IE1hdGNoUmVzdWx0
IHsKQEAgLTU2LDYgKzU5LDEyIEBAIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgICwgZW5k
KGJpdHdpc2VfY2FzdDxNYXRjaFJlc3VsdD4obWF0Y2gpLmVuZCkKICAgICB7CiAgICAgfQorI2Vs
c2UKKyAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0KEVuY29kZWRNYXRjaFJlc3VsdCBtYXRj
aCkKKyAgICAgICAgOiBzdGFydChtYXRjaC5zdGFydCkKKyAgICAgICAgLCBlbmQobWF0Y2guZW5k
KQorICAgIHsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNo
UmVzdWx0IGZhaWxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CmluZGV4IDBkMmY1YWNmNzljZGY1NzQ5OGU2YTczYzA2NzJkNmRkNGJmODg0NzguLmU3MTdkMzBl
NjRkMTU5NzM0NzkyYTNmNDhiOTIxNjU3MmZiNDAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01MCw2ICs1MCwxMSBAQAogI2luY2x1ZGUgPGNydF9l
eHRlcm5zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2Nh
cGFiaWxpdGllcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtMzkyLDYgKzM5Nyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVBbGxKSVRPcHRp
b25zKCkKICAgICBPcHRpb25zOjp1c2VPTUdKSVQoKSA9IGZhbHNlOwogICAgIE9wdGlvbnM6OnVz
ZURPTUpJVCgpID0gZmFsc2U7CiAgICAgT3B0aW9uczo6dXNlUmVnRXhwSklUKCkgPSBmYWxzZTsK
KyAgICBPcHRpb25zOjp1c2VKSVRDYWdlKCkgPSBmYWxzZTsKIH0KIAogdm9pZCBPcHRpb25zOjpy
ZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKQEAgLTExMTQsNCArMTEyMCwxMCBAQCBib29sIE9w
dGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorYm9vbCBjYW5V
c2VKSVRDYWdlKCkgeyByZXR1cm4gSlNDX0pJVF9DQUdFX1ZFUlNJT04oKTsgfQorI2Vsc2UKK2Jv
b2wgY2FuVXNlSklUQ2FnZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCA4ZDBmZjBlYzY4MzI5YjA0ZDA5M2NlMzhkNGVjYTQ2YWEyODhmM2VhLi5hNjE5MWFiYTAz
MzFjYWMzZGM3ZTY3ODc2NGVkYTc1NGMyMGYzZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQzLDYgKzQzLDggQEAgY29uc3RleHByIGJvb2wg
ZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSB0cnVlOwogY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICNlbmRpZgogCitKU19FWFBPUlRf
UFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKKwogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25z
IHdvcms/CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9K
U0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25z
IGluIHVzZSwKQEAgLTUyMCw2ICs1MjIsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNlZWRGb3JMSUNNRnV6
emVyLCA0MjQyNDIsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0
aW5nTElDTVByb2JhYmlsaXR5LCAwLjUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwg
ZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1h
bCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBO
b3JtYWwsIG51bGxwdHIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9w
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5k
ZXggOWM0YjU5NTQ2ZTZmOTYwYWI3NThlM2E1M2YyYjYxZGJiNjc0YzIxZS4uOTA2MjExMjFhODFl
MzFiNTIxNzViNTk3ZDliYzQxMjY0ODY3NjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgV0FTTV9D
QUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgZG8g
eyBcCi0gICAgICAgIFdBU01fUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcs
IFNsb3dQYXRoUHRyVGFnPihjYWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAorICAgICAg
ICBXQVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xv
d1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgdGFyZ2V0SW5zdGFuY2UpOyBcCiAgICAgfSB3aGls
ZSAoZmFsc2UpCiAKICNkZWZpbmUgQ09ERV9CTE9DSygpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAKaW5kZXggMjJiZjY2ZDhjODIyZGE5MWUwMzE4MDZhMmY2OWQzNmU0YmQ4
ZjdiZC4uOTRkMzAyYWVhZmQ1MTZhNWIzZmM3ZjRiZjVmNzk1YTNmNTZjYTc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKKyNpZiBDUFUoQVJNNjQpCitKU0NfQU5OT1RB
VEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRy
eVRvWWFyckpJVEFmdGVyKTsKKyNlbmRpZgorCiBNYXRjaGluZ0NvbnRleHRIb2xkZXI6Ok1hdGNo
aW5nQ29udGV4dEhvbGRlcihWTSYgdm0sIFlhcnJDb2RlQmxvY2sqIHlhcnJDb2RlQmxvY2ssIE1h
dGNoRnJvbSBtYXRjaEZyb20pCiAgICAgOiBtX3ZtKHZtKQogewpAQCAtMzc0Niw5ICszNzUwLDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplY3gpOwogI2Vu
ZGlmCiAjZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAg
ICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpIHsKLSAgICAgICAgICAgIHB1c2hQYWlyKGZy
YW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShUcnVz
dGVkSW1tMzIoMHgxMDAwMCksIHN1cHBsZW1lbnRhcnlQbGFuZXNCYXNlKTsKICAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDB4ZDgwMCksIGxlYWRpbmdTdXJyb2dhdGVUYWcpOwogICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHhkYzAwKSwgdHJhaWxpbmdTdXJyb2dhdGVUYWcpOwpA
QCAtMzgwMyw4ICszODA1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBwb3AoWDg2
UmVnaXN0ZXJzOjplYngpOwogICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwogI2VsaWYg
Q1BVKEFSTTY0KQotICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykKLSAgICAgICAg
ICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisgICAgICAg
IC8vIERvIG5vdGhpbmcKICNlbGlmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBwb3AoQVJNUmVn
aXN0ZXJzOjpyOCk7CiAgICAgICAgIHBvcChBUk1SZWdpc3RlcnM6OnI2KTsKQEAgLTM4MTMsNyAr
MzgxNCwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbGlmIENQVShNSVBTKQogICAgICAgICAvLyBE
byBub3RoaW5nCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJU
YWc+KCZ2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpKSwgcmVnVDApOworICAgICAgICBmYXJKdW1wKHJl
Z1QwLCBPcGVyYXRpb25QdHJUYWcpOworI2Vsc2UKICAgICAgICAgcmV0KCk7CisjZW5kaWYKICAg
ICB9CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA2NjQy
OGUwNjYzZjMzMjA5MTc3ODFkYmI5ZDBjNzMwZDJiNmQ2ODViLi4xNWI3YmQ2YTI2ZmY2ZTRiMDAx
MjEyOTg5ZThmZGNlZWE1YTRiOGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
CkBAIC03Niw2ICs3Niw5IEBAIGNsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlciB7CiAjZW5kaWYK
IH07CiAKK2V4dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29u
c3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0
cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCog
Y29kZVB0cik7CitleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOwor
CiBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShZYXJyQ29kZUJsb2NrKTsKQEAgLTEwOSwyNSArMTEyLDQx
IEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3Qg
TENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1
dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaGFzOEJpdENvZGUoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4g
TWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0
LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFycjhCaXRQdHJUYWcsIFlhcnJFbnRy
eVB0clRhZz4obV9yZWY4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAg
ICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlOCwg
WWFycjhCaXRQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQs
IHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9
CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRl
ciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZSgp
KTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9Z
YXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsICZtYXRjaGluZ0NvbnRleHQsIHJl
dGFnQ29kZVB0cjxZYXJyMTZCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWYxNi5jb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1f
cmVmMTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBv
dXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1
bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBs
ZW5ndGgsIG51bGxwdHIsICZtYXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50
YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHk4LCBZYXJyTWF0Y2hPbmx5OEJpdFB0
clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3Rh
cnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAK
ICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lm
IENQVShBUk02NEUpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklU
KGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0Nv
ZGVQdHI8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fbWF0Y2hP
bmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1
cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHkxNiwg
WWFyck1hdGNoT25seTE2Qml0UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0
KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oIGIvU291cmNlL1dURi93dGYvT1NBbGxv
Y2F0b3IuaAppbmRleCA3NzEzNjJiOTJhMmU1MjI5Mzk4NGUxMTY1MWJkMmE5MzkzZDk4M2EyLi4y
Njg4YTRlZmRmODE3ZGI3YWY2NjY5ODc1ZGYyM2E3OTg5MzZhYTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9y
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgT1NBbGxvY2F0b3IgewogICAgIC8vIHJlbGVhc2VE
ZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBi
eSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJl
bnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLiByZXNlcnZlVW5jb21taXR0ZWQgcmV0dXJu
cyB0bwogICAgIC8vIHlvdSBtZW1vcnkgdGhhdCBpcyB6ZXJvZWQuCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVu
a25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNl
LCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93
blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJv
b2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxz
ZSk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRl
ZCh2b2lkKiwgc2l6ZV90KTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsg
dGhleSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNo
b3VsZApAQCAtNTUsMjcgKzU1LDI3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyBUaGVz
ZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGlu
IGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJl
IGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRp
b24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0
ZWQgc3RhdGUuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5k
Q29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVl
LCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxz
ZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0
KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29s
IGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGlu
Y2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJl
bGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBh
cmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBo
b3dldmVyIHJhdGhlciB0aGFuCiAgICAgLy8gY29tbWl0dGluZy9kZWNvbW1pdHRpbmcgdGhlIGVu
dGlyZSByZWdpb24gYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFsbG93IGEgc3VicmVnaW9uIHRvIGJl
CiAgICAgLy8gc3BlY2lmaWVkLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCog
cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBV
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVB
bmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBV
bmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxz
ZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgYW4g
ZXhpc3RpbmcsIGNvbW1pdHRlZCBhbGxvY2F0aW9uLgogICAgIC8vIFRoZSBwcmlvciBhbGxvY2F0
aW9uIG11c3QgYmUgZnVsbHkgY29taXR0ZWQsIGFuZCB0aGUgbmV3IHNpemUgd2lsbCBhbHNvIGJl
IGZ1bGx5IGNvbW1pdHRlZC4KICAgICAvLyBUaGlzIGludGVyZmFjZSBpcyBwcm92aWRlZCBzaW5j
ZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gb3B0aW1pemUgdGhpcyBvcGVyYXRpb24gb24gc29tZSBw
bGF0Zm9ybXMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgVCogcmVhbGxv
Y2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9
IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZh
bHNlKTsKKyAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNp
emUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9
IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFs
c2UpOwogCiAgICAgLy8gSGludCB0byB0aGUgT1MgdGhhdCBhbiBhZGRyZXNzIHJhbmdlIGlzIG5v
dCBleHBlY3RlZCB0byBiZSBhY2Nlc3NlZCBhbnl0aW1lIHNvb24uCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKHZvaWQqLCBzaXplX3Qp
OwogfTsKIAotaW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVf
dCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUpCitpbmxpbmUgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVB
bmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgdXNh
Z2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkK
IHsKLSAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVTaXplLCB1c2Fn
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIGJhc2UgPSByZXNlcnZlVW5jb21t
aXR0ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVu
YWJsZWQpOwogICAgIGNvbW1pdChiYXNlLCBjb21taXRTaXplLCB3cml0YWJsZSwgZXhlY3V0YWJs
ZSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC04Niw5ICs4Niw5IEBAIGlubGluZSB2b2lkIE9T
QWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogcmVsZWFzZUJhc2UsIHNpemVfdCBy
ZWxlYXNlU2l6CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogT1NBbGxvY2F0
b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQoVCogb2xkQmFzZSwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQor
aW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNp
emVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
IGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBuZXdC
YXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUpOworICAgIHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZlQW5kQ29tbWl0KG5ld1NpemUsIHVzYWdl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIG1lbWNweShuZXdC
YXNlLCBvbGRCYXNlLCBzdGQ6Om1pbihvbGRTaXplLCBuZXdTaXplKSk7CiAgICAgZGVjb21taXRB
bmRSZWxlYXNlKG9sZEJhc2UsIG9sZFNpemUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4o
bmV3QmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCBi
L1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCmluZGV4IGEyYWVlODg0ZTk4NjRjZDkz
MjFhNmI0OTRlOWU2OTg4MjQ0MzEwMzAuLjQ5NGJmMDVlMDAxNzE1Mzg1MWViMTBhNTUzM2MyMmZj
NjVjYjc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCkBAIC01NSwxMiArNTUsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxv
Y2sgewogcHVibGljOgotICAgIFBhZ2VSZXNlcnZhdGlvbigpCi0gICAgICAgIDogbV9jb21taXR0
ZWQoMCkKLSAgICAgICAgLCBtX3dyaXRhYmxlKGZhbHNlKQotICAgICAgICAsIG1fZXhlY3V0YWJs
ZShmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFBhZ2VSZXNlcnZhdGlvbigpID0gZGVmYXVsdDsK
IAogICAgIHVzaW5nIFBhZ2VCbG9jazo6YmFzZTsKICAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7
CkBAIC05MywyMiArODgsMjIgQEAgY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdl
QmxvY2sgewogICAgICAgICByZXR1cm4gbV9jb21taXR0ZWQ7CiAgICAgfQogCi0gICAgc3RhdGlj
IFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UpCisgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNl
cnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBmYWxzZSk7CisgICAgICAgIHJldHVy
biBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBmYWxzZSksIHNpemUs
IHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpOwogICAgIH0KICAg
ICAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXpl
X3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25V
c2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAg
IHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXpl
LCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2Fn
ZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNp
emUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVj
dXRhYmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpOworICAgICAg
ICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQo
c2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENh
Z2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFi
bGVkLCB0cnVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVB
bmRDb21taXRXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVz
YWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2
ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJu
IFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFn
ZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdy
aXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlv
bihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVz
YWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpLCBzaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpOwogICAgIH0KIAogICAg
IHZvaWQgZGVhbGxvY2F0ZSgpCkBAIC0xMjcsNyArMTIyLDcgQEAgY2xhc3MgUGFnZVJlc2VydmF0
aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQYWdlUmVz
ZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhl
Y3V0YWJsZSwgYm9vbCBoYXNHdWFyZFBhZ2VzKQorICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBi
YXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBi
b29sIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUsIGhhc0d1
YXJkUGFnZXMpCiAgICAgICAgICwgbV9jb21taXR0ZWQoMCkKICAgICAgICAgLCBtX3dyaXRhYmxl
KHdyaXRhYmxlKQpAQCAtMTM1LDkgKzEzMCw5IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHBy
aXZhdGUgUGFnZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgc2l6ZV90IG1fY29tbWl0dGVk
OwotICAgIGJvb2wgbV93cml0YWJsZTsKLSAgICBib29sIG1fZXhlY3V0YWJsZTsKKyAgICBzaXpl
X3QgbV9jb21taXR0ZWQgeyAwIH07CisgICAgYm9vbCBtX3dyaXRhYmxlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fZXhlY3V0YWJsZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaAppbmRleCBlMjIyOTg3NWI0NzdiMWM2YmFiYmM1ZmVkZDk3Y2E1NzI5MWQzYzIzLi5lYmVk
Njg2OTIyYjZmMGYwYmIyMDg3Y2Y1NDZhMTg4MDQyOGNkYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgKQEAgLTg4NCwxMCArODg0LDEwIEBACiAjZXJyb3IgIkVOQUJMRShXSExTTF9DT01QSUxF
UikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgJiYg
Q1BVKEFERFJFU1M2NCkKLSNkZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjaWYgT1MoREFSV0lO
KSAmJiBFTkFCTEUoSklUKSAmJiAoKFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIENQVShBUk02
NEUpKSkKKyNkZWZpbmUgRU5BQkxFX0pJVF9DQUdFIDEKICNlbmRpZgogCi0jaWYgT1MoREFSV0lO
KSAmJiBFTkFCTEUoSklUKSAmJiBBU1NFUlRfRU5BQkxFRAorI2lmIE9TKERBUldJTikgJiYgQ1BV
KEFERFJFU1M2NCkgJiYgRU5BQkxFKEpJVCkgJiYgKEVOQUJMRShKSVRfQ0FHRSkgfHwgQVNTRVJU
X0VOQUJMRUQpCiAjZGVmaW5lIEVOQUJMRV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCAyMmY0NjJiMmE2NGRhYmY4YzA4NDlhOTIwZGVhYmQ5
YTFjMWU1YmUyLi5mY2U5ZWRhMTMzYzliYjMxNjcwZTMyZTlkZjNhMDdhNGEyZGMzOGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtVXNlLmgKQEAgLTMwOCwzICszMDgsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEw
MDAwKQogI2RlZmluZSBVU0VfQ1RGT05UR0VUQURWQU5DRVNfV09SS0FST1VORCAxCiAjZW5kaWYK
KworI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgVVNFX0pVTVBfSVNM
QU5EUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oIGIvU291
cmNlL1dURi93dGYvUHRyVGFnLmgKaW5kZXggNWE0MjE3MTExZDVmYTkxMjE3NjBhMjQyMWUwMjBi
NWYxZGViNzhiYy4uYWM5MmVjMzE5NGRmYWM4NGMxNTNmYjY2ZmFmZWVhM2NlOTYwNGY0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUHRyVGFnLmgKKysrIGIvU291cmNlL1dURi93dGYvUHRy
VGFnLmgKQEAgLTM0NCw2ICszNDQsNyBAQCBib29sIGlzVGFnZ2VkV2l0aChQdHJUeXBlIHZhbHVl
KQogdGVtcGxhdGU8UHRyVGFnIHRhZywgdHlwZW5hbWUgUHRyVHlwZT4KIHZvaWQgYXNzZXJ0SXNU
YWdnZWRXaXRoKFB0clR5cGUgdmFsdWUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAg
ICBXVEZfUFRSVEFHX0FTU0VSVChQdHJUYWdBY3Rpb246OkRlYnVnQXNzZXJ0LCB2YWx1ZSwgdGFn
LCBpc1RhZ2dlZFdpdGg8dGFnPih2YWx1ZSkpOwogfQogCkBAIC00NDksMjAgKzQ1MCw2IEBAIGlu
bGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IG9sZExlbmd0aCwgc2l6ZV90IG5l
d0xlbmd0aCkKICAgICByZXR1cm4gcHRyYXV0aF9hdXRoX2FuZF9yZXNpZ24ocHRyLCBwdHJhdXRo
X2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRMZW5ndGgsIHB0cmF1dGhfa2V5X3Byb2Nl
c3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFB0
clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENh
bGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQo
cHRyKTsKLSAgICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVudGljYXRlZChwdHIsIHB0cmF1
dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNr
UG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotaW5saW5lIFB0clR5
cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4g
X19idWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50
X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCiB0ZW1wbGF0
ZSA8UHRyVGFnIHRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJ
bnRUeXBlIHB0ckludCkKIHsKQEAgLTUyMCwxMiArNTA3LDYgQEAgaW5saW5lIFQqIHJldGFnQXJy
YXlQdHIoVCogcHRyLCBzaXplX3QsIHNpemVfdCkKICAgICByZXR1cm4gcHRyOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0
aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVy
biBwdHI7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5
cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQogdGVtcGxhdGUgPFB0clRhZywgdHlwZW5hbWUg
SW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTU3
Miw5ICs1NTMsNyBAQCB1c2luZyBXVEY6OnJldGFnQXJyYXlQdHI7CiB1c2luZyBXVEY6OnJlbW92
ZUFycmF5UHRyVGFnOwogCiB1c2luZyBXVEY6OnRhZ0NvZGVQdHI7Ci11c2luZyBXVEY6OnRhZ0Nv
ZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6dW50YWdDb2RlUHRy
OwotdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVz
aW5nIFdURjo6cmV0YWdDb2RlUHRyOwogdXNpbmcgV1RGOjpyZW1vdmVDb2RlUHRyVGFnOwogdXNp
bmcgV1RGOjp0YWdDRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9P
U0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9T
SVguY3BwCmluZGV4IDQ0NTQwNTljNTE1ZDJhNDEyYjQzMmQwNzE0NmNmNmYwMTFkNDc2MGIuLjZj
ZWZkMmVlMmQzMTA1YzJkNDA0ODVmNjk2NWZlYmE4ODQ1YjQzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBAIC0zMSwxNCArMzEsMjcgQEAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAorI2lmIEVO
QUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9u
cy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdFKQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUg
TUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisjZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5l
IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
X1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUo
SklUX0NBR0UpCisKIG5hbWVzcGFjZSBXVEYgewogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0FsbG9jYXRv
cjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3Jp
dGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMpCiB7CiAjaWYgT1MoTElOVVgpCiAgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsK
ICAgICBVTlVTRURfUEFSQU0od3JpdGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxl
KTsKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShp
bmNsdWRlc0d1YXJkUGFnZXMpOwogCiAgICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRlcywg
UFJPVF9OT05FLCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDAp
OwpAQCAtNDYsNyArNTksNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVk
KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgICAgIENSQVNI
KCk7CiAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBNQURWX0RPTlRORUVEKTsKICNlbHNlCi0g
ICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBpbmNsdWRlc0d1YXJkUGFnZXMpOworICAgIHZvaWQqIHJlc3VsdCA9IHJl
c2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2Fn
ZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0Up
CiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAvLyBUbyBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0
aGVuIGNvbW1pdCIgbW9kZWwsIHdlIGhhdmUgdG8gaW5pdGlhbGx5IGRlY29tbWl0LgpAQCAtNTks
NyArNzIsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBi
eXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2Fn
ZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3Vh
cmRQYWdlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRl
cywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRD
YWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAgICAgLy8gQWxsIFBPU0lY
IHJlc2VydmF0aW9ucyBzdGFydCBvdXQgbG9naWNhbGx5IGNvbW1pdHRlZC4KICAgICBpbnQgcHJv
dGVjdGlvbiA9IFBST1RfUkVBRDsKQEAgLTcwLDggKzgzLDE0IEBAIHZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFi
bGUsIGJvCiAKICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9OOwogI2lmIE9T
KERBUldJTikKLSAgICBpZiAoZXhlY3V0YWJsZSkKLSAgICAgICAgZmxhZ3MgfD0gTUFQX0pJVDsK
KyAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICBpZiAoaml0Q2FnZUVuYWJsZWQpCisgICAg
ICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0U7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzIHw9IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQ7
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogI2VuZGlm
CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxv
Y2F0b3JXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcAppbmRl
eCA5ZDZjMGFhNzQxMTM2Y2M4YTg0NmQwNDEyYTkyMWJkYTJhYzM4YjQ3Li42ZDUyYzY2MmRmMDZm
OTQ4MWE5MzM1YTdlZDJiNDUxNDM2NjQ2NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93
aW4vT1NBbGxvY2F0b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRv
cldpbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGluZSBEV09SRCBwcm90ZWN0aW9u
KGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKICAgICAgICAgKHdyaXRhYmxlID8gUEFH
RV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJl
c2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29s
IGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVk
KHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0
ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAg
aWYgKCFyZXN1bHQpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZl
VW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBlCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21t
aXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBV
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBib29sKQogewogICAg
IHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYyhudWxscHRyLCBieXRlcywgTUVNX1JFU0VSVkUg
fCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYg
KCFyZXN1bHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412574</attachid>
            <date>2020-10-28 15:06:20 -0700</date>
            <delta_ts>2020-10-28 17:43:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201028150619.patch</filename>
            <type>text/plain</type>
            <size>172642</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Mjk4YjVkYWI3NzI1NzE0MjkxNWM4NDU1ZDdiYmIzYTBjYThhZTg2Li5jNzRhNjMwYWZkODg1Y2My
MzhkNmVjMjJhNzE4MjQ1NGQzMTUyNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMjAtMTAtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KToKKyAgICAgICAg
KiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpT
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRy
eU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRyeUdh
dGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dW50
YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5l
VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
bGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29u
ZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAgICAgICAoSlNDOjp0
YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2Fs
bGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6
dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToK
KyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6
Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21T
bG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorCiAyMDIwLTEwLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGNvbW1hbmQgbGluZSBBUEkgc2hvdWxkIGJlIGV4
cG9zZWQgdG8gYnJlYWtwb2ludCBjb25kaXRpb25zL2FjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGEwNGYwNTIwYTcx
ZGRjNDc3NzE5YTI3ZjE4YzE3NjU3ZGJlM2ZiMy4uNzQ5NmJlNjdhMmExMzE2MzcxM2ZhYzUzOTFh
YmEwNjBiYzY1OTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0xMC0yOCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL09TQWxsb2NhdG9yLmg6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5k
Q29tbWl0KToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQp
OgorICAgICAgICAqIHd0Zi9QYWdlUmVzZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJl
c2VydmF0aW9uOjpyZXNlcnZlKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2Vy
dmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlv
bjo6UGFnZVJlc2VydmF0aW9uKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAg
ICAgIChXVEY6OmFzc2VydElzVGFnZ2VkV2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJX
aXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFn
Q29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2
ZUFuZENvbW1pdCk6CisgICAgICAgICogd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAg
ICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RG
OjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisKIDIwMjAtMTAtMTUgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2lnbiBNYWNyb0Fzc2VtYmxl
cjo6anVtcHNUb0xpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlM2Q4
YWIwYTQ3MDk2ZDBkMTEzZTc4M2FkZDE1NDI4ZjU3ODRjMjVhLi5lNzE2YzYxOTllMDk5ZTE2NjEz
NDdiNDI5ZDViNzJiYWJmYzZlMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC04NjcsNiArODY3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKICAgICBydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaAogICAgIHJ1bnRpbWUvRnV6emVyQWdlbnQuaAorICAgIHJ1bnRpbWUv
R2F0ZS5oCiAgICAgcnVudGltZS9HZW5lcmljT2Zmc2V0LmgKICAgICBydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDNlN2UxY2IyYTlhZGNkOGQ4ZmNm
ZGVkNjUwNGY0YTY4NjJiYWE4OS4uY2JiOTgxNjFjYmMzODE5MjBiZDhmNTZlODBhNmRjOTllYjUw
MTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NTMsNiArMTg1Myw3IEBA
CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZD
Qzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkVEQ0U0
MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlBMCAvKiBH
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzcx
MTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9y
bWF0SW5saW5lcy5oICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBBMjM5MEQ5M0Iw
MDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oICov
OyB9OwpAQCAtNTA2MSw2ICs1MDYyLDcgQEAKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8q
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MjgwLDYgKzcyODIsNyBAQAogCQkJCUUzM0E5NDkyMjI1NTMyMjkwMEQ0
MkIwNiAvKiBGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFQ0ZBRDM1MjM3MkRBQTcwMDI5MTU5OSAv
KiBGdXp6ZXJQcmVkaWN0aW9ucy5jcHAgKi8sCiAJCQkJQ0VDRkFEMzQyMzcyREFBNzAwMjkxNTk5
IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8sCisJCQkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEw
IC8qIEdhdGUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtOTcw
MSw2ICs5NzA0LDcgQEAKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzQTk0OTcyMjU1MzIzMzAwRDQyQjA2IC8q
IEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNGQUQzNjIzNzJEQUQwMDAyOTE1
OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzExOTkyMjUz
RkE4N0YwMEJBNjlBMCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYzRDE4Q0E1
QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0pJVE9wZXJhdGlvbkxpc3QuY3BwCmluZGV4IGIzY2UxNzc5MmQwMTY3ZjRlYzdiZWNjYTRmZGU4
NWM0NWNiYjEwYjAuLmU0ZjI2YWI0NjZlMmZiNTA1NjcwMjg5MmVlM2FiYWM3NjViNzdkMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25M
aXN0LmNwcApAQCAtMjYsNiArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25MaXN0LmgiCiAKKyNpbmNsdWRlICJHYXRlLmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisj
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgSlNDIHsKIAogTGF6eU5ldmVyRGVzdHJveWVkPEpJVE9wZXJhdGlvbkxpc3Q+IGpp
dE9wZXJhdGlvbkxpc3Q7CkBAIC00NSwxOCArNTMsMjIgQEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0
Ojppbml0aWFsaXplKCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQogc3Rh
dGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhhc2hNYXA8
dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWlu
dHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3Qg
dWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBj
dXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgewotICAg
ICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxIb3N0RnVu
Y3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgIH0KKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBKU0NfSklUX0NBR0VEX1BPSU5URVJfUkVHSVNUUkFU
SU9OKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9yIChjb25zdCB1aW50cHRyX3Qq
IGN1cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytj
dXJyZW50KSB7Ci0gICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdp
c2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKLSAgICAgICAgaWYgKGNvZGVQdHIpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQ
dHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29kZVB0cikpOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKyNlbmRpZgorICAgIGlmIGNvbnN0ZXhwciAoQVNTRVJUX0VOQUJM
RUQpIHsKKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdpbkhvc3Q7
IGN1cnJlbnQgIT0gZW5kSG9zdDsgKytjdXJyZW50KSB7CisgICAgICAgICAgICB2b2lkKiBjb2Rl
UHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Cisg
ICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAgICBtYXAuYWRkKGNvZGVQdHIs
IFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdp
bk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytjdXJyZW50KSB7CisgICAg
ICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCpjdXJyZW50KSk7CisgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8T3BlcmF0aW9uUHRy
VGFnPihjb2RlUHRyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03Myw2ICs4NSw1NiBAQCB2
b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlKCkK
ICNlbmRpZgogfQogCit2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkph
dmFTY3JpcHRDb3JlRm9yTExJbnQoKQoreworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElE
QVRJT04pCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10geworCisjZGVmaW5lIExMSU5UX09QKG5hbWUpIFwKKyAgICBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4obmFtZSkpLCBcCisgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldFdp
ZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lKSksCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUs
IC4uLikgXAorICAgIExMSU5UX09QKG5hbWUjI19yZXR1cm5fbG9jYXRpb24pCisKKyAgICAgICAg
Y29uc3QgdWludHB0cl90IG9wZXJhdGlvbnNbXSA9IHsKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKSwK
KyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlKSksCisgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpKSwKKworICAg
ICAgICAgICAgTExJTlRfT1Aob3BfY2F0Y2gpCisgICAgICAgICAgICBMTElOVF9PUChsbGludF9n
ZW5lcmljX3JldHVybl9wb2ludCkKKworICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2dldF9ieV9pZCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfdmFsKQorICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV9pZCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorCisgICAg
ICAgICAgICBKU0NfSlNfR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NBVElPTikKKyAgICAg
ICAgICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAg
ICAgIH07CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGFkZFBv
aW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVkT3BlcmF0aW9ucywgbnVsbHB0ciwg
bnVsbHB0ciwgb3BlcmF0aW9ucywgb3BlcmF0aW9ucyArIFdURl9BUlJBWV9MRU5HVEgob3BlcmF0
aW9ucykpOworI3VuZGVmIExMSU5UX1JFVFVSTl9MT0NBVElPTgorICAgIH0pOworI2VuZGlmCit9
CisKKwogdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihj
b25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRp
b25zKQogewogICAgIFVOVVNFRF9QQVJBTShiZWdpbkhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAppbmRleCAwOTg0OTNmNTBi
MmFkMzNjZDFkOTc1NzRhMjgzZTlmZjhiOTY4MzY5Li41YTQwZmY3YzhjZmFkNmI0MjAzNzczYmQy
NGFkNTU3YjRjZTQyNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaApAQCAtMzksMTIgKzM5LDE1IEBAIGNsYXNzIEpJVE9wZXJh
dGlvbkxpc3QgewogCiAgICAgdm9pZCogY29udGFpbnModm9pZCogcG9pbnRlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKLSAgICAgICAgICAgIHJl
dHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikp
OworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisgICAgICAgIHJldHVybiBt
X3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikpOworI2Vs
c2UKICAgICAgICAgcmV0dXJuIHBvaW50ZXI7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpOworICAgIHN0YXRpYyB2b2lk
IHBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKGNvbnN0
IHVpbnRwdHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhvc3QsIGNvbnN0IHVp
bnRwdHJfdCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVuZE9wZXJhdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDQ1YjRiM2I0Njk2ODU1MmQ3ZGFjOTc4OGFmZjZjZjBiNDNkYjI2
YzYuLjRjOWE5ZWJhNGI2NGY0MWMxMGU5NDRkZjI0MzhhNmZkZWExN2JhNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC0zMzkyLDYgKzMzOTIsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxl
ci5icih0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRh
cmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJyKGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJl
c3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAzOWVhMTUx
MTQ3NjFhMDBlMDAwNTAzMTAwYmU3NmJkZTQ0YTJmOGM0Li5kMTg3ZDY5MzBlNmZkOWY2NjgzNzk4
ZGEzMzljNWExMzZkMDM0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0zMiw2ICszMiw5IEBACiAjaW5j
bHVkZSAiQVJNNjRFQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJBUk02NC5oIgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRl
IDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xMTAsMjAgKzExMywyOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0
RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICBzdGF0aWMgY29uc3RleHByIFJl
Z2lzdGVySUQgSW52YWxpZEdQUiAgPSBzdGF0aWNfY2FzdDxSZWdpc3RlcklEPigtMSk7CiAKICAg
ICBlbnVtIGNsYXNzIENhbGxTaWduYXR1cmVUeXBlIHsKLSAgICAgICAgQ0Z1bmN0aW9uQ2FsbCwK
LSAgICAgICAgT3RoZXJDYWxsCisgICAgICAgIEpJVENhbGwsCisgICAgICAgIE5hdGl2ZUNhbGws
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSnVtcFNpZ25hdHVyZVR5cGUgeworICAgICAgICBK
SVRKdW1wLAorICAgICAgICBOYXRpdmVKdW1wLAogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxDYWxs
U2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsVHJ1c3RlZFB0
cihSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURf
UEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIHBvaW50ZXJMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVs
KCk7CiAgICAgICAgIG1vdmVXaXRoRml4ZWRXaWR0aChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBpbnZh
bGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0
dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFheihk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9DQUxMKHR5cGUsIGRhdGFUZW1wUmVnaXN0ZXIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYihkYXRhVGVtcFJlZ2lzdGVy
LCB0YWdHUFIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxl
ci5sYWJlbCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXJMYWJlbCwgQVJNNjRBc3Nl
bWJsZXI6OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNhbGxMYWJlbCwgcG9pbnRlckxhYmVs
KSA9PSBSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpOwpAQCAtMTMyLDUxICsxNDMsNTMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02
NCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcgdGFnKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpjYWxsKHRhZyk7Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFn
KQotICAgICAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpD
RnVuY3Rpb25DYWxsPigpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAm
JiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0
clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIEFS
TTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2ln
bmF0dXJlVHlwZTo6T3RoZXJDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIHJl
dHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4oQVJNNjRSZWdp
c3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVU
eXBlOjpOYXRpdmVDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhZ0dQUik7
CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZl
Q2FsbD4odGFnR1BSKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxDYWxsU2lnbmF0dXJlVHlwZSB0
eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikKICAgICB7CisgICAgICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKICAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwog
ICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9
PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJscmFheih0YXJnZXRHUFIpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0Nf
SklUX0NBR0VEX0NBTEwodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIodGFyZ2V0R1BSLCB0YWdHUFIp
OwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpOb25lKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQ
UiwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAg
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJnZXRHUFIsIHRhZyk7
Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4odGFyZ2V0R1BS
KTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRy
VGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBl
OjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lzdGVyczo6
bHIpOwotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhl
ckNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxl
ZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpKSVRDYWxsPih0YXJnZXRHUFIsIEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVy
ZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVn
aXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxT
aWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BS
LCB0YWdHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
Ci0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbChhZGRyZXNzLCB0
YWcpOwotCisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBO
b1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVn
aXN0ZXIsIHRhZyk7CiAgICAgfQpAQCAtMTk3LDkwICsyMTAsMTI5IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAgICAgQUxXQVlT
X0lOTElORSBKdW1wIGp1bXAoKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpqdW1wKCk7
IH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUHRyVGFnIHRhZykKKyAg
ICB0ZW1wbGF0ZTxKdW1wU2lnbmF0dXJlVHlwZSB0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBmYXJKdW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BS
ID0gSW52YWxpZEdQUikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICAg
ICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9GQVJfSlVNUCh0eXBlLCB0YXJnZXRHUFIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnR1BSKTsK
KyAgICB9CisKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRhZyB0
YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAodGFyZ2V0LCB0YWcpOworICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAKICAg
ICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBSZWdpc3RlcklE
IGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAg
ICAgZmFySnVtcCh0YXJnZXQsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBl
KHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lz
dGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAg
IHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0YWcpCisgICAgdm9p
ZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXQpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdl
dCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZl
cnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsK
KyAgICAgICAgbW92ZSh0YXJnZXQsIHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBT
aWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0
aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFy
SnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lz
dGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIGlmICh0
YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6
ZmFySnVtcChhZGRyZXNzLCB0YWcpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQ
Uik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4o
dGFyZ2V0R1BSLCB0YWdHUFIpOworICAgIH0KIAotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyk7CisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCB0YWdHUFIpCisgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBk
aXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQo
YWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0
eUdQUik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRh
cmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwotICAgICAgICBt
X2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVy
PEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQog
Ci0gICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZv
aWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAg
ICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIpOworICAgICAgICBsb2FkNjQo
QWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8
SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAK
LSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVt
cChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgeworICAgICAgICBBU1NFUlQodGFn
ICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQo
Y2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIFJlZ2lz
dGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFy
Z2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAg
ICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAg
ICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRH
UFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdp
c3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlH
UFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCB0YWcpCisgICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFn
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0
YXJnZXRHUFIpOworICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1l
bW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVz
cywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAg
ICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIs
IGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3Rl
cjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIp
OwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUHRy
VGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOwotCisg
ICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7
CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbG9h
ZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIGRpdmVyc2l0eUdQUik7Ci0gICAgfQotCi0gICAgdm9pZCBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OwotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbG9hZDY0KEFkZHJl
c3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIHRhZyk7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVl
VHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBl
OjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBy
ZXQoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAg
IEpTQ19KSVRfQ0FHRURfUkVUKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5yZXRhYigpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMGM3NTk3
YmFmNjQyNjY0OTk2MzRhNTk4MDE3YmZiNjRjMzE2YTU2NC4uMmM5YjhmZjgwOTUxNmViMDc3NDRi
ZGZmODI2NzdhMGM2YzRmZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTE3MTksNiArMTcxOSwxMiBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
LmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1v
cnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBm
YXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGU2M2Fi
NDc1NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMuLmFkYWQ1NGNiMDI2MTdkMTE5NzFi
YjI0NWUwYTAzZjRkOGRhZGZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjAwNCw2ICsyMDA0LDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICB2b2lk
IGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1v
dmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgfQorCiAg
ICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKICAgICAgICAg
bV9maXhlZFdpZHRoID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAyOGZhZTJlNzJmMjU2
NTdlNjEzMzA1ZjIwMDNkZmNiZWE1ZWVjYTlhLi43NmRkYjU3Njk0ZGEyNGY0YWU4MDViMDQ5M2I0
MmE4ZTY0MmYzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yNzUwLDYgKzI3NTAsMTIgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX3IodGFyZ2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAg
ICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICAvLyBBZGRy
ZXNzIGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0
bwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAyZmVk
MTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxLi4wNTdiMzA3OGMyYjdlODY5Mzkz
MmI5MDVmMTk0ZDNmNzdiNDY0MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0MDMsNiArMTQwMyw3IEBACiBvcCA6bGxpbnRfaW50
ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9leGl0
X3RyYW1wb2xpbmUKK29wIDpub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZQogb3AgOmZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpsbGludF9nZXRfaG9zdF9jYWxsX3JldHVy
bl92YWx1ZQogb3AgOmxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24KQEAgLTE0MTksNiAr
MTQyMCw0MCBAQAogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscwogCitvcCA6b3BfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbgorb3Ag
Om9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX29wZW5f
c2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9uZXh0X3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6b3BfdGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2Fs
bF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCisKK29w
IDpqc190cmFtcG9saW5lX29wX2NhbGwKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbAor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVy
YXRvcl9uZXh0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJh
cmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93CitvcCA6
anNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRl
cmF0b3JfbmV4dF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3cK
K29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3Vu
dGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a190YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2tfdW50YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbAorb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rf
bm9fdGxzCisKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKIGJlZ2luX3NlY3Rpb24gOldh
c20sCkBAIC0xNDMzLDYgKzE0NjgsMTEgQEAKIAogb3AgOnRocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmUKIAorb3AgOmNhbGxfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9ub190bHNfcmV0
dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9yZXR1cm5fbG9jYXRpb24KK29wIDpjYWxs
X2luZGlyZWN0X25vX3Rsc19yZXR1cm5fbG9jYXRpb24KKwogIyBGSVhNRTogV2FzbSBhbmQgSlMg
TExJbnQgc2hvdWxkIHNoYXJlIGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxNTAzYmYwMzg0N2E2NDg1MzM5MTEyNzc2OGQ3
MDI1MGU4OWE1MzguLmIwNjE1MGZjY2Y0YzdkZGE1ZTUxY2M1ZmFkNjNjZDMxMWQxODIzNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTMy
MCw2ICszMjAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9w
Y29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgbGxpbnRfaGFu
ZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRf
dHJhbXBvbGluZToKKyAgICBjYXNlIG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNh
c2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoKICAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1
cm5fbG9jYXRpb246CkBAIC0zMzEsOCArMzMyLDQwIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3JldHVybl9s
b2NhdGlvbjoKKyAgICBjYXNlIG9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRp
b246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBj
YXNlIG9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWU6CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RsczoK
KyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVf
b3BfdGFpbF9jYWxsOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Q6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHQ6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfc2xv
dzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2NvbnN0cnVjdF9zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9v
cF9jYWxsX3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfZXZhbF9zbG93Ogor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2l0ZXJhdG9yX29wZW5fc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZzoKKyAg
ICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja191bnRhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6CisgICAgY2Fz
ZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorICAgIGNhc2Ugd2FzbV90cmFt
cG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RD
b21waWxlOwogICAgIH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCBkZDY2NmZhYTgzZTgzNTA5ZTY1YjA3NTU3NjIyZjA4YTk0OTQyMWJkLi5hYzRiOGM1NzNiODI2
YjZhMzBjNjNmZWRiNDI1OGI1YWZiZWI1Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xMzgsMjEgKzEz
OCwyMSBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgZG9uZUFkanVzdGluZy5saW5rKCZqaXQpOwog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMo
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxs
Qnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZCwg
Ym9vbCYgY2FsbGVySXNMTEludCkKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhp
dFB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNh
bGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIHRydWVDYWxsZXJDYWxsS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCkKIHsKICAgICBjYWxs
ZXJJc0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGJhc2VsaW5lQ29k
ZUJsb2NrRm9yQ2FsbGVyLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazsK
IAogICAgIGlmIChjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAgICAgICAgaWYg
KCFjYWxsZXJJc0xMSW50KQogICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIt
Pm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBMTEludDo6Z2V0Q29k
ZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxs
X3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJv
bUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgIH0KIAotICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0OwogCiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+
aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7Ci0jZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQorI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgTExJbnQ6
OnJldHVybkxvY2F0aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbEluc3RydWN0
aW9uLndpZHRoKCkpLmNvZGUoKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5k
KSB7CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CkBAIC0yMDksNyArMjA5
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBD
KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBiYXNlbGluZUNv
ZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChjYWxsQnl0
ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwog
Ci0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpOworICAgICAgICAgICAganVtcFRhcmdldCA9
IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0YWdnZWQ8T1NSRXhpdFB0clRh
Zz4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyNiwxMyArMjI2LDEz
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgLy8gNi4gKEIpIGdl
dHMgT1NSIGV4aXQuIChCKSBhdHRlbXB0cyB0byBzZWFyY2ggZm9yIFN0cnVjdHVyZVN0dWJJbmZv
IGluIChBKSBmb3IgUHV0QnlJZCAob3JpZ2luYWxseSwgcHV0X2J5X3ZhbCkuIEJ1dCBpdCBkb2Vz
IG5vdCBleGlzdCBzaW5jZSAoQSkncyBKSVREYXRhIGlzIGNsZWFyZWQgb25jZS4KICAgICAgICAg
ICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVy
LT5maW5kQnlWYWxJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChieVZhbEluZm8pOwotICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBieVZhbEluZm8tPmRvbmVUYXJnZXQucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsK
KyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFn
Z2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJ
bmRleCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8pOwotICAgICAgICAg
ICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24ucmV0YWdnZWQ8SlNFbnRyeVB0
clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9u
LnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgYXV0byBjYWxs
Qnl0ZWNvZGVJbmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVy
UmV0dXJuUEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0
cnVlQ2FsbGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOworICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGp1bXBUYXJnZXQgPSBjYWxsZXJSZXR1cm5QQyhi
YXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgY2FsbEJ5dGVjb2RlSW5kZXgsIHRydWVDYWxsZXJD
YWxsS2luZCwgY2FsbGVySXNMTEludCk7CiAKICAgICAgICAgICAgIGlmICh0cnVlQ2FsbGVyLT5p
bmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCkBAIC00MDIs
MTEgKzQwMiwxMSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICBpZiAoZXhpdFRvTExJbnQp
IHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOwogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9u
ID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0
cigpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGlu
YXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBkZXN0
aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAg
ICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVj
a3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBM
TEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CiAgICAgICAg
IGVsc2UgCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpTRW50
cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9
IExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogCiAgICAgICAg
IGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86
OnJlZ1QyKTsKQEAgLTQxNiwyMiArNDE2LDIyIEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhp
dC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRhdGFUYWJsZUdQUik7
CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tG
b3JFeGl0LT5pbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwYkdQ
Uik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwY0dQUik7Ci0gICAgICAgIGp1bXBU
YXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvZGVCbG9ja0ZvckV4aXQtPm1faGFzTGlu
a2VkT1NSRXhpdCA9IHRydWU7CiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBleGl0SW5kZXggPSBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBkZXN0aW5hdGlvbjsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoZXhpdElu
ZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGlu
ZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChjb2Rl
QmxvY2tGb3JFeGl0LT5ieXRlY29kZUluZGV4Rm9yRXhpdChleGl0SW5kZXgpID09IGV4aXRJbmRl
eCk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVN
YXAoKS5maW5kKGV4aXRJbmRleCk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9j
a0ZvckV4aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCkucmV0YWdnZWQ8T1NSRXhpdFB0
clRhZz4oKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbik7CiAKLSAg
ICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQogCiAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihjb2RlQmxvY2tGb3JF
eGl0KSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQXNz
ZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRleCAzOTExNGVh
Njc3MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkLi5kYmEwZmUzMjJiZjg4MWM5NWMyMmRi
ODUwNjE2MjQyMDRhNmFhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiwgQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwotTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50
KTsKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUq
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGZmOWE4YWZkMDU5NDVjMjliOTc4
YzFmZjNjZjk3YTIyMmJiNGI5MjEuLjliZTY0YmJkZjBmMjhmZDU3NGE0MjU4ODRjZDUzNDFkZjFh
NjY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtNDgsNiArNDgsMTggQEAKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNp
bmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUo
SklUX0NBR0UpCisjaWYgT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
IE1BUF9KSVQKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1B
UF9KSVQKKyNlbHNlIC8vIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VCAwCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCisjZW5k
aWYgLy8gT1MoREFSV0lOKQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKwogZXh0ZXJuICJD
IiB7CiAgICAgLyogUm91dGluZSBtYWNoX3ZtX3JlbWFwICovCiAjaWZkZWYgbWlnX2V4dGVybmFs
CkBAIC0xMzksOCArMTUxLDggQEAgdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIAogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUgPSAxOwog
ICAgICAgICBjb25zdGV4cHIgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
IHwgUFJPVF9FWEVDOwotICAgICAgICBjb25zdGV4cHIgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiB8IE1BUF9KSVQ7CiAgICAgICAgIGNvbnN0ZXhwciBpbnQgZmQgPSBPU0FsbG9j
YXRvcjo6SlNKSVRDb2RlUGFnZXM7CisgICAgICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwg
TUFQX0FOT04gfCAoT3B0aW9uczo6dXNlSklUQ2FnZSgpID8gTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VF9XSVRIX0pJVF9DQUdFIDogTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCk7CiAgICAgICAgIHZvaWQq
IGFsbG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHByb3RlY3Rpb24sIGZsYWdzLCBmZCwg
MCk7CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVy
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbiAhPSBleGVjdXRhYmxlTWVtb3J5
QWxsb2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhhdmUgYWxsb2NhdGVkIGV4ZWN1dGFi
bGUgbWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4iKTsKQEAgLTMyNCw5ICszMzYsOSBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlvbiBpbml0aWFsaXplSklUUGFnZVJl
c2VydmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIEpJVCBjb2Rl
IGxvZ2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2RlIGlzIG5vdCByZWNvcmRlZCBjb3Jy
ZWN0bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgdXNlIGNvbW1pdHRl
ZCByZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVtcCBsb2dnaW5nLgogICAgICAgICBp
ZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAgICAgICAgICAgIHJldHVybiBQYWdl
UmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNp
emUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxF
LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRD
b21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENv
ZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBmYWxzZSk7CiAjZW5kaWYK
LSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJl
c2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BP
T0xfV1JJVEFCTEUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uID0gdHJ5Q3Jl
YXRlUGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAppbmRleCA3NGRhZTIyNmY1NDViN2FhYWYzNDc4NzQ0MzM2NDI3MDAxNWJkMGE0
Li44ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDYgKzQ2NSwxMCBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBY
ODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IFg4NlJlZ2lz
dGVyczo6ZWF4OworI2lmICFPUyhXSU5ET1dTKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHdhc21TY3JhdGNoR1BSMSA9IFg4NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCiAKICAgICAvLyBG
SVhNRTogSSBiZWxpZXZlIHRoYXQgYWxsIHVzZXMgb2YgdGhpcyBhcmUgZGVhZCBpbiB0aGUgc2Vu
c2UgdGhhdCBpdCBqdXN0IGNhdXNlcyB0aGUgc2NyYXRjaAogICAgIC8vIHJlZ2lzdGVyIGFsbG9j
YXRvciB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcmVnaXN0ZXIgYW5kIHBvdGVudGlhbGx5IHNwaWxs
IHRoaW5ncy4gSXQgd291bGQgYmUgYmV0dGVyCkBAIC02MzQsNyArNjM4LDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gQVJNNjRSZWdpc3Rl
cnM6OngyMjsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBV
c2VkIGJ5IEZUTCBvbmx5Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJN
NjRSZWdpc3RlcnM6OngyNTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyBudW1iZXJUYWcK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBBUk02NFJlZ2lzdGVyczo6eDI4
OyAvLyBub3RDZWxsTWFzawpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2
ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpp
cDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJNNjRS
ZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BS
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJl
Y3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJl
Y3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
CmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0NmU5
MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkK
IHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9j
YWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2Vt
Ymx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkp
OworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29kZUlu
ZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3MWRk
OTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5MjJk
NWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFn
VHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52
YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNoVG9T
YXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwotICAg
IGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0b3Jl
KHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29u
KFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAgICAg
ICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0YWcs
IHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7
CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAvLyBX
ZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1
dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggYmZh
NGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2ZDhj
ZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNsdWRl
ICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNfQVNT
RVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAot
CiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwyMiBA
QCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAogI2Vu
ZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2
b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFp
bENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpT
RW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0aW9u
SGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxMSW50
VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lmIEVO
QUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJM
RShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFw
LCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxpbnQu
b3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYgKzgz
LDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKworICAg
IEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJ
bnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFnKSBc
CisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAgICAg
IGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmso
cmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJ
bnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1
cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNvZGVS
ZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpz
X3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3Qo
TExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9s
aW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50Ojpn
ZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmln
LmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIp
XSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0g
d2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dBVEUp
CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNNX0dB
VEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVS
ZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJl
dGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0
aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChj
cmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBP
cGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7
IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAg
ICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFt
ZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01fR0FU
RV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChj
cmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3Bl
cmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQdHJU
YWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2Rl
UHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50
cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
Z2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCld
ID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAg
eworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6
dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2
bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9O
YXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46
OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlv
blB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGlu
ZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAgICBn
X2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWls
Q2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxl
QWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNj
Q29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2VwdGlv
bkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0dXJu
RnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZv
aWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZyb21M
TEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYuZ2V0
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRodW5r
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9IGVu
dHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RI
VU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0NvZGVS
ZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVj
dCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJh
dGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRhZ0Nv
ZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0
aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBcCisg
ICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50
OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUj
I190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6Z2V0
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNfdW50
YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdldCgp
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1bnRh
Z0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxl
ICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19U
SFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0ZTI3
MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMxZmVh
MjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0yMDQs
NiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bjb2Rl
V2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENP
REVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bj
b2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNv
ZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1P
cGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRyKFdh
c21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFnQ29k
ZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsK
K30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7Cisg
ICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUx
NihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcs
IHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+Ojpj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0clRh
ZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdpZGUz
MkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAgICBh
ZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOworICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sK
KyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29k
ZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNl
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4o
b3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3Rl
bXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRy
PHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJ
RCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8
UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihv
cGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1w
bGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vsc2UK
IEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2ZDI0
OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uYzFhMjhmMGE0OWU1MWM4NTRhZDM2
MWJlNWRiMGU4MTgzZTk0NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB2
b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBq
c1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
anNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQpOwor
ZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGluZShQ
dHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOworfQor
I2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2st
PnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lkIHNl
dEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGlj
IERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShlbnRy
eXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSksIGVu
dHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQ
cm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFy
ZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERp
cmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2Rl
OjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJl
Y3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnBy
ZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAg
ICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSht
YWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMgdm9p
ZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0
aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5l
KGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIElu
dHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwor
I2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNF
bnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFy
ZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYo
KmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENv
ZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
IGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1w
b2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5z
aWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNl
CiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpq
aXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVBy
b2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVK
SVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNU
cmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVu
aywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJl
ZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzQgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRy
eXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAgIHJl
dHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJu
X3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAg
ICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bj
b2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29kZVNp
emU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIHNldEVudHJ5cG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFjODQ4
NDFkYmZkOC4uMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0N2I4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKyNpbmNsdWRl
ICJPcGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw1ICs0Miw3IEBAIHZv
aWQgc2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3Vu
dEZvcihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBv
aW50RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBiYmExMjBhN2M1NTg1OGYzNzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhLi5hMzQ3YzYyMzlhY2Rm
ZDlmZTMwZDU4NGYwMDAzOGM0YjUwYjk2MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUgSlNW
YWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAgTExJ
TlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFn
PihjYWxsVGFyZ2V0KSksIChjYWxsRnJhbWUpKQorICAgIExMSU5UX1JFVFVSTl9UV08oKHJldGFn
Q29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQp
KSwgKGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3Qs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBKU0ds
b2JhbE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhp
bnRFeGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIgPj0g
T3B0aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxG
cmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6
OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAogICAg
IApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nv
bnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJh
cmdzPihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpP
YmplY3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVy
blR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50
KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KGJ5dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxG
cmFtZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+c2V0
UmV0dXJuUEMocmV0dXJuUG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgY2FsbGVlRnJh
bWUtPnNldFJldHVyblBDKHJldHVyblBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFtZS0+
c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2Fs
bF9ldmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTElu
dDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJp
Y1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJu
IGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNv
bW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRy
eXBvaW50KE9wY29kZVNpemU6OldpZGUxNikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwo
Y2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2Fs
bEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6
ZTo6V2lkZTMyKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQp
CkBAIC0yMjY1LDggKzIyNjUsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRj
aFRvTmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAgIGlm
IChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotICAgICAgICBhdXRvIG5leHRCeXRlY29kZSA9
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCpwYy5uZXh0KCkucHRyKCkpOwotICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgbmV4dEJ5dGVjb2RlLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
bmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggNzg1MzYwZjQ4NzYwNzFhZmQ2NGFkMWNm
ZTFiYThiZWE4MzhhYjNkMi4uYTYxNjI1ZGE4OTRmNDk4ZTk0MGJlYzE0NTJjNWU5ZTZlOTVmMjQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBAIC00
MCw2ICs0MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorI2RlZmluZSBKU0NfQU5OT1RBVEVfTExJ
TlRfSklUX09QRVJBVElPTihuYW1lKSBcCisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04o
X0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCisKKyNkZWZpbmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT05fV0lUSF9ERUNMQVJFKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIHZvaWQgbmFt
ZSh2b2lkKTsgXAorICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNu
YW1lLCBuYW1lKQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT04oaml0Q2FnZVB0ckdhdGVBZnRlcik7CisjZW5kaWYKK0pTQ19BTk5PVEFURV9M
TElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHQpOworSlNDX0FOTk9UQVRFX0xM
SU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlKTsKK0pTQ19BTk5PVEFURV9MTElOVF9K
SVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRF
X0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKTsKK0pTQ19BTk5P
VEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9U
QVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOwor
CisjZW5kaWYKKwogbmFtZXNwYWNlIExMSW50IHsKIAogLy8gVGhlc2UgdGh1bmtzIGFyZSBuZWNl
c3NhcnkgYmVjYXVzZSBvZiBuZWFyQ2FsbCB1c2VkIG9uIEpJVGVkIGNvZGUuCkBAIC01Miw3ICs3
NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0
OwogCi0gICAgYXNzZXJ0SXNUYWdnZWRXaXRoPEpTRW50cnlQdHJUYWc+KHRhcmdldCk7CisgICAg
YXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdh
c206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CkBAIC02
MCwxNiArODIsNTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKICAgICBDQ2FsbEhlbHBlcnM6
OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKICNlbmRpZgogICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gp
OwotICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5mYXJK
dW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyB0aHVuayIs
IHRodW5rS2luZCk7CiB9CiAKIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oT3Bjb2RlSUQgb3Bjb2Rl
SUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9w
Y29kZUlEKSwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQp
LCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisKKyAgICBMTEludENvZGUgdGFyZ2V0ID0gTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3Bl
cmF0aW9uUHRyVGFnPih0YXJnZXQpOworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIEND
YWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50
aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyNlbHNlCisgICAgQ0NhbGxIZWxwZXJzOjpS
ZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6cmVnVDA7CisjZW5kaWYKKyAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gpOworICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAi
TExJbnQgJXMganVtcCB0byBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChMTEludENvZGUgdGFyZ2V0LCBjb25zdCBjaGFy
ICp0aHVua0tpbmQpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIGFzc2VydElzVGFn
Z2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlvblB0clRhZyk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHJldHVybiBwb2ludCB0aHVu
ayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChP
cGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PHRhZz4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmsoKQpAQCAtNzcsNyArMTM2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICB9KTsKICAgICByZXR1cm4g
Y29kZVJlZjsKIH0KQEAgLTg3LDcgKzE0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29u
c3RydWN0IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtOTcsNyArMTU2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0
clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3Ig
Y2FsbCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEwNyw3ICsxNjYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssICJmdW5jdGlv
biBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25z
dHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsK
IH0KQEAgLTExNyw3ICsxNzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZXZhbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxs
aW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVm
OwogfQpAQCAtMTI3LDcgKzE4Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBwcm9ncmFtRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNF
bnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CisgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRy
eVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMzcsNyArMTk2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CiB9CkBAIC0xNDksOSArMjA4LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewog
ICAgICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdh
c21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1
bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxz
LCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQpAQCAtMjE3LDcgKzI3Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUg
c2l6ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0gewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJv
cF9jYXRjaCIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0K
QEAgLTIyNSw3ICsyODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bf
Y2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRX
aWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRj
aDE2IikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAgfQpAQCAt
MjMzLDcgKzI5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcF9jYXRj
aCksICJvcF9jYXRjaDMyIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUz
MkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMzIi
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0yNDIs
NiArMzAxLDI4NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2lu
dFRodW5rKE9wY29kZVNpemUgc2l6ZSkKK3sKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNl
IE9wY29kZVNpemU6Ok5hcnJvdzogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBj
b2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJU
YWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDE2Iikp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIGNhc2Ug
T3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSwg
ImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50MzIiKSk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgfQorfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpCit7Cisg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVybl9l
YXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQi
KSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0
ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUp
Cit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1Qz
LCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVy
KSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVy
YXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNtR2F0
ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUpCit7Cisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86Ondhc21TY3JhdGNo
R1BSMCwgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9p
bnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7CisgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIHdhc20gY2Fs
bCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFnKQoreworICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCB0
YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpCit7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2Fs
bEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3AgT1NSIGVudHJ5IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOworICAg
ICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOwor
CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJl
ZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZXhj
ZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5m
YXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKKworICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAg
ICAgIGppdC5yZXQoKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJvbUxMSW50IHRodW5r
IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikK
K3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUMyk7CisgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRSZWdpc3RlcnM6Omxy
KTsKKyAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBq
aXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ0YWcgdGh1bmsi
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50
YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFSTTY0UmVnaXN0
ZXJzOjpscik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50
ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkKK3sKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVycyBq
aXQ7CisgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFKGppdCk7CisgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJqaXRDYWdlUHRyIHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NS
RXhpdFB0clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+
IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihub3JtYWxfb3NyX2V4
aXRfdHJhbXBvbGluZSwgIm5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAg
IH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxP
U1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsICJjaGVja3BvaW50
X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVS
ZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50
T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNv
ZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0X2Zy
b21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1
cm5Mb2NhdGlvblRodW5rKE9wY29kZUlEIG9wY29kZUlELCBPcGNvZGVTaXplIHNpemUpCit7Cisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBcCisgICAgY2FzZSBuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uOiB7IFwKKyAgICAgICAgc3dpdGNoIChzaXplKSB7IFwKKyAgICAgICAgY2Fz
ZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwK
KyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRy
VGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbiksICAjbmFtZSAiX3JldHVybl9sb2NhdGlvbiB0aHVuayIpKTsgXAorICAg
ICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0g
XAorICAgICAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeyBcCisgICAgICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFn
Pj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBv
aW50PE9TUkV4aXRQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0
aW9uMTYgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4g
Y29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6
IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTMy
Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiks
ICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMzIgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBc
CisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBc
CisgICAgICAgIHJldHVybiB7IH07IFwKKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpCisgICAgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0
ZXJhdG9yX25leHQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCkKKyAg
ICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Z2V0X2J5X3ZhbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X2lkKQorICAg
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4
IDAzNjhjZTlhMmRhMDYwNGY0MzcyNDUyZWUxMmY4N2M0ZTYzOGRiMGQuLmE5MjJiMjU5OWI5YzYz
OTQ5YjU1YjNhMTRmNWI3NmM1ZWI1ZTYxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCkBAIC00MCw2ICs0MCwyMiBAQCBleHRlcm4gIkMiIHsKICAgICBFbmNv
ZGVkSlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsK
IH0KIAorI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCitleHRlcm4gIkMiIHsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQp
OworI2VuZGlmCisKKyAgICB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIodm9pZCk7
CisgICAgdm9pZCB2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIodm9pZCk7CisKKyAgICB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7Cisg
ICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2
b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tV
bnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7Cit9CisjZW5kaWYKKwogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHZtRW50cnlUb1dhc20odm9pZCogY29kZSwgVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogZnJhbWUpCiB7CiAgICAgYXV0byBjbG9iYmVyaXplVmFsaWRhdG9yID0gbWFrZVNjb3Bl
RXhpdChbJl0gewpAQCAtNTksMTEgKzc1LDMyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhP
cGNvZGVTaXplKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJS
ZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvd1RodW5rKCk7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25U
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSk7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCosIFB0clRh
ZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2Fs
bEdhdGUoUHRyVGFnKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBleGNlcHRpb25I
YW5kbGVyR2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHRhZ0dhdGVUaHVuayh2b2lkKik7
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJh
bXBvbGluZVRodW5rKCk7CisjaWYgRU5BQkxFKERGR19KSVQpCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8T1NSRXhpdFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21J
bmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4
aXRQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQsIE9wY29kZVNpemUpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWUzY2RlOTkwNGMxMDJiZWVlZjQ3YjE0ZjM1ZmY2OTUx
NjlmYTk3Zi4uZmJkYWI5YjUyMjQ5OTY0MGQxNDljMjRjMzM4MWEyYmY1NmE0ZjIyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtMjU2LDkgKzI1NiwxMiBAQCBjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBj
b25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdQogY29uc3QgQnl0
ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKIGNvbnN0IEpTRW50cnlQdHJU
YWcgPSBjb25zdGV4cHIgSlNFbnRyeVB0clRhZwogY29uc3QgSG9zdEZ1bmN0aW9uUHRyVGFnID0g
Y29uc3RleHByIEhvc3RGdW5jdGlvblB0clRhZworY29uc3QgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
ID0gY29uc3RleHByIEpTRW50cnlTbG93UGF0aFB0clRhZworY29uc3QgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnID0gY29uc3RleHByIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwogY29uc3QgRXhjZXB0aW9u
SGFuZGxlclB0clRhZyA9IGNvbnN0ZXhwciBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCitjb25zdCBZ
YXJyRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgWWFyckVudHJ5UHRyVGFnCiBjb25zdCBOb1B0clRh
ZyA9IGNvbnN0ZXhwciBOb1B0clRhZwotY29uc3QgU2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4cHIg
U2xvd1BhdGhQdHJUYWcKKyAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogIyAtIFdl
IHVzZSBhIHBhaXIgb2YgcmVnaXN0ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdpc3Rl
ciBmb3IgdGhlCkBAIC0xMDI2LDcgKzEwMjksNyBAQCBtYWNybyB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgZW5kCiBlbmQKIAotbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUs
IHNpemUpCittYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIG1h
Y3JvIGRlZmluZU5hcnJvdygpCiAgICAgICAgIGlmIG5vdCBDX0xPT1BfV0lOCiAgICAgICAgICAg
ICBfJW9wY29kZU5hbWUlX3JldHVybl9sb2NhdGlvbjoKQEAgLTEwNDgsMzIgKzEwNTEsODIgQEAg
bWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgc2l6
ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikgZigp
IGVuZCkKIGVuZAogCitpZiBBUk02NEUKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwg
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIKK2Vu
ZAorCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxs
ZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xv
b3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgbWFjcm8g
Y2FsbE5hcnJvdygpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUl
KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUl
OgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0clRhZworICAgICAgICBlbmQKKworICAgICAg
ICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3Rl
eHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bj
b2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcK
KyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gY2FsbFdpZGUzMigpCisgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXplLCBhMgorICAg
ICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAg
ICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6CisgICAgICAgICAg
ICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVuZAorCisgICAgICAgIG1vdmUgY2FsbGVl
LCB0MworICAgICAgICBzaXplKGNhbGxOYXJyb3csIGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1h
Y3JvIChnZW4pIGdlbigpIGVuZCkKICAgICBlbHNlCiAgICAgICAgIGNhbGwgY2FsbGVlLCBjYWxs
UHRyVGFnCisgICAgICAgIGlmIEFSTXY3IG9yIE1JUFMKKyAgICAgICAgICAgICMgSXQgaXMgcmVx
dWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMK
KyAgICAgICAgICAgICMgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9m
IGluc3RydWN0aW9ucworICAgICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1
dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKKyAgICAgICAgICAgICMgY3Jhc2hlcy4KKyAg
ICAgICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQorICAgICAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQorICAgICAgICBlbmQKICAgICBlbmQKKyAgICBkZWZp
bmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorICAgIHJlc3RvcmVTdGFja1BvaW50ZXJB
ZnRlckNhbGwoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIAotICAgIGlmIEFS
TXY3IG9yIE1JUFMKKyAgICBpZiBub3QgQVJNNjRFCiAgICAgICAgICMgSXQgaXMgcmVxdWlyZWQg
aW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKICAgICAg
ICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rp
b25zCiAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGlu
ZyBpbiB1bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hlcy4KLSAgICAgICAgcmVzdG9yZVN0YWNr
UG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkK
KyAgICAgICAgbWFjcm8gbGFiZWxOYXJyb3coKQorICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVf
JW9wY29kZU5hbWUlOgorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBsYWJlbFdpZGUxNigp
CisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTE2OgorICAgICAg
ICBlbmQKKworICAgICAgICBtYWNybyBsYWJlbFdpZGUzMigpCisgICAgICAgICAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICBlbmQKKyAgICAgICAgc2l6ZShs
YWJlbE5hcnJvdywgbGFiZWxXaWRlMTYsIGxhYmVsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBl
bmQpCisgICAgICAgIGNyYXNoKCkKICAgICBlbmQKLSAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFi
ZWwob3Bjb2RlTmFtZSwgc2l6ZSkKLSAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkK
LSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiBlbmQKIAotbWFjcm8gcHJlcGFyZUZv
clJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKK21h
Y3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0LCBjYWxsUHRyVGFnKQogICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiBlbmQK
IAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZQotbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxs
KGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKK21hY3JvIHByZXBhcmVG
b3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBjYWxsUHRyVGFn
KQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgpAQCAtMTEw
OSw4ICsxMTYyLDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRl
bXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIGlmIEFSTTY0RQotICAgICAg
ICBhZGRwIDE2LCBjZnIsIHRlbXAzCi0gICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1wMwor
ICAgICAgICBhZGRwIDE2LCBjZnIsIHRlbXA0CiAgICAgZW5kCiAKICAgICBzdWJwIHRlbXAyLCB0
ZW1wMQpAQCAtMTEzMCw3ICsxMTgyLDE0IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxs
ZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgZW5kCiAKICAgICBtb3Zl
IHRlbXAxLCBzcAotICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAg
ICAgICAgbW92ZSB0ZW1wNCwgYTIKKyAgICAgICAgbW92ZSBjYWxsZWUsIGEwCisgICAgICAgIGxl
YXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsg
KGNvbnN0ZXhwciBHYXRlOjp0YWlsQ2FsbCVjYWxsUHRyVGFnJSkgKiBQdHJTaXplLCBhMQorICAg
ICAgICBqbXAgW2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgJWNhbGxQdHJUYWclCisgICAg
ZWxzZQorICAgICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCisgICAgZW5kCiBlbmQKIAogbWFj
cm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKQEAgLTExNDQsMTYgKzEyMDMsMTYgQEAg
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxlZSwgY2FsbGVlRnJh
bWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9udFVwZGF0ZVNQCiAg
ICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAgICAgcHJlcGFyZUNh
bGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIHByZXBh
cmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlTbG93UGF0aFB0clRhZykKICAg
ICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bj
b2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAg
ICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNh
bGxlZSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIAogbWFjcm8g
Z2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkKICAgICBjcmFzaCgp
ICMgV2UgZG9uJ3QgcmVhY2ggdGhpcyBpbiBzdHJhaWdodCBsaW5lIGNvZGUuIFdlIG9ubHkgcmVh
Y2ggaXQgdmlhIHJldHVybmluZyB0byB0aGUgY29kZSBiZWxvdyB3aGVuIHJlY29uc3RydWN0aW5n
IHN0YWNrIGZyYW1lcyBkdXJpbmcgT1NSIGV4aXQuCiAKLSAgICBkZWZpbmVPU1JFeGl0UmV0dXJu
TGFiZWwob3BOYW1lLCBzaXplKQorICAgIGRlZmluZVJldHVybkxhYmVsKG9wTmFtZSwgc2l6ZSkK
IAogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGxvYWRpIExMSW50UmV0
dXJuUENbY2ZyXSwgUEMKQEAgLTEzNTEsNyArMTQxMCw2IEBAIGVuZAogIyBpbiB0MS4gTWF5IGFs
c28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCiBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tH
ZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAg
IyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCi0gICAg
dGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogCiAgICAg
aWYgVFJBQ0lORwpAQCAtMTM3OSwxNiArMTQzNywyNSBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAg
ICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCiAgICAgICAgIG1vdmUgY2ZyLCBzcCAjIHJlc3RvcmUg
dGhlIHByZXZpb3VzIHNwCiAgICAgICAgICMgcG9wIHRoZSBjYWxsZXJGcmFtZSBzaW5jZSB3ZSB3
aWxsIGp1bXAgdG8gYSBmdW5jdGlvbiB0aGF0IHdhbnRzIHRvIHNhdmUgaXQKLSAgICAgICAgaWYg
QVJNNjQgb3IgQVJNNjRFCisgICAgICAgIGlmIEFSTTY0CisgICAgICAgICAgICBwb3AgbHIsIGNm
cgorICAgICAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgICAgICMgdW50YWdSZXR1cm5BZGRyZXNz
IHdpbGwgYmUgcGVyZm9ybWVkIGluIEdhdGU6OmVudHJ5T1NSRW50cnkuCiAgICAgICAgICAgICBw
b3AgbHIsIGNmcgotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgICAgIGVs
c2lmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgICAgIHBvcCBs
cgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAgIGVuZAotICAgICAg
ICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAg
IG1vdmUgcjAsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6ZW50cnlPU1JFbnRy
eSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1wIHIwLCBK
U0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIC5yZWNvdmVyOgogICAgICAgICBub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CkBAIC0xNDk0LDcgKzE1NjEs
MTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5
TExJbnQoKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0CisgICAgaWYgQVJN
NjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0ND
b25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6
ZSwgYTIKKyAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgIGVsc2UK
KyAgICAgICAgcmV0CisgICAgZW5kCiBlbmQKIAogIyBUaGlzIGJyZWFrIGluc3RydWN0aW9uIGlz
IG5lZWRlZCBzbyB0aGF0IHRoZSBzeW50aGVzaXplZCBsbGludFBDUmFuZ2VTdGFydCBsYWJlbApA
QCAtMTUyNSw2ICsxNTk3LDE3IEBAIGVsc2UKIGVuZAogICAgIGRvVk1FbnRyeShtYWtlSG9zdEZ1
bmN0aW9uQ2FsbCkKIAorZ2xvYmFsIF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIKK2dsb2JhbCBfdm1F
bnRyeVRvWWFyckpJVAorX3ZtRW50cnlUb1lhcnJKSVQ6CisgICAgZnVuY3Rpb25Qcm9sb2d1ZSgp
CitpZiBBUk02NCBvciBBUk02NEUKKyAgICBqbXAgdDUsIFlhcnJFbnRyeVB0clRhZworICAgIF92
bUVudHJ5VG9ZYXJySklUQWZ0ZXI6CitlbmQKKyAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKKyAgICBy
ZXQKKwogCiBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICMgdm9pZCBzYW5pdGl6
ZVN0YWNrRm9yVk1JbXBsKFZNKiB2bSkKQEAgLTE1NzAsNiArMTY1Myw3MSBAQCBpZiBub3QgKENf
TE9PUCBvciBDX0xPT1BfV0lOKQogICAgICAgICByZXQKIGVuZAogCitpZiBBUk02NEUKKyAgICAj
IHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0cl90IHRhZykKKyAgICBlbWl0
ICIuZ2xvYmwgX2ppdENhZ2VQdHIiCisgICAgZW1pdCAiX2ppdENhZ2VQdHI6IgorICAgICAgICB0
YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpT
Qzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpqaXRDYWdlUHRy
KSAqIFB0clNpemUsIHQyCisgICAgICAgIGptcCBbdDJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcK
KyAgICAgICAgZ2xvYmFsIF9qaXRDYWdlUHRyR2F0ZUFmdGVyCisgICAgICAgIF9qaXRDYWdlUHRy
R2F0ZUFmdGVyOgorICAgICAgICByZXQKKworICAgIGdsb2JhbCBfdGFpbENhbGxKU0VudHJ5VHJh
bXBvbGluZQorICAgIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lOgorICAgICAgICB1bnRhZ1Jl
dHVybkFkZHJlc3MgYTIKKyAgICAgICAgam1wIGEwLCBKU0VudHJ5UHRyVGFnCisKKyAgICBnbG9i
YWwgX3RhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZQorICAgIF90YWlsQ2FsbEpTRW50
cnlTbG93UGF0aFRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBhMgorICAg
ICAgICBqbXAgYTAsIEpTRW50cnlTbG93UGF0aFB0clRhZworCisgICAgZ2xvYmFsIF9leGNlcHRp
b25IYW5kbGVyVHJhbXBvbGluZQorICAgIF9leGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZToKKyAg
ICAgICAgam1wIGEwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisKKyAgICBnbG9iYWwgX3JldHVy
bkZyb21MTEludFRyYW1wb2xpbmUKKyAgICBfcmV0dXJuRnJvbUxMSW50VHJhbXBvbGluZToKKyAg
ICAgICAgcmV0CisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZQorICAg
IF9qc1RyYW1wb2xpbmVQcm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mg
c3AKKyAgICAgICAgam1wIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pz
VHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVNb2R1bGVQ
cm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1w
IF9sbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xp
bmVFdmFsUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRXZhbFByb2xvZ3VlOgorICAgICAgICB0
YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZXZhbF9wcm9sb2d1ZQorCisg
ICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZQorICAgIF9qc1Ry
YW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVz
cyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlCisKKyAg
ICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUKKyAgICBf
anNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0
dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1Byb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQ
cm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlCisgICAgX2pzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlOgorICAgICAgICB0YWdSZXR1
cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVjaworZW5kCisKIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgIyBEdW1teSBl
bnRyeSBwb2ludCB0aGUgQyBMb29wIHVzZXMgdG8gaW5pdGlhbGl6ZS4KICAgICBfbGxpbnRfZW50
cnk6CkBAIC0xNzI0LDIxICsxODcyLDMwIEBAIGVuZCkKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19m
b3JfY2FsbCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBf
c2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX3Ns
b3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CiAgICAgZnVu
Y3Rpb25Jbml0aWFsaXphdGlvbigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKLQogb3AobGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8gKCkKICAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNo
ZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQotICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1
Y3RfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9zbG93
X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoK
ICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAor
IyBOZWVkIHRoZXNlIHN0dWIgbGFiZWxzIHRvIG1ha2UganNfdHJhbXBvbGluZV9sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZyBldGMuIExMSW50IGhlbHBlciBvcGNvZGVz
LgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50
YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tfdW50YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnX3dpZGUxNjoKK19qc190cmFt
cG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWdfd2lk
ZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja190YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVja190YWdfd2lkZTMyOgorICAgIGNyYXNoKCkKIAogIyBWYWx1ZS1yZXBy
ZXNlbnRhdGlvbi1zcGVjaWZpYyBjb2RlLgogaWYgSlNWQUxVRTY0CkBAIC0yMTA5LDcgKzIyNjYs
NyBAQCBlbmQpCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgc2xvd1BhdGhGb3JDb21tb25D
YWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAorICAgICAgICBvcF9jYWxsX2V2YWws
CiAgICAgICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkg
ZGlzcGF0Y2hPcChuYXJyb3csIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjExOCw3ICsyMjc1LDcg
QEAgX2xsaW50X29wX2NhbGxfZXZhbDoKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAg
ICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2LAor
ICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxsRXZh
bCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMTYsIG9wX2NhbGxfZXZhbCkgZW5k
LApAQCAtMjEyNyw3ICsyMjg0LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAKIF9s
bGludF9vcF9jYWxsX2V2YWxfd2lkZTMyOgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAg
ICAgICAgb3BfY2FsbF9ldmFsX3dpZGUzMiwKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAg
ICB3aWRlMzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNo
T3Aod2lkZTMyLCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIyMTIsNyArMjM2OSwxMyBAQCBvcChj
aGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgp
CiAKICAgICAgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCiAgICAgICAgIGJyYW5jaElmRXhj
ZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQotICAgICAgICBq
bXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICBtb3Zl
IHIxLCBhMAorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQ
dHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAj
IEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1wIHIxLCBKU0VudHJ5
UHRyVGFnCisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgbm90U3VwcG9ydGVkKCkKICAg
ICBlbmQKQEAgLTIyMjksMTIgKzIzOTIsMjMgQEAgb3AoY2hlY2twb2ludF9vc3JfZXhpdF90cmFt
cG9saW5lLCBtYWNybyAoKQogICAgICAgICBjQ2FsbDIoX2xsaW50X3Nsb3dfcGF0aF9jaGVja3Bv
aW50X29zcl9leGl0KQogICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKICAgICAgICAg
YnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUp
Ci0gICAgICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBpZiBBUk02NEUKKyAgICAg
ICAgICAgIG1vdmUgcjEsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhw
ciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9T
UkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAg
cjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICBub3RTdXBw
b3J0ZWQoKQogICAgIGVuZAogZW5kKQogCitvcChub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSwg
bWFjcm8gKCkKKyAgICBkaXNwYXRjaCgwKQorZW5kKQorCisKICMgTGFzdGx5LCBtYWtlIHN1cmUg
dGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVz
LgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9y
IGVpdGhlciBKSVQuIFdlIGFzc2VydAogIyBhcyBtdWNoLgpAQCAtMjI3OSw0ICsyNDUzLDE4IEBA
IG9wKHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAoKQogICAgIGNyYXNoKCkK
IGVuZCkKIAorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6Citfd2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoKK193YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rsc193
aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93aWRlMTY6Citfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJh
bXBvbGluZV93YXNtX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9f
dGxzX3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUzMjoK
K193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6CisgICAg
Y3Jhc2goKQorCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNjI2YTQ2ODE3YjE1M2IzZDU0NjQ3
YzNkODJjMWI0NzQ5ZmU2MjY4NC4uOGU3MzM3ZDc2MjI3NDVhMDk2ZjBlZjI0ZWMwNDQwM2E2NmM2
ZDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY4Niw3ICs2ODYsNyBAQCBlbmQKICMgRW50cnlw
b2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlz
IGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3JvIGZ1
bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8gZnVuY3Rpb25Bcml0
eUNoZWNrKG9wY29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEg
dDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFy
ZVN0YXRlRm9yQ0NhbGwoKQpAQCAtNzU3LDYgKzc1NywxNCBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1
Y3Rpb25zUmF3UG9pbnRlclt0MV0sIFBCCiAgICAgbW92ZSAwLCBQQwogICAgIGptcCBkb25lTGFi
ZWwKKworICAgICMgSXQgaXMgcmVxdWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9i
YWwgbGFiZWwgZGVmaW5pdGlvbnMKKyAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVy
YXRlcyBhIHNldCBvZiBpbnN0cnVjdGlvbnMKKyAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQg
ZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAorICAgICMgY3Jhc2hlcy4KKyAgICBf
anNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CisgICAgX2pzX3RyYW1wb2xpbmVfJW9w
Y29kZU5hbWUlX3RhZzoKKyAgICBjcmFzaCgpCiBlbmQKIAogIyBJbnN0cnVjdGlvbiBpbXBsZW1l
bnRhdGlvbnMKQEAgLTIxMTUsNyArMjEyMyw3IEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFt
ZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAg
ICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRb
dDNdCiAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICBtb3Zl
IHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJU
YWcpCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJU
YWcpCiAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgSlNFbnRyeVB0clRhZykKIAogLm9wQ2FsbFNsb3c6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGFhMTU3MjNj
NjQwZjJkNzdlYThhN2ZlODhhOThiYWVhODZkMmI5YjkuLmJlYTdjNTgxYWZlNDIwNjBhY2UzYzlh
YjFlNDhkYzJkYzA1YzFiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0zMDAsMTUgKzMwMCwyMyBAQCBtYWNy
byBkb1ZNRW50cnkobWFrZUNhbGwpCiAgICAgcmV0CiBlbmQKIAotCiAjIGEwLCBhMiwgdDMsIHQ0
CiBtYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwg
dGVtcDIpCiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAg
ICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CisgICAgZWxzaWYgQVJNNjRFCisgICAgICAg
IG1vdmUgZW50cnksIHQzCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp2bUVudHJ5VG9KYXZh
U2NyaXB0KSAqIFB0clNpemUsIGEyCisgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlw
dFRyYW1wb2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lOgorICAg
ICAgICBjYWxsIHQzLCBKU0VudHJ5UHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIGVudHJ5
LCBKU0VudHJ5UHRyVGFnCiAgICAgZW5kCisgICAgZ2xvYmFsIF92bUVudHJ5VG9KYXZhU2NyaXB0
R2F0ZUFmdGVyCisgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXI6CiAgICAgc3VicCAx
Niwgc3AKIGVuZAogCkBAIC0zMjYsOSArMzM0LDE4IEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25D
YWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgICAgICBzdWJwIDMy
LCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICAgICAgYWRk
cCAzMiwgc3AKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgbW92ZSB0ZW1wMSwgdDMKKyAgICAg
ICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVN
YXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb05hdGl2ZSkgKiBQdHJTaXplLCBhMgorICAg
ICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSG9zdEZ1bmN0aW9uUHRyVGFn
CisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZQorICAgICAgICBfdm1F
bnRyeVRvTmF0aXZlVHJhbXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSG9zdEZ1bmN0aW9uUHRy
VGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAg
ICBlbmQKKyAgICBnbG9iYWwgX3ZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcgorICAgIF92bUVudHJ5
VG9OYXRpdmVHYXRlQWZ0ZXI6CiBlbmQKIAogb3AobGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2Vw
dGlvbiwgbWFjcm8gKCkKQEAgLTQzMSw4ICs0NDgsMTQgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvckxvb3AoKQogICAgICAgICAgICAgbW92ZSBQQywgYTEKICAgICAgICAgICAgIGNDYWxsMihf
bGxpbnRfbG9vcF9vc3IpCiAgICAgICAgICAgICBidHB6IHIwLCAucmVjb3ZlcgorCiAgICAgICAg
ICAgICBtb3ZlIHIxLCBzcAotICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCisgICAg
ICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0
ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9v
cE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVuZAogICAgICAg
ICAucmVjb3ZlcjoKICAgICAgICAgICAgIGxvYWRQQygpCiAgICAgICAgIGVuZCkKQEAgLTY0NSw3
ICs2NjgsNyBAQCBlbmQKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKICMg
RXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgp
IGxlYXZlcyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93
UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNvZGVOYW1lLCBkb25lTGFiZWwsIHNs
b3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0
MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKQEAgLTY4Miw5ICs3MDUs
MTYgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAKIC5u
b0V4dHJhU2xvdDoKICAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25z
dGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVv
cGNvZGVOYW1lJVVudGFnKSAqIFB0clNpemUsIHQzCisgICAgICAgIGptcCBbdDNdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3VudGFn
OgogICAgICAgICBsb2FkcCA4W2Nmcl0sIGxyCiAgICAgICAgIGFkZHAgMTYsIGNmciwgdDMKICAg
ICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHQzCisgICAgICAgIF8lb3Bjb2RlTmFtZSVVbnRhZ0dh
dGVBZnRlcjoKKyAgICBlbHNlCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91
bnRhZzoKKyAgICAgICAgXyVvcGNvZGVOYW1lJVVudGFnR2F0ZUFmdGVyOgogICAgIGVuZAogCiAg
ICAgLy8gTW92ZSBmcmFtZSB1cCB0MSBzbG90cwpAQCAtNzEyLDkgKzc0MiwxNiBAQCBtYWNybyBm
dW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBiYWRkaW56IDEsIHQy
LCAuZmlsbExvb3AKIAogICAgIGlmIEFSTTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
JW9wY29kZU5hbWUlVGFnKSAqIFB0clNpemUsIHQzCisgICAgICAgIGptcCBbdDNdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoK
ICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0MQogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHQxCiAg
ICAgICAgIHN0b3JlcCBsciwgOFtjZnJdCisgICAgICAgIF8lb3Bjb2RlTmFtZSVUYWdHYXRlQWZ0
ZXI6CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgor
ICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVyOgogICAgIGVuZAogCiAuY29udGludWU6
CkBAIC0yMTc1LDkgKzIyMTIsMTUgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKICAgICBzdG9y
ZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9h
ZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQorICAgIGlmIEFSTTY0RQor
ICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1f
bWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBwcmVwYXJlQ2FsbCh0MCwgdDIsIHQz
LCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQwCisgICAg
ICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHQwLCBKU0VudHJ5
UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0
NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdp
c3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
bV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgZW5kCiAub3BDYWxs
U2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0
LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0
aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyArMjI4OCw3IEBAIGxsaW50T3BXaXRoUmV0
dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5S2V5LCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxpbnRfb3BfY2F0Y2gsIG1hY3JvKCkgZW5k
LCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybyAoKSBlbmQsIG1h
Y3JvIChzaXplKQogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3Mg
dGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4g
YWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQogICAgICMg
dGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFt
cG9saW5lKS4KQEAgLTIzMTAsNyArMjM1MywxMyBAQCBvcChsbGludF90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRl
cyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQx
CiAgICAgY29udmVydENhbGxlZVRvVk0odDEpCi0gICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENG
b3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAgICAg
ICAgbG9hZHAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgYTAKKyAgICAgICAgbGVh
cCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAo
Y29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRyU2l6ZSwgYTEKKyAgICAgICAg
am1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcK
KyAgICBlbHNlCisgICAgICAgIGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBF
eGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBlbmQpCiAKIApAQCAtMzAxOCw0ICszMDY3
LDMgQEAgb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgbWFjcm8gKCkKICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBkb1JldHVybigp
CiBlbmQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3Nl
bWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmlu
ZGV4IGI5MzIyMTM0ODM0MmU5YWE4ODg4MzJkNWM3YmFkMTY2NDdhY2I0NWIuLmE5ZGE4YmFkZTY3
N2M2MDMzNDRiYmZkNjQyNjA5ODVhODkzNDYwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTM5LDggKzEzOSwxMiBAQCBtYWNybyBjaGVja1N3
aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAKICAgICAgICAgICAgIHJl
c3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAgICAgICAgcmVzdG9yZUNhbGxlclBD
QW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAotICAgICAgICAgICAg
am1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAg
ICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5KSAqIFB0clNpemUsIHdzMQor
ICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgV2FzbUVu
dHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgam1wIHdzMCwgV2Fz
bUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6CiAgICAgICAg
ICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKICAgICAg
ICAgZW5kKQpAQCAtMTU5LDkgKzE2MywxNCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9v
cCgpCiAgICAgICAgICAgICBidHB6IHIxLCAucmVjb3ZlcgogICAgICAgICAgICAgcmVzdG9yZUNh
bGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVyUENBbmRDRlIo
KQotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgICAgICAgICBtb3ZlIHIw
LCBhMAotICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGlm
IEFSTTY0RQorICAgICAgICAgICAgICAgIG1vdmUgcjEsIHdzMAorICAgICAgICAgICAgICAgIGxl
YXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsg
KGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAg
ICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBXYXNtRW50cnlQdHJUYWcK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjEsIFdhc21FbnRyeVB0clRh
ZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbG9hZGkg
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICAgICAg
ZW5kKQpAQCAtMjUzLDcgKzI2Miw2IEBAIGVuZAogCiBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJs
b2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgIyBTZXQg
dXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCi0gICAgdGFnUmV0
dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNlcnZl
Q2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBsb2FkV2FzbUluc3RhbmNlKCkKQEAgLTQ1Niw3
ICs0NjQsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVz
VXNlZEJ5V2FzbSgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBp
ZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQ
dHJTaXplLCB3czAKKyAgICAgICAgam1wIFt3czBdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAg
ICBlbHNlCisgICAgICAgIHJldAorICAgIGVuZAogZW5kCiAKICMgRW50cnkgcG9pbnQKQEAgLTQ5
Nyw3ICs1MTAsMTMgQEAgb3Aod2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBt
YWNybyAoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCBhMwogICAgIGNDYWxsNChfc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9u
KQogCi0gICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgaWYgQVJNNjRFCisg
ICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpT
Qzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpleGNlcHRpb25I
YW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAgICBqbXAgcjAs
IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbmQKIGVuZCkKIAogIyBEaXNhYmxlIHdpZGUg
dmVyc2lvbiBvZiBuYXJyb3ctb25seSBvcGNvZGVzCkBAIC03MDUsNyArNzI0LDM4IEBAIG1hY3Jv
IHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAg
ICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUs
IHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJUYWcKKworICAgICAgICAgICAg
Y3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKKyAgICAgICAgICAgICAg
ICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAg
ICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNl
dE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAqIFB0
clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgor
ICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAg
ICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
ICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAgICAg
ICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAg
ICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQorICAgICAgICAgICAg
ICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmln
ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBH
YXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAg
ICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1Bh
dGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93
YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgICAgICAgICAg
Y2FsbCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisg
ICAgICAgICAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lkZTMyLCBt
YWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICAgICAgZGVmaW5lUmV0dXJuTGFiZWwo
b3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHdzMQogICAgICAgICAgICAgbG9hZGkgV2FzbTo6RnVuY3Rpb25Db2Rl
QmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBmOWU1NzMyZmFmMTRiMDgwOWJjMmJiNmMxOWIxYzgw
MmM1OWY4MzAyLi5mZjU3YjZhNDhhZTk3NTViNGMxMDU0ODU0M2Q3NTlmNDQzNjI3ODcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMzcsMzggKzM3LDQ1
IEBACiAjCiAjIEdQUiBjb252ZW50aW9ucywgdG8gbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVDoKICMK
LSMgIHgwICA9PiB0MCwgYTAsIHIwCi0jICB4MSAgPT4gdDEsIGExLCByMQotIyAgeDIgID0+IHQy
LCBhMgotIyAgeDMgID0+IHQzLCBhMwotIyAgeDQgID0+IHQ0Ci0jICB4NSAgPT4gdDUKKyMgIHgw
ICA9PiB0MCwgYTAsIHdhMCwgcjAKKyMgIHgxICA9PiB0MSwgYTEsIHdhMSwgcjEKKyMgIHgyICA9
PiB0MiwgYTIsIHdhMgorIyAgeDMgID0+IHQzLCBhMywgd2EzCisjICB4NCAgPT4gdDQsIGE0LCB3
YTQKKyMgIHg1ICA9PiB0NSwgYTUsIHdhNQorIyAgeDYgID0+IHQ2LCBhNiwgd2E2CisjICB4NyAg
PT4gdDcsIGE3LCB3YTcKKyMgIHg4ICA9PiB3czAKKyMgIHg5ICA9PiB3czEKICMgeDEzICA9PiAg
ICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTYgID0+ICAgICAgICAgICAgICAgICAgKHNj
cmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKLSMgeDI2ICA9PiAg
ICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3IxIChudW1iZXJU
YWcpCi0jIHgyOCAgPT4gICAgICAgICAgICAgY3NyMiAobm90Q2VsbE1hc2spCisjIHgyNSAgPT4g
ICAgICAgICAgICAgY3NyNiAobWV0YWRhdGFUYWJsZSkKKyMgeDI2ICA9PiAgICAgICAgICAgICBj
c3I3IChQQikKKyMgeDI3ICA9PiAgICAgICAgICAgICBjc3I4IChudW1iZXJUYWcpCisjIHgyOCAg
PT4gICAgICAgICAgICAgY3NyOSAobm90Q2VsbE1hc2spCiAjIHgyOSAgPT4gY2ZyCiAjICBzcCAg
PT4gc3AKICMgIGxyICA9PiBscgogIwogIyBGUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRoZSBi
YXNlbGluZSBKSVQ6CiAjCi0jICBxMCAgPT4gZnQwLCBmYTAsIGZyCi0jICBxMSAgPT4gZnQxLCBm
YTEKLSMgIHEyICA9PiBmdDIsIGZhMgotIyAgcTMgID0+IGZ0MywgZmEzCi0jICBxNCAgPT4gZnQ0
ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxNSAgPT4gZnQ1ICAgICAgICAgICh1
bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAgICAgICAgIChPbmx5IHRoZSBsb3dl
ciA2NCBiaXRzKQotIyAgcTkgID0+IGNzZnIxICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0
cykKLSMgcTEwICA9PiBjc2ZyMiAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHEx
MSAgPT4gY3NmcjMgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTIgID0+IGNz
ZnI0ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEzICA9PiBjc2ZyNSAgICAg
ICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNCAgPT4gY3NmcjYgICAgICAgIChPbmx5
IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTUgID0+IGNzZnI3ICAgICAgICAoT25seSB0aGUgbG93
ZXIgNjQgYml0cykKKyMgIHEwICA9PiBmdDAsIGZhMCwgd2ZhMCwgZnIKKyMgIHExICA9PiBmdDEs
IGZhMSwgd2ZhMQorIyAgcTIgID0+IGZ0MiwgZmEyLCB3ZmEyCisjICBxMyAgPT4gZnQzLCBmYTMs
IHdmYTMKKyMgIHE0ICA9PiBmdDQsICAgICAgd2ZhNCAgICAgICAgICAodW51c2VkIGluIGJhc2Vs
aW5lKQorIyAgcTUgID0+IGZ0NSwgICAgICB3ZmE1ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxp
bmUpCisjICBxNiAgPT4gICAgICAgICAgIHdmYTYgICAgICAgICAgKHVudXNlZCBpbiBiYXNlbGlu
ZSkKKyMgIHE3ICA9PiAgICAgICAgICAgd2ZhNyAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5l
KQorIyAgcTggID0+IGNzZnIwICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBi
aXRzKQorIyAgcTkgID0+IGNzZnIxICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2
NCBiaXRzKQorIyBxMTAgID0+IGNzZnIyICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dl
ciA2NCBiaXRzKQorIyBxMTEgID0+IGNzZnIzICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBs
b3dlciA2NCBiaXRzKQorIyBxMTIgID0+IGNzZnI0ICAgICAgICAgICAgICAgICAgIChPbmx5IHRo
ZSBsb3dlciA2NCBiaXRzKQorIyBxMTMgID0+IGNzZnI1ICAgICAgICAgICAgICAgICAgIChPbmx5
IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2ICAgICAgICAgICAgICAgICAgIChP
bmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTUgID0+IGNzZnI3ICAgICAgICAgICAgICAgICAg
IChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQogIyBxMzEgID0+IHNjcmF0Y2gKIAogZGVmIGFybTY0
R1BSTmFtZShuYW1lLCBraW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg1ZjVhMzJkNTEwZmM4MGMwNjM4YTM5ZWQ2NTFhZWY1YTlkMGZmZjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTAsMCAr
MSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9O
X1ZBTElEQVRJT04pCisKKyNkZWZpbmUgSlNDX1VUSUxJVFlfR0FURVModikgXAorICAgIHYoaml0
Q2FnZVB0ciwgTm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVB0clRhZywgTm9QdHJU
YWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBOb1B0clRhZykgXAor
ICAgIHYobG9vcE9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYoZW50cnlPU1JFbnRyeSwgTm9Q
dHJUYWcpIFwKKyAgICB2KHdhc21PU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KGV4Y2VwdGlv
bkhhbmRsZXIsIE5vUHRyVGFnKSBcCisgICAgdihyZXR1cm5Gcm9tTExJbnQsIE5vUHRyVGFnKSBc
CisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnLCBOb1B0clRh
ZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWcsIE5vUHRy
VGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50
YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrVGFnLCBOb1B0clRhZykgXAorICAgIHYodm1FbnRyeVRvSmF2YVNjcmlwdCwgSlNFbnRy
eVB0clRhZykgXAorICAgIHYodm1FbnRyeVRvTmF0aXZlLCBIb3N0RnVuY3Rpb25QdHJUYWcpIFwK
KworI2RlZmluZSBKU0NfSlNfR0FURV9PUENPREVTKHYpIFwKKyAgICB2KG9wX2NhbGwsIEpTRW50
cnlQdHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYo
b3BfY29uc3RydWN0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9uZXh0LCBK
U0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuLCBKU0VudHJ5UHRyVGFnKSBc
CisgICAgdihvcF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3Bf
dGFpbF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY29uc3Ry
dWN0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF92YXJhcmdz
X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3ZhcmFy
Z3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHNfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9j
b25zdHJ1Y3RfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9w
X2NhbGxfZXZhbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJh
dG9yX25leHRfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRv
cl9vcGVuX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorCisjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KSBcCisgICAgdih3YXNt
X2NhbGwsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX25vX3Rscywg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfaW5kaXJlY3QsIEpTRW50
cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX2luZGlyZWN0X25vX3RscywgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnKSBcCisKKyNlbHNlCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyh2KQorI2VuZGlmCisKK2VudW0gY2xhc3MgR2F0ZSA6IHVpbnQ4X3QgeworI2RlZmluZSBK
U0NfREVGSU5FX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFnKSBnYXRlTmFtZSwKKyNkZWZpbmUgSlND
X0RFRklORV9PUENPREVfR0FURV9FTlVNKGdhdGVOYW1lLCB0YWcpIGdhdGVOYW1lLCBnYXRlTmFt
ZSMjX3dpZGUxNiwgZ2F0ZU5hbWUjI193aWRlMzIsCisgICAgSlNDX1VUSUxJVFlfR0FURVMoSlND
X0RFRklORV9HQVRFX0VOVU0pCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhKU0NfREVGSU5FX09Q
Q09ERV9HQVRFX0VOVU0pCisgICAgSlNDX1dBU01fR0FURV9PUENPREVTKEpTQ19ERUZJTkVfT1BD
T0RFX0dBVEVfRU5VTSkKKyN1bmRlZiBKU0NfREVGSU5FX0dBVEVfRU5VTQorfTsKKworI2RlZmlu
ZSBKU0NfQ09VTlQoZ2F0ZU5hbWUsIHRhZykgKyAxCisjZGVmaW5lIEpTQ19PUENPREVfQ09VTlQo
Z2F0ZU5hbWUsIHRhZykgKyAzCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mR2F0
ZXMgPSAwIEpTQ19VVElMSVRZX0dBVEVTKEpTQ19DT1VOVCkgSlNDX0pTX0dBVEVfT1BDT0RFUyhK
U0NfT1BDT0RFX0NPVU5UKSBKU0NfV0FTTV9HQVRFX09QQ09ERVMoSlNDX09QQ09ERV9DT1VOVCk7
CisjdW5kZWYgSlNDX0NPVU5UCisjdW5kZWYgSlNDX09QQ09ERV9DT1VOVAorI2Vsc2UKKy8vIEtl
ZXAgaXQgbm9uLXplcm8gdG8gbWFrZSBKU0NDb25maWcncyBhcnJheSBub3QgWzBdLgorc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkdhdGVzID0gMTsKKyNlbmRpZgorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCmluZGV4IDVhNDczMTdjNjJhNWVi
YTY2NjY3NTczNWY3NzQwMzUwMGM2ODBiNDEuLjdmOTZlYzUyZWQyMWFmZGUzM2RhMTMwZGI3ZGQ0
Njk0ZWM2MTk4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR2F0ZS5oIgog
I2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIk9wdGlvbnNMaXN0LmgiCiAjaW5jbHVkZSA8
d3RmL1dURkNvbmZpZy5oPgpAQCAtOTIsNiArOTMsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAg
ICAgT3Bjb2RlIG9wY29kZU1hcFtudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAg
ICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUxNltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2Rl
SURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUzMltudW1PcGNvZGVJRHMgKyBudW1X
YXNtT3Bjb2RlSURzXTsKKyAgICAgICAgY29uc3Qgdm9pZCogZ2F0ZU1hcFtudW1iZXJPZkdhdGVz
XTsKICAgICB9IGxsaW50OwogCiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJV
R0dJTkcpCkBAIC0xMTcsNiArMTE5LDcgQEAgZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSBD
b25maWcgZ19qc2NDb25maWc7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bj
b2RlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcCk7CiBjb25zdGV4
cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTE2ID0gb2Zmc2V0b2YoSlND
OjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUxNik7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNl
dE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTMyID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50
Lm9wY29kZU1hcFdpZGUzMik7Citjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnR2F0
ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5nYXRlTWFwKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q1B0clRhZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3Bw
CmluZGV4IGE5NDE2MzRiZmZkYTdhNDYzMTU2YzQ1OTA2Zjc3NDliZWEyMjZhYzcuLmVhYjM3ZWU4
Nzg0MTY0OWJiZDkxYWM0OTQyM2U5ZTNiZDdjNTJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcApAQCAtMjgsNiArMjgsMTIgQEAKIAogI2luY2x1ZGUg
IkpTQ0NvbmZpZy5oIgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPG1hY2hpbmUv
Y3B1X2NhcGFiaWxpdGllcy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBDUFUoQVJNNjRFKSAm
JiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTM1LDggKzQxLDEwIEBAIG5hbWVzcGFjZSBK
U0Mgewogc3RhdGljIGNvbnN0IGNoYXIqIHRhZ0ZvclB0cihjb25zdCB2b2lkKiBwdHIpCiB7CiAj
ZGVmaW5lIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKHRhZywgY2FsbGVlVHlwZSwgY2FsbGVy
VHlwZSkgXAotICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6OlB0clRhZ0Fj
dGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikpKSBcCi0gICAg
ICAgIHJldHVybiAjdGFnOworICAgIGlmIChjYWxsZXJUeXBlICE9IFB0clRhZ0NhbGxlclR5cGU6
OkpJVCB8fCBjYWxsZWVUeXBlICE9IFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgeyBcCisgICAg
ICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6OlB0clRhZ0FjdGlvbjo6Tm9B
c3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikpKSBcCisgICAgICAgICAgICBy
ZXR1cm4gI3RhZzsgXAorICAgIH0KICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9OQU1F
X0lGX1RBR19NQVRDSEVTKQogI3VuZGVmIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTCiAgICAg
cmV0dXJuIG51bGxwdHI7IC8vIE1hdGNoaW5nIHRhZyBub3QgZm91bmQuCkBAIC02MSw0ICs2OSwz
MiBAQCB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKQogCiAjZW5kaWYgLy8gQ1BVKEFSTTY0
RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiAKKyNpZiBDUFUoQVJNNjRFKQorCitQdHJU
YWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnIHRhZykKK3sKKyNkZWZpbmUgUkVUVVJOX1BU
UlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBjYXNlIF90YWdOYW1l
OiByZXR1cm4gY2FsbGVyVHlwZTsKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgICBGT1JfRUFD
SF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworICAgIH0KKyN1bmRlZiBSRVRVUk5fUFRS
VEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworfQorCitQdHJU
YWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnIHRhZykKK3sKKyNkZWZpbmUgUkVUVVJOX1BU
UlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBjYXNlIF90YWdOYW1l
OiByZXR1cm4gY2FsbGVlVHlwZTsKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgICBGT1JfRUFD
SF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworICAgIH0KKyN1bmRlZiBSRVRVUk5fUFRS
VEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworfQorCisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NQdHJUYWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q1B0clRhZy5oCmluZGV4IGRmOGI0MDIyNjZlMGUwMjAxOWFmMzVmNjhlOTFmYWE3OGJlNzkzNWIu
LjMzOGFhYWVhZTZhMTI1NTM2NDRlZDU1NzNhZjViMWJjNGYwMzkwNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCkBAIC0yNyw0NiArMjcsNTMgQEAKIAogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRp
b25zLmg+CisjZW5kaWYKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAiQyIgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCogaml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFn
KTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJU
YWc7CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BUUlRBRyh2KSBcCi0gICAgLyogTmF0aXZlIE5v
bmUgKi8gXAorICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5vbmUgKi8gXAogICAgIHYoRE9N
SklURnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVy
VHlwZTo6Tm9uZSkgXAogICAgIHYoRGlzYXNzZW1ibHlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoUHV0VmFsdWVQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAotICAg
IC8qIEpJVCBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpOb25lICovIFwKICAg
ICB2KEIzQ29tcGlsYXRpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRXhlY3V0YWJsZU1lbW9yeVB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAgICAgdihMaW5rQnVmZmVy
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwK
LSAgICAvKiBOYXRpdmUgTmF0aXZlICovIFwKKyAgICB2KFlhcnI4Qml0UHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKKyAgICB2KFlhcnIxNkJp
dFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBc
CisgICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIC8q
IENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAgICAgdihCeXRlY29kZVB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAg
ICB2KEpJVFByb2JlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxl
clR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVFeGVjdXRvclB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFBy
b2JlU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpO
YXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAotICAgIHYoU2xvd1BhdGhQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0g
ICAgLyogSklUIE5hdGl2ZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6TmF0aXZlICov
IFwKICAgICB2KE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQ
dHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICAvKiBOYXRpdmUgSklUICovIFwKKyAgICB2
KFlhcnJFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBl
OjpOYXRpdmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpKSVQgKi8gXAogICAgIHYo
SG9zdEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxl
clR5cGU6OkpJVCkgXAogICAgIHYoT3BlcmF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpO
YXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoSklUVG9OYXRpdmVHYXRlUHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAot
ICAgIC8qIEpJVCBKSVQgKi8gXAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOkpJVCAqLyBcCiAg
ICAgdihFeGNlcHRpb25IYW5kbGVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRh
Z0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUVGh1bmtQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKSVRTdHViUm91dGluZVB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAg
ICB2KEpTRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKSBcCisgICAgdihKU0VudHJ5U2xvd1BhdGhQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKU0ludGVybmFsUHRyVGFnLCBQ
dHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNT
d2l0Y2hQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCiAgICAgdihPU1JFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9TUkV4aXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihXYXNtRW50cnlQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJy
OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQp
IFwKLSAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoWWFyck1hdGNo
T25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6
OkpJVCkgXAogICAgIHYoWWFyckJhY2t0cmFja1B0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKIAogI2RlZmluZSBKU0NfREVDTEFSRV9QVFJUQUco
bmFtZSwgdHlwZSwgdGFyZ2V0KSBXVEZfREVDTEFSRV9QVFJUQUcobmFtZSkKQEAgLTEwOCwxOCAr
MTE1LDI4IEBAIEZPUl9FQUNIX0pTQ19QVFJUQUcoSlNDX0RFQ0xBUkVfUFRSVEFHKQogI3ByYWdt
YSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBQdHJUYWdDYWxsZXJU
eXBlIGNhbGxlclR5cGUoUHRyVGFnKTsKK0pTX0VYUE9SVF9QUklWQVRFIFB0clRhZ0NhbGxlZVR5
cGUgY2FsbGVlVHlwZShQdHJUYWcpOworCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCBQdHJUYWdDYWxs
ZWVUeXBlIGNhbGxlZVR5cGUsIFB0clRhZ0NhbGxlclR5cGUgY2FsbGVyVHlwZSwgdHlwZW5hbWUg
UHRyVHlwZT4KIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUgdGFnSlNDQ29kZVB0ckltcGwo
UHRyVHlwZSBwdHIpCiB7CiAgICAgc3RhdGljX2Fzc2VydChjYWxsZXJUeXBlID09IFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCk7CiAgICAgaWYgY29uc3RleHByIChjYWxsZWVUeXBlID09IFB0clRhZ0Nh
bGxlZVR5cGU6Ok5hdGl2ZSkgewotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyAhPSBKSVRUb05h
dGl2ZUdhdGVQdHJUYWcpIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJh
dGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIGlm
IGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykKLSAgICAgICAgICAgICAgICBKSVRP
cGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Ci0gICAg
ICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKLSAg
ICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1
bmN0aW9uKHB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCh0YWcgPT0gT3Bl
cmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAgICAgICBpZiBj
b25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVyYXRp
b25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7CisgICAgICAgIGVs
c2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAgICAgICAgICAg
SklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOwor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkK
KyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlz
dDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0cikpKTsKKyNlbmRp
ZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9u
czo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBl
PihqaXRDYWdlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSwgdGFnKSk7CisjZW5kaWYKICAg
ICB9CiAgICAgcmV0dXJuIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8dGFnPihwdHIpOwogfQpA
QCAtMTI5LDE3ICsxNDYsNjQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgUHRyVHlwZSB1bnRhZ0pT
Q0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2FsbGVyVHlw
ZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2FsbGVlVHlw
ZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3RleHByICh0
YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0
KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7Ci0g
ICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAgICAg
ICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlv
bihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rp
b25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5h
c3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBP
cGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJh
dGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKKyAgICAgICAg
ZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCisgICAgICAgICAg
ICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgp
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSklU
T3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0
cikpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUNvZGVQdHJUYWcocHRyKTsK
KyAgICAgICAgfQorI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAgIFB0clR5cGUg
cmVtb3ZlZCA9IHJlbW92ZUNvZGVQdHJUYWcocHRyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCh0YWdKU0NDb2RlUHRySW1wbDx0YWcsIGNhbGxlZVR5cGUsIGNhbGxlclR5cGU+KHJlbW92
ZWQpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJlbW92ZWQ7CiAgICAgICAgIH0KKyNl
bmRpZgogICAgIH0KICAgICByZXR1cm4gV1RGOjp1bnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4o
cHRyKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KK2lubGluZSBQdHJUeXBlIHRh
Z0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9p
ZCogc3RhY2tQb2ludGVyKQoreworICAgIEFTU0VSVChwdHIpOworICAgIFVOVVNFRF9QQVJBTShz
dGFja1BvaW50ZXIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpTQ19KSVRf
Q0FHRShiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0
YWNrUG9pbnRlcikpKTsKKyNlbmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJuIHB0cmF1
dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVu
dF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKKyNlbHNlCisgICAg
cmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgoraW5s
aW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlw
ZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBQdHJUeXBlIHVuY2FnZWQgPSBy
ZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhZ0NvZGVQdHJX
aXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCh1bmNhZ2VkLCBzdGFja1BvaW50ZXIpID09IHB0cik7
CisgICAgICAgIHJldHVybiB1bmNhZ2VkOworICAgIH0KKyNlbmRpZgorI2lmIENQVShBUk02NEUp
CisgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9wcm9j
ZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsK
KyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCiAjaWYgQ1BVKEFSTTY0RSkgJiYg
RU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJl
c3VsdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAppbmRl
eCBhZGQyNjRlOTA5NzViMjY1ZmQ1YmUxMGYyNjMyZmQ3NWUyODZjODFjLi5mMzA1ZTRhMTY0ZDAx
ZmZiMWY4MWM3OWViNWU0OWYwNDViODE4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hdGNoUmVzdWx0LmgKQEAgLTM0LDcgKzM0LDEwIEBAIHN0cnVjdCBNYXRjaFJlc3Vs
dDsKICNpZiBDUFUoQUREUkVTUzMyKQogdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gdWludDY0
X3Q7CiAjZWxzZQotdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gTWF0Y2hSZXN1bHQ7CitzdHJ1
Y3QgRW5jb2RlZE1hdGNoUmVzdWx0IHsKKyAgICBzaXplX3Qgc3RhcnQ7CisgICAgc2l6ZV90IGVu
ZDsKK307CiAjZW5kaWYKIAogc3RydWN0IE1hdGNoUmVzdWx0IHsKQEAgLTU2LDYgKzU5LDEyIEBA
IHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgICwgZW5kKGJpdHdpc2VfY2FzdDxNYXRjaFJl
c3VsdD4obWF0Y2gpLmVuZCkKICAgICB7CiAgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5F
IE1hdGNoUmVzdWx0KEVuY29kZWRNYXRjaFJlc3VsdCBtYXRjaCkKKyAgICAgICAgOiBzdGFydCht
YXRjaC5zdGFydCkKKyAgICAgICAgLCBlbmQobWF0Y2guZW5kKQorICAgIHsKKyAgICB9CiAjZW5k
aWYKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDBkMmY1YWNmNzljZGY1
NzQ5OGU2YTczYzA2NzJkNmRkNGJmODg0NzguLmU3MTdkMzBlNjRkMTU5NzM0NzkyYTNmNDhiOTIx
NjU3MmZiNDAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CkBAIC01MCw2ICs1MCwxMSBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFk
ZGl0aW9ucy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxpdGllcy5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzkyLDYgKzM5
Nyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVBbGxKSVRPcHRpb25zKCkKICAgICBPcHRpb25zOjp1
c2VPTUdKSVQoKSA9IGZhbHNlOwogICAgIE9wdGlvbnM6OnVzZURPTUpJVCgpID0gZmFsc2U7CiAg
ICAgT3B0aW9uczo6dXNlUmVnRXhwSklUKCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1c2VKSVRD
YWdlKCkgPSBmYWxzZTsKIH0KIAogdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRp
b25zKCkKQEAgLTExMTQsNCArMTEyMCwxMCBAQCBib29sIE9wdGlvblJlYWRlcjo6T3B0aW9uOjpv
cGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorYm9vbCBjYW5Vc2VKSVRDYWdlKCkgeyByZXR1cm4g
SlNDX0pJVF9DQUdFX1ZFUlNJT04oKTsgfQorI2Vsc2UKK2Jvb2wgY2FuVXNlSklUQ2FnZSgpIHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA4ZDBmZjBlYzY4MzI5YjA0
ZDA5M2NlMzhkNGVjYTQ2YWEyODhmM2VhLi5hNjE5MWFiYTAzMzFjYWMzZGM3ZTY3ODc2NGVkYTc1
NGMyMGYzZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0
LmgKQEAgLTQzLDYgKzQzLDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJl
YW1pbmdBcGkgPSB0cnVlOwogY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1p
bmdBcGkgPSBmYWxzZTsKICNlbmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJ
VENhZ2UoKTsKKwogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09PT09
PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8gYmVs
b3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKQEAgLTUyMCw2ICs1
MjIsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZh
bHNlOwogICAgIHYoVW5zaWduZWQsIHNlZWRGb3JMSUNNRnV6emVyLCA0MjQyNDIsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5LCAw
LjUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVyc09u
R2xvYmFsT2JqZWN0Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYo
Qm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwKIAog
ZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggOWM0YjU5NTQ2ZTZmOTYwYWI3
NThlM2E1M2YyYjYxZGJiNjc0YzIxZS4uOTA2MjExMjFhODFlMzFiNTIxNzViNTk3ZDliYzQxMjY0
ODY3NjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAg
ICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJbnN0
YW5jZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgZG8geyBcCi0gICAgICAgIFdBU01fUkVU
VVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFnPihjYWxs
VGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAorICAgICAgICBXQVNNX1JFVFVSTl9UV08oKHJl
dGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJn
ZXQpKSwgdGFyZ2V0SW5zdGFuY2UpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUg
Q09ERV9CTE9DSygpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXgg
MjJiZjY2ZDhjODIyZGE5MWUwMzE4MDZhMmY2OWQzNmU0YmQ4ZjdiZC4uOTRkMzAyYWVhZmQ1MTZh
NWIzZmM3ZjRiZjVmNzk1YTNmNTZjYTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
WWFyciB7CiAKKyNpZiBDUFUoQVJNNjQpCitKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklU
VGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKKyNl
bmRpZgorCiBNYXRjaGluZ0NvbnRleHRIb2xkZXI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcihWTSYg
dm0sIFlhcnJDb2RlQmxvY2sqIHlhcnJDb2RlQmxvY2ssIE1hdGNoRnJvbSBtYXRjaEZyb20pCiAg
ICAgOiBtX3ZtKHZtKQogewpAQCAtMzc0Niw5ICszNzUwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplY3gpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJNNjQp
Ci0gICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9n
YXRlUGFpcnMpIHsKLSAgICAgICAgICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBs
aW5rUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHgxMDAwMCksIHN1
cHBsZW1lbnRhcnlQbGFuZXNCYXNlKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4
ZDgwMCksIGxlYWRpbmdTdXJyb2dhdGVUYWcpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIoMHhkYzAwKSwgdHJhaWxpbmdTdXJyb2dhdGVUYWcpOwpAQCAtMzgwMyw4ICszODA1LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwogICAg
ICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBp
ZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykKLSAgICAgICAgICAgIHBvcFBhaXIoZnJhbWVQb2lu
dGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisgICAgICAgIC8vIERvIG5vdGhpbmcKICNlbGlm
IENQVShBUk1fVEhVTUIyKQogICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyOCk7CiAgICAgICAg
IHBvcChBUk1SZWdpc3RlcnM6OnI2KTsKQEAgLTM4MTMsNyArMzgxNCwxMyBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICNlbGlmIENQVShNSVBTKQogICAgICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYKKwor
I2lmIENQVShBUk02NCkKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJldGFnQ29kZVB0cjx2
b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KCZ2bUVudHJ5VG9ZYXJySklU
QWZ0ZXIpKSwgcmVnVDApOworICAgICAgICBmYXJKdW1wKHJlZ1QwLCBPcGVyYXRpb25QdHJUYWcp
OworI2Vsc2UKICAgICAgICAgcmV0KCk7CisjZW5kaWYKICAgICB9CiAKIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA2NjQyOGUwNjYzZjMzMjA5MTc3ODFkYmI5
ZDBjNzMwZDJiNmQ2ODViLi4xNWI3YmQ2YTI2ZmY2ZTRiMDAxMjEyOTg5ZThmZGNlZWE1YTRiOGFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC03Niw2ICs3Niw5IEBAIGNs
YXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlciB7CiAjZW5kaWYKIH07CiAKK2V4dGVybiAiQyIgRW5j
b2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRI
b2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7CitleHRlcm4gIkMi
IHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOworCiBjbGFzcyBZYXJyQ29kZUJsb2Nr
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShZYXJyQ29kZUJsb2NrKTsKQEAgLTEwOSwyNSArMTEyLDQxIEBAIGNsYXNzIFlhcnJDb2RlQmxv
Y2sgewogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9s
ZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENvZGUo
KSk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRv
WWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCBy
ZXRhZ0NvZGVQdHI8WWFycjhCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWY4LmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVz
dWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlOCwgWWFycjhCaXRQdHJUYWc+KG1fcmVm
OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1
dCwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBl
eGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZSgpKTsKKyNpZiBDUFUoQVJNNjQpCisg
ICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwg
bGVuZ3RoLCBvdXRwdXQsICZtYXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyMTZCaXRQ
dHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0
cjxZYXJySklUQ29kZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4
dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hh
ciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5nQ29udGV4
dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRD
b2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVz
dWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsICZtYXRj
aGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgWWFyckVu
dHJ5UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7Cisj
ZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJ
VENvZGVNYXRjaE9ubHk4LCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4LmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwg
bWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVj
dXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwg
TWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NEUpCisgICAgICAg
IHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3Ro
LCBudWxscHRyLCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seTE2
Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdD
RnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHkxNiwgWWFyck1hdGNoT25seTE2Qml0UHRy
VGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3Rh
cnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAK
ICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9P
U0FsbG9jYXRvci5oIGIvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAppbmRleCA3NzEzNjJi
OTJhMmU1MjI5Mzk4NGUxMTY1MWJkMmE5MzkzZDk4M2EyLi4yNjg4YTRlZmRmODE3ZGI3YWY2NjY5
ODc1ZGYyM2E3OTg5MzZhYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRv
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKQEAgLTQzLDcgKzQzLDcgQEAg
Y2xhc3MgT1NBbGxvY2F0b3IgewogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUg
Y2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlv
biwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0
dGVkIHN0YXRlLiByZXNlcnZlVW5jb21taXR0ZWQgcmV0dXJucyB0bwogICAgIC8vIHlvdSBtZW1v
cnkgdGhhdCBpcyB6ZXJvZWQuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiBy
ZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0
YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQ
YWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2Vy
dmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxl
ID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBm
YWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVjb21t
aXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3VsZApAQCAtNTUsMjcgKzU1LDI3
IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRy
aWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwK
ICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBv
ZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9y
eSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2Ug
PSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBm
YWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtu
b3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwg
Ym9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZh
bHNlKTsKICAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6
ZV90IHNpemUpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5k
Q29tbWl0L2RlY29tbWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCiAg
ICAgLy8gY29tbWl0dGluZy9kZWNvbW1pdHRpbmcgdGhlIGVudGlyZSByZWdpb24gYWRkaXRpb25h
bCBwYXJhbWV0ZXJzIGFsbG93IGEgc3VicmVnaW9uIHRvIGJlCiAgICAgLy8gc3BlY2lmaWVkLgot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXpl
X3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2Vy
dmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxl
ZCA9IGZhbHNlKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgYW4gZXhpc3RpbmcsIGNvbW1pdHRlZCBh
bGxvY2F0aW9uLgogICAgIC8vIFRoZSBwcmlvciBhbGxvY2F0aW9uIG11c3QgYmUgZnVsbHkgY29t
aXR0ZWQsIGFuZCB0aGUgbmV3IHNpemUgd2lsbCBhbHNvIGJlIGZ1bGx5IGNvbW1pdHRlZC4KICAg
ICAvLyBUaGlzIGludGVyZmFjZSBpcyBwcm92aWRlZCBzaW5jZSBpdCBtYXkgYmUgcG9zc2libGUg
dG8gb3B0aW1pemUgdGhpcyBvcGVyYXRpb24gb24gc29tZSBwbGF0Zm9ybXMuCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6
ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgVCog
cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBV
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpOwogCiAgICAgLy8gSGludCB0
byB0aGUgT1MgdGhhdCBhbiBhZGRyZXNzIHJhbmdlIGlzIG5vdCBleHBlY3RlZCB0byBiZSBhY2Nl
c3NlZCBhbnl0aW1lIHNvb24uCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKHZvaWQqLCBzaXplX3QpOwogfTsKIAotaW5saW5lIHZvaWQq
IE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90
IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUp
CitpbmxpbmUgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2Vy
dmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBiYXNlID0g
cmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUpOworICAgIHZvaWQqIGJhc2UgPSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUsIHVz
YWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIGNvbW1pdChi
YXNlLCBjb21taXRTaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgcmV0dXJuIGJhc2U7
CiB9CkBAIC04Niw5ICs4Niw5IEBAIGlubGluZSB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFu
ZFJlbGVhc2Uodm9pZCogcmVsZWFzZUJhc2UsIHNpemVfdCByZWxlYXNlU2l6CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogT1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0
ZWQoVCogb2xkQmFzZSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSB1c2Fn
ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQoraW5saW5lIFQqIE9TQWxsb2NhdG9y
OjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1p
dChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIG5ld0Jh
c2UgPSByZXNlcnZlQW5kQ29tbWl0KG5ld1NpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJs
ZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIG1lbWNweShuZXdCYXNlLCBvbGRCYXNlLCBzdGQ6Om1p
bihvbGRTaXplLCBuZXdTaXplKSk7CiAgICAgZGVjb21taXRBbmRSZWxlYXNlKG9sZEJhc2UsIG9s
ZFNpemUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obmV3QmFzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VS
ZXNlcnZhdGlvbi5oCmluZGV4IGEyYWVlODg0ZTk4NjRjZDkzMjFhNmI0OTRlOWU2OTg4MjQ0MzEw
MzAuLjQ5NGJmMDVlMDAxNzE1Mzg1MWViMTBhNTUzM2MyMmZjNjVjYjc3MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bh
Z2VSZXNlcnZhdGlvbi5oCkBAIC01NSwxMiArNTUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xh
c3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogcHVibGljOgotICAgIFBh
Z2VSZXNlcnZhdGlvbigpCi0gICAgICAgIDogbV9jb21taXR0ZWQoMCkKLSAgICAgICAgLCBtX3dy
aXRhYmxlKGZhbHNlKQotICAgICAgICAsIG1fZXhlY3V0YWJsZShmYWxzZSkKLSAgICB7Ci0gICAg
fQorICAgIFBhZ2VSZXNlcnZhdGlvbigpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIFBhZ2VCbG9j
azo6YmFzZTsKICAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CkBAIC05MywyMiArODgsMjIgQEAg
Y2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgICAgICByZXR1
cm4gbV9jb21taXR0ZWQ7CiAgICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNl
cnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UpCisgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBPU0Fs
bG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdy
aXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJs
ZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsK
LSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29t
bWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NB
bGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUsIGppdENhZ2VFbmFibGVkLCBmYWxzZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxl
LCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUGFnZVJl
c2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6
OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9
IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRp
b24gcmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2Ug
dXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJu
IFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBw
YWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKSwgc2l6ZSwg
d3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0
aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAy
LCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAK
LSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdl
cyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVu
a25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNl
KQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFBh
Z2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6
VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFs
c2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0
cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2
ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwg
aml0Q2FnZUVuYWJsZWQsIHRydWUpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZSgpCkBA
IC0xMjcsNyArMTIyLDcgQEAgY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxv
Y2sgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFzZSwg
c2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBoYXNHdWFy
ZFBhZ2VzKQorICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9v
bCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBib29sIGhhc0d1YXJkUGFnZXMpCiAg
ICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUsIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgICwg
bV9jb21taXR0ZWQoMCkKICAgICAgICAgLCBtX3dyaXRhYmxlKHdyaXRhYmxlKQpAQCAtMTM1LDkg
KzEzMCw5IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAg
ICB7CiAgICAgfQogCi0gICAgc2l6ZV90IG1fY29tbWl0dGVkOwotICAgIGJvb2wgbV93cml0YWJs
ZTsKLSAgICBib29sIG1fZXhlY3V0YWJsZTsKKyAgICBzaXplX3QgbV9jb21taXR0ZWQgeyAwIH07
CisgICAgYm9vbCBtX3dyaXRhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhlY3V0YWJsZSB7
IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBlMjIyOTg3NWI0
NzdiMWM2YmFiYmM1ZmVkZDk3Y2E1NzI5MWQzYzIzLi5lYmVkNjg2OTIyYjZmMGYwYmIyMDg3Y2Y1
NDZhMTg4MDQyOGNkYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTg4NCwxMCArODg0
LDEwIEBACiAjZXJyb3IgIkVOQUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdF
QkdQVSkiCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKLSNkZWZp
bmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiAo
KFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIENQVShBUk02NEUpKSkKKyNkZWZpbmUgRU5BQkxF
X0pJVF9DQUdFIDEKICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiBB
U1NFUlRfRU5BQkxFRAorI2lmIE9TKERBUldJTikgJiYgQ1BVKEFERFJFU1M2NCkgJiYgRU5BQkxF
KEpJVCkgJiYgKEVOQUJMRShKSVRfQ0FHRSkgfHwgQVNTRVJUX0VOQUJMRUQpCiAjZGVmaW5lIEVO
QUJMRV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApp
bmRleCAyMmY0NjJiMmE2NGRhYmY4YzA4NDlhOTIwZGVhYmQ5YTFjMWU1YmUyLi5mY2U5ZWRhMTMz
YzliYjMxNjcwZTMyZTlkZjNhMDdhNGEyZGMzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTMw
OCwzICszMDgsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogI2RlZmluZSBVU0VfQ1RG
T05UR0VUQURWQU5DRVNfV09SS0FST1VORCAxCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkgJiYg
Q1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oIGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgK
aW5kZXggNWE0MjE3MTExZDVmYTkxMjE3NjBhMjQyMWUwMjBiNWYxZGViNzhiYy4uYWM5MmVjMzE5
NGRmYWM4NGMxNTNmYjY2ZmFmZWVhM2NlOTYwNGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUHRyVGFnLmgKKysrIGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgKQEAgLTM0NCw2ICszNDQs
NyBAQCBib29sIGlzVGFnZ2VkV2l0aChQdHJUeXBlIHZhbHVlKQogdGVtcGxhdGU8UHRyVGFnIHRh
ZywgdHlwZW5hbWUgUHRyVHlwZT4KIHZvaWQgYXNzZXJ0SXNUYWdnZWRXaXRoKFB0clR5cGUgdmFs
dWUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBXVEZfUFRSVEFHX0FTU0VSVChQ
dHJUYWdBY3Rpb246OkRlYnVnQXNzZXJ0LCB2YWx1ZSwgdGFnLCBpc1RhZ2dlZFdpdGg8dGFnPih2
YWx1ZSkpOwogfQogCkBAIC00NDksMjAgKzQ1MCw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRy
KFQqIHB0ciwgc2l6ZV90IG9sZExlbmd0aCwgc2l6ZV90IG5ld0xlbmd0aCkKICAgICByZXR1cm4g
cHRyYXV0aF9hdXRoX2FuZF9yZXNpZ24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVu
dF9kYXRhLCBvbGRMZW5ndGgsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG5l
d0xlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRyVHlw
ZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0
IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gcHRy
YXV0aF9zaWduX3VuYXV0aGVudGljYXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5k
ZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0
YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRl
cikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gX19idWlsdGluX3B0cmF1dGhfYXV0
aChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQ
dHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCiB0ZW1wbGF0ZSA8UHRyVGFnIHRhZywgdHlwZW5h
bWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAg
LTUyMCwxMiArNTA3LDYgQEAgaW5saW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3Qs
IHNpemVfdCkKICAgICByZXR1cm4gcHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBl
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2
YWx1ZT4+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENh
bGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9p
bnRlcjxQdHJUeXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0
YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBw
dHI7IH0KLQogdGVtcGxhdGUgPFB0clRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRU
eXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTU3Miw5ICs1NTMsNyBAQCB1c2luZyBX
VEY6OnJldGFnQXJyYXlQdHI7CiB1c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOwogCiB1c2lu
ZyBXVEY6OnRhZ0NvZGVQdHI7Ci11c2luZyBXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVy
Rm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6dW50YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp1bnRhZ0Nv
ZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6cmV0YWdDb2RlUHRy
OwogdXNpbmcgV1RGOjpyZW1vdmVDb2RlUHRyVGFnOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDQ0NTQwNTlj
NTE1ZDJhNDEyYjQzMmQwNzE0NmNmNmYwMTFkNDc2MGIuLjZjZWZkMmVlMmQzMTA1YzJkNDA0ODVm
Njk2NWZlYmE4ODQ1YjQzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxs
b2NhdG9yUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9T
SVguY3BwCkBAIC0zMSwxNCArMzEsMjcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNs
dWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxF
KEpJVF9DQUdFKQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VCBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBN
QVBfSklUCisjZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9K
SVQgMAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2Vu
ZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIG5hbWVzcGFj
ZSBXVEYgewogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBi
eXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBp
bmNsdWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVk
KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJs
ZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAjaWYg
T1MoTElOVVgpCiAgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKICAgICBVTlVTRURfUEFSQU0od3Jp
dGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKKyAgICBVTlVTRURfUEFSQU0o
aml0Q2FnZUVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMpOwog
CiAgICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9SRVNF
UlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwpAQCAtNDYsNyArNTksNyBAQCB2
b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2Ug
dXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgICAgIENSQVNIKCk7CiAgICAgbWFkdmlzZShyZXN1
bHQsIGJ5dGVzLCBNQURWX0RPTlRORUVEKTsKICNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0gcmVz
ZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBpbmNsdWRl
c0d1YXJkUGFnZXMpOworICAgIHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMs
IHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVzR3Vh
cmRQYWdlcyk7CiAjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0UpCiAgICAgaWYgKHJlc3VsdCkgewog
ICAgICAgICAvLyBUbyBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1pdCIgbW9kZWwsIHdl
IGhhdmUgdG8gaW5pdGlhbGx5IGRlY29tbWl0LgpAQCAtNTksNyArNzIsNyBAQCB2b2lkKiBPU0Fs
bG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJv
b2wgd3JpdGFibGUsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJs
ZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQqIE9TQWxs
b2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wg
d3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNs
dWRlc0d1YXJkUGFnZXMpCiB7CiAgICAgLy8gQWxsIFBPU0lYIHJlc2VydmF0aW9ucyBzdGFydCBv
dXQgbG9naWNhbGx5IGNvbW1pdHRlZC4KICAgICBpbnQgcHJvdGVjdGlvbiA9IFBST1RfUkVBRDsK
QEAgLTcwLDggKzgzLDE0IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNp
emVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvCiAKICAgICBpbnQgZmxh
Z3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9OOwogI2lmIE9TKERBUldJTikKLSAgICBpZiAoZXhl
Y3V0YWJsZSkKLSAgICAgICAgZmxhZ3MgfD0gTUFQX0pJVDsKKyAgICBpZiAoZXhlY3V0YWJsZSkg
eworICAgICAgICBpZiAoaml0Q2FnZUVuYWJsZWQpCisgICAgICAgICAgICBmbGFncyB8PSBNQVBf
RVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0U7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGZsYWdzIHw9IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQ7CisgICAgfQorI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291cmNl
L1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcAppbmRleCA5ZDZjMGFhNzQxMTM2Y2M4YTg0
NmQwNDEyYTkyMWJkYTJhYzM4YjQ3Li42ZDUyYzY2MmRmMDZmOTQ4MWE5MzM1YTdlZDJiNDUxNDM2
NjQ2NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgc3RhdGljIGlubGluZSBEV09SRCBwcm90ZWN0aW9uKGJvb2wgd3JpdGFibGUsIGJvb2wg
ZXhlY3V0YWJsZSkKICAgICAgICAgKHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdFX1JF
QURPTkxZKTsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXpl
X3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wpCit2
b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2Us
IGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lk
KiByZXN1bHQgPSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90
ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC00Niw3
ICs0Niw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5
dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2Fn
ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxvY2F0
b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlLCBib29sLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1
YWxBbGxvYyhudWxscHRyLCBieXRlcywgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBwcm90ZWN0
aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412594</attachid>
            <date>2020-10-28 17:43:17 -0700</date>
            <delta_ts>2020-10-28 18:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201028174316.patch</filename>
            <type>text/plain</type>
            <size>172661</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Mjk4YjVkYWI3NzI1NzE0MjkxNWM4NDU1ZDdiYmIzYTBjYThhZTg2Li5jNzRhNjMwYWZkODg1Y2My
MzhkNmVjMjJhNzE4MjQ1NGQzMTUyNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMjAtMTAtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KToKKyAgICAgICAg
KiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpT
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRy
eU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRyeUdh
dGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dW50
YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5l
VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
bGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29u
ZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAgICAgICAoSlNDOjp0
YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2Fs
bGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6
dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToK
KyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6
Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21T
bG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorCiAyMDIwLTEwLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlIGNvbW1hbmQgbGluZSBBUEkgc2hvdWxkIGJlIGV4
cG9zZWQgdG8gYnJlYWtwb2ludCBjb25kaXRpb25zL2FjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGEwNGYwNTIwYTcx
ZGRjNDc3NzE5YTI3ZjE4YzE3NjU3ZGJlM2ZiMy4uNzQ5NmJlNjdhMmExMzE2MzcxM2ZhYzUzOTFh
YmEwNjBiYzY1OTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0xMC0yOCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
ODE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL09TQWxsb2NhdG9yLmg6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5k
Q29tbWl0KToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQp
OgorICAgICAgICAqIHd0Zi9QYWdlUmVzZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJl
c2VydmF0aW9uOjpyZXNlcnZlKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2Vy
dmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlv
bjo6UGFnZVJlc2VydmF0aW9uKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAg
ICAgIChXVEY6OmFzc2VydElzVGFnZ2VkV2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJX
aXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFn
Q29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2
ZUFuZENvbW1pdCk6CisgICAgICAgICogd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAg
ICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RG
OjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisKIDIwMjAtMTAtMTUgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2lnbiBNYWNyb0Fzc2VtYmxl
cjo6anVtcHNUb0xpbmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlM2Q4
YWIwYTQ3MDk2ZDBkMTEzZTc4M2FkZDE1NDI4ZjU3ODRjMjVhLi5lNzE2YzYxOTllMDk5ZTE2NjEz
NDdiNDI5ZDViNzJiYWJmYzZlMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC04NjcsNiArODY3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKICAgICBydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaAogICAgIHJ1bnRpbWUvRnV6emVyQWdlbnQuaAorICAgIHJ1bnRpbWUv
R2F0ZS5oCiAgICAgcnVudGltZS9HZW5lcmljT2Zmc2V0LmgKICAgICBydW50aW1lL0dlbmVyaWNU
eXBlZEFycmF5Vmlldy5oCiAgICAgcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDNlN2UxY2IyYTlhZGNkOGQ4ZmNm
ZGVkNjUwNGY0YTY4NjJiYWE4OS4uY2JiOTgxNjFjYmMzODE5MjBiZDhmNTZlODBhNmRjOTllYjUw
MTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NTMsNiArMTg1Myw3IEBA
CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2RjIy
RjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlFMzZD
Qzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2
IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkVEQ0U0
MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNzExOTkyMjUzRkE4N0YwMEJBNjlBMCAvKiBH
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzcx
MTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzUwQ0M4MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRs
RGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9y
bWF0SW5saW5lcy5oICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODM1MDBBMjM5MEQ5M0Iw
MDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzgzNTAwOTIzOTBEOTM3MDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oICov
OyB9OwpAQCAtNTA2MSw2ICs1MDYyLDcgQEAKIAkJRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8q
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxEYXRlVGltZUZvcm1hdElubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MjgwLDYgKzcyODIsNyBAQAogCQkJCUUzM0E5NDkyMjI1NTMyMjkwMEQ0
MkIwNiAvKiBGdXp6ZXJBZ2VudC5oICovLAogCQkJCUNFQ0ZBRDM1MjM3MkRBQTcwMDI5MTU5OSAv
KiBGdXp6ZXJQcmVkaWN0aW9ucy5jcHAgKi8sCiAJCQkJQ0VDRkFEMzQyMzcyREFBNzAwMjkxNTk5
IC8qIEZ1enplclByZWRpY3Rpb25zLmggKi8sCisJCQkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEw
IC8qIEdhdGUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtOTcw
MSw2ICs5NzA0LDcgQEAKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzQTk0OTcyMjU1MzIzMzAwRDQyQjA2IC8q
IEZ1enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNGQUQzNjIzNzJEQUQwMDAyOTE1
OTkgLyogRnV6emVyUHJlZGljdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzExOTkyMjUz
RkE4N0YwMEJBNjlBMCAvKiBHYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYzRDE4Q0E1
QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0pJVE9wZXJhdGlvbkxpc3QuY3BwCmluZGV4IGIzY2UxNzc5MmQwMTY3ZjRlYzdiZWNjYTRmZGU4
NWM0NWNiYjEwYjAuLmU0ZjI2YWI0NjZlMmZiNTA1NjcwMjg5MmVlM2FiYWM3NjViNzdkMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlz
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25M
aXN0LmNwcApAQCAtMjYsNiArMjYsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25MaXN0LmgiCiAKKyNpbmNsdWRlICJHYXRlLmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisj
aW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgSlNDIHsKIAogTGF6eU5ldmVyRGVzdHJveWVkPEpJVE9wZXJhdGlvbkxpc3Q+IGpp
dE9wZXJhdGlvbkxpc3Q7CkBAIC00NSwxOCArNTMsMjIgQEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0
Ojppbml0aWFsaXplKCkKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQogc3Rh
dGljIFNVUFBSRVNTX0FTQU4gQUxXQVlTX0lOTElORSB2b2lkIGFkZFBvaW50ZXJzKEhhc2hNYXA8
dm9pZCosIHZvaWQqPiYgbWFwLCBjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWlu
dHB0cl90KiBlbmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3Qg
dWludHB0cl90KiBlbmRPcGVyYXRpb25zKQogewotICAgIGZvciAoY29uc3QgdWludHB0cl90KiBj
dXJyZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgewotICAg
ICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxIb3N0RnVu
Y3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7Ci0gICAgICAgIH0KKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBKU0NfSklUX0NBR0VEX1BPSU5URVJfUkVHSVNUUkFU
SU9OKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZm9yIChjb25zdCB1aW50cHRyX3Qq
IGN1cnJlbnQgPSBiZWdpbk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytj
dXJyZW50KSB7Ci0gICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdp
c2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKLSAgICAgICAgaWYgKGNvZGVQdHIpIHsKLSAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQ
dHJJbXBsPE9wZXJhdGlvblB0clRhZz4oY29kZVB0cikpOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKyNlbmRpZgorICAgIGlmIGNvbnN0ZXhwciAoQVNTRVJUX0VOQUJM
RUQpIHsKKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdpbkhvc3Q7
IGN1cnJlbnQgIT0gZW5kSG9zdDsgKytjdXJyZW50KSB7CisgICAgICAgICAgICB2b2lkKiBjb2Rl
UHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Cisg
ICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAgICBtYXAuYWRkKGNvZGVQdHIs
IFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBiZWdp
bk9wZXJhdGlvbnM7IGN1cnJlbnQgIT0gZW5kT3BlcmF0aW9uczsgKytjdXJyZW50KSB7CisgICAg
ICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCpjdXJyZW50KSk7CisgICAgICAgICAgICBpZiAoY29kZVB0cikKKyAgICAgICAgICAgICAg
ICBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8T3BlcmF0aW9uUHRy
VGFnPihjb2RlUHRyKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03Myw2ICs4NSw1NiBAQCB2
b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlKCkK
ICNlbmRpZgogfQogCit2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkph
dmFTY3JpcHRDb3JlRm9yTExJbnQoKQoreworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElE
QVRJT04pCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgW10geworCisjZGVmaW5lIExMSU5UX09QKG5hbWUpIFwKKyAgICBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0
clRhZz4obmFtZSkpLCBcCisgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldFdp
ZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lKSksCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUs
IC4uLikgXAorICAgIExMSU5UX09QKG5hbWUjI19yZXR1cm5fbG9jYXRpb24pCisKKyAgICAgICAg
Y29uc3QgdWludHB0cl90IG9wZXJhdGlvbnNbXSA9IHsKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKSwK
KyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlKSksCisgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJU
YWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21f
ZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24pKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihj
aGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpKSwKKworICAg
ICAgICAgICAgTExJTlRfT1Aob3BfY2F0Y2gpCisgICAgICAgICAgICBMTElOVF9PUChsbGludF9n
ZW5lcmljX3JldHVybl9wb2ludCkKKworICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9O
KG9wX2dldF9ieV9pZCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRf
YnlfdmFsKQorICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV9pZCkK
KyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorCisgICAg
ICAgICAgICBKU0NfSlNfR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NBVElPTikKKyAgICAg
ICAgICAgIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisgICAg
ICAgIH07CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGFkZFBv
aW50ZXJzKGppdE9wZXJhdGlvbkxpc3QtPm1fdmFsaWRhdGVkT3BlcmF0aW9ucywgbnVsbHB0ciwg
bnVsbHB0ciwgb3BlcmF0aW9ucywgb3BlcmF0aW9ucyArIFdURl9BUlJBWV9MRU5HVEgob3BlcmF0
aW9ucykpOworI3VuZGVmIExMSU5UX1JFVFVSTl9MT0NBVElPTgorICAgIH0pOworI2VuZGlmCit9
CisKKwogdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihj
b25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRp
b25zKQogewogICAgIFVOVVNFRF9QQVJBTShiZWdpbkhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaAppbmRleCAwOTg0OTNmNTBi
MmFkMzNjZDFkOTc1NzRhMjgzZTlmZjhiOTY4MzY5Li41YTQwZmY3YzhjZmFkNmI0MjAzNzczYmQy
NGFkNTU3YjRjZTQyNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0pJVE9wZXJhdGlvbkxpc3QuaApAQCAtMzksMTIgKzM5LDE1IEBAIGNsYXNzIEpJVE9wZXJh
dGlvbkxpc3QgewogCiAgICAgdm9pZCogY29udGFpbnModm9pZCogcG9pbnRlcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKLSAgICAgICAgICAgIHJl
dHVybiBtX3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikp
OworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisgICAgICAgIHJldHVybiBt
X3ZhbGlkYXRlZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikpOworI2Vs
c2UKICAgICAgICAgcmV0dXJuIHBvaW50ZXI7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpOworICAgIHN0YXRpYyB2b2lk
IHBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKTsKIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKGNvbnN0
IHVpbnRwdHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhvc3QsIGNvbnN0IHVp
bnRwdHJfdCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVuZE9wZXJhdGlvbnMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDQ1YjRiM2I0Njk2ODU1MmQ3ZGFjOTc4OGFmZjZjZjBiNDNkYjI2
YzYuLjRjOWE5ZWJhNGI2NGY0MWMxMGU5NDRkZjI0MzhhNmZkZWExN2JhNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC0zMzkyLDYgKzMzOTIsMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxl
ci5icih0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRh
cmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJyKGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJl
c3MsIFB0clRhZykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAppbmRleCAzOWVhMTUx
MTQ3NjFhMDBlMDAwNTAzMTAwYmU3NmJkZTQ0YTJmOGM0Li5kMTg3ZDY5MzBlNmZkOWY2NjgzNzk4
ZGEzMzljNWExMzZkMDM0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCkBAIC0zMiw2ICszMiw5IEBACiAjaW5j
bHVkZSAiQVJNNjRFQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJBUk02NC5oIgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRl
IDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC0xMTAsMjAgKzExMywyOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0
RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKICAgICBzdGF0aWMgY29uc3RleHByIFJl
Z2lzdGVySUQgSW52YWxpZEdQUiAgPSBzdGF0aWNfY2FzdDxSZWdpc3RlcklEPigtMSk7CiAKICAg
ICBlbnVtIGNsYXNzIENhbGxTaWduYXR1cmVUeXBlIHsKLSAgICAgICAgQ0Z1bmN0aW9uQ2FsbCwK
LSAgICAgICAgT3RoZXJDYWxsCisgICAgICAgIEpJVENhbGwsCisgICAgICAgIE5hdGl2ZUNhbGws
CisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSnVtcFNpZ25hdHVyZVR5cGUgeworICAgICAgICBK
SVRKdW1wLAorICAgICAgICBOYXRpdmVKdW1wLAogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxDYWxs
U2lnbmF0dXJlVHlwZSB0eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsVHJ1c3RlZFB0
cihSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAgICBVTlVTRURf
UEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gZGF0YVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgIEFzc2VtYmxlckxhYmVsIHBvaW50ZXJMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVs
KCk7CiAgICAgICAgIG1vdmVXaXRoRml4ZWRXaWR0aChUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICBpbnZh
bGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9PSBDYWxsU2lnbmF0
dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFheihk
YXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9DQUxMKHR5cGUsIGRhdGFUZW1wUmVnaXN0ZXIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYihkYXRhVGVtcFJlZ2lzdGVy
LCB0YWdHUFIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBjYWxsTGFiZWwgPSBtX2Fzc2VtYmxl
ci5sYWJlbCgpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHBvaW50ZXJMYWJlbCwgQVJNNjRBc3Nl
bWJsZXI6OmdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNhbGxMYWJlbCwgcG9pbnRlckxhYmVs
KSA9PSBSRVBBVENIX09GRlNFVF9DQUxMX1RPX1BPSU5URVIpOwpAQCAtMTMyLDUxICsxNDMsNTMg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02
NCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcgdGFnKQogICAgIHsKLSAg
ICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckFSTTY0OjpjYWxsKHRhZyk7Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFn
KQotICAgICAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpD
RnVuY3Rpb25DYWxsPigpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAm
JiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0
clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIEFS
TTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2ln
bmF0dXJlVHlwZTo6T3RoZXJDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICBpZiAo
Y2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIHJl
dHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4oQVJNNjRSZWdp
c3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVU
eXBlOjpOYXRpdmVDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhZ0dQUik7
CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZl
Q2FsbD4odGFnR1BSKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxDYWxsU2lnbmF0dXJlVHlwZSB0
eXBlPgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikKICAgICB7CisgICAgICAgIFVO
VVNFRF9QQVJBTSh0eXBlKTsKICAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwog
ICAgICAgICBpbnZhbGlkYXRlQWxsVGVtcFJlZ2lzdGVycygpOwotICAgICAgICBpZiAodHlwZSA9
PSBDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbCkKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJscmFheih0YXJnZXRHUFIpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChPcHRpb25z
Ojp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBKU0Nf
SklUX0NBR0VEX0NBTEwodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIodGFyZ2V0R1BSLCB0YWdHUFIp
OwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpOb25lKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQ
UiwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAg
ICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YXJnZXRHUFIsIHRhZyk7
Ci0gICAgICAgIGlmICh0YWcgPT0gQ0Z1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJu
IGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4odGFyZ2V0R1BS
KTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRy
VGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBl
OjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lzdGVyczo6
bHIpOwotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhl
ckNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgaWYgKGNhbGxl
ZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICByZXR1cm4g
Y2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpKSVRDYWxsPih0YXJnZXRHUFIsIEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVy
ZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVn
aXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxT
aWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BS
LCB0YWdHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKEFkZHJlc3Mg
YWRkcmVzcywgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
Ci0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbChhZGRyZXNzLCB0
YWcpOwotCisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBO
b1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CiAgICAgICAgIHJldHVybiBjYWxsKGRhdGFUZW1wUmVn
aXN0ZXIsIHRhZyk7CiAgICAgfQpAQCAtMTk3LDkwICsyMTAsMTI5IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewogCiAgICAgQUxXQVlT
X0lOTElORSBKdW1wIGp1bXAoKSB7IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpqdW1wKCk7
IH0KIAotICAgIHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUHRyVGFnIHRhZykKKyAg
ICB0ZW1wbGF0ZTxKdW1wU2lnbmF0dXJlVHlwZSB0eXBlPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBmYXJKdW1wUmVnaXN0ZXIoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BS
ID0gSW52YWxpZEdQUikKKyAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICAg
ICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgSlNDX0pJVF9D
QUdFRF9GQVJfSlVNUCh0eXBlLCB0YXJnZXRHUFIsIHRhZ0dQUik7CisjZW5kaWYKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnR1BSKTsK
KyAgICB9CisKKyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRhZyB0
YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAodGFyZ2V0LCB0YWcpOworICAgICAgICBB
U1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAg
ICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAKICAg
ICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOwogICAgICAgICBSZWdpc3RlcklE
IGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAg
ICAgZmFySnVtcCh0YXJnZXQsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBl
KHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lz
dGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAg
IHZvaWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldCwgUmVnaXN0ZXJJRCB0YWcpCisgICAgdm9p
ZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXQpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdl
dCwgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZl
cnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsK
KyAgICAgICAgbW92ZSh0YXJnZXQsIHRhcmdldEdQUik7CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBT
aWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0
aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFy
SnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lz
dGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIGlmICh0
YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6
ZmFySnVtcChhZGRyZXNzLCB0YWcpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQ
Uik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4o
dGFyZ2V0R1BSLCB0YWdHUFIpOworICAgIH0KIAotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5j
dGlvblB0clRhZyk7CisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJ
RCB0YWdHUFIpCisgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBk
aXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUo
KTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQo
YWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2
ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0
eUdQUik7CisgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVt
cD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHRhcmdl
dEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAg
ICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRh
cmdldEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwotICAgICAgICBt
X2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVy
PEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQog
Ci0gICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZv
aWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWdHUFIpCiAg
ICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIpOworICAgICAgICBsb2FkNjQo
QWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8
SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAK
LSAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVt
cChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCisgICAgeworICAgICAgICBBU1NFUlQodGFn
ICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQo
Y2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIFJlZ2lz
dGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRl
bXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFy
Z2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAg
ICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAg
ICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRH
UFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdp
c3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlH
UFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUmVnaXN0
ZXJJRCB0YWcpCisgICAgdm9pZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBQdHJUYWcgdGFn
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9
IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERh
dGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0
YXJnZXRHUFIpOworICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1l
bW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBsb2FkNjQoYWRkcmVz
cywgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7CisgICAgICAg
IGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAg
ICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIs
IGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3Rl
cjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIp
OwogICAgIH0KIAogICAgIHZvaWQgZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUHRy
VGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNzLCB0YWcpOwotCisg
ICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7
CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lz
dGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0g
Z2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbG9h
ZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIGRpdmVyc2l0eUdQUik7Ci0gICAgfQotCi0gICAgdm9pZCBmYXJKdW1wKEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKLSAgICB7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OwotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbG9hZDY0KEFkZHJl
c3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIHRhZyk7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVl
VHlwZTo6SklUKQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBl
OjpKSVRKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6TmF0aXZlSnVtcD4odGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBy
ZXQoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAg
IEpTQ19KSVRfQ0FHRURfUkVUKCk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5yZXRhYigpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMGM3NTk3
YmFmNjQyNjY0OTk2MzRhNTk4MDE3YmZiNjRjMzE2YTU2NC4uMmM5YjhmZjgwOTUxNmViMDc3NDRi
ZGZmODI2NzdhMGM2YzRmZGYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTE3MTksNiArMTcxOSwxMiBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTXY3IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJ4KHRhcmdldCk7CiAgICAgfQogCisg
ICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAg
ICAgICBtb3ZlKHRhcmdldCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
LmJ4KGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1v
cnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBm
YXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGU2M2Fi
NDc1NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMuLmFkYWQ1NGNiMDI2MTdkMTE5NzFi
YjI0NWUwYTAzZjRkOGRhZGZiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjAwNCw2ICsyMDA0LDEzIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyTUlQUyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICB9CiAKKyAgICB2b2lk
IGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1v
dmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgfQorCiAg
ICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKICAgICAgICAg
bV9maXhlZFdpZHRoID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCAyOGZhZTJlNzJmMjU2
NTdlNjEzMzA1ZjIwMDNkZmNiZWE1ZWVjYTlhLi43NmRkYjU3Njk0ZGEyNGY0YWU4MDViMDQ5M2I0
MmE4ZTY0MmYzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0yNzUwLDYgKzI3NTAsMTIgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIuam1wX3IodGFyZ2V0KTsKICAg
ICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAg
ICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICAvLyBBZGRy
ZXNzIGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0
bwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCAyZmVk
MTgyZTQ1N2Y3NDY2MjY1ZjY1YjE0YzU5NDMxZjIzZTg0YWQxLi4wNTdiMzA3OGMyYjdlODY5Mzkz
MmI5MDVmMTk0ZDNmNzdiNDY0MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0MDMsNiArMTQwMyw3IEBACiBvcCA6bGxpbnRfaW50
ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUKIG9wIDpjaGVja3BvaW50X29zcl9leGl0
X3RyYW1wb2xpbmUKK29wIDpub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZQogb3AgOmZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQKIG9wIDpsbGludF9nZXRfaG9zdF9jYWxsX3JldHVy
bl92YWx1ZQogb3AgOmxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb24KQEAgLTE0MTksNiAr
MTQyMCw0MCBAQAogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWUKIG9wIDp3YXNtX2Z1bmN0aW9u
X3Byb2xvZ3VlX25vX3RscwogCitvcCA6b3BfY2FsbF9zbG93X3JldHVybl9sb2NhdGlvbgorb3Ag
Om9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX29wZW5f
c2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9uZXh0X3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6b3BfdGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2Fs
bF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uCitvcCA6b3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCisKK29w
IDpqc190cmFtcG9saW5lX29wX2NhbGwKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbAor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVy
YXRvcl9uZXh0CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuCitvcCA6anNfdHJh
bXBvbGluZV9vcF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVf
b3BfY2FsbF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF92YXJh
cmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50
c19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93CitvcCA6
anNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRl
cmF0b3JfbmV4dF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3cK
K29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3Vu
dGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a190YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2tfdW50YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2tfdGFnCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbAorb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzCitvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdAorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rf
bm9fdGxzCisKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKIGJlZ2luX3NlY3Rpb24gOldh
c20sCkBAIC0xNDMzLDYgKzE0NjgsMTEgQEAKIAogb3AgOnRocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmUKIAorb3AgOmNhbGxfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9ub190bHNfcmV0
dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9yZXR1cm5fbG9jYXRpb24KK29wIDpjYWxs
X2luZGlyZWN0X25vX3Rsc19yZXR1cm5fbG9jYXRpb24KKwogIyBGSVhNRTogV2FzbSBhbmQgSlMg
TExJbnQgc2hvdWxkIHNoYXJlIGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxNTAzYmYwMzg0N2E2NDg1MzM5MTEyNzc2OGQ3
MDI1MGU4OWE1MzguLmIwNjE1MGZjY2Y0YzdkZGE1ZTUxY2M1ZmFkNjNjZDMxMWQxODIzNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTMy
MCw2ICszMjAsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9w
Y29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2UgbGxpbnRfaGFu
ZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbjoKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJv
bV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZToKICAgICBjYXNlIGNoZWNrcG9pbnRfb3NyX2V4aXRf
dHJhbXBvbGluZToKKyAgICBjYXNlIG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lOgogICAgIGNh
c2UgZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludDoKICAgICBjYXNlIG9wX2l0ZXJh
dG9yX29wZW5fcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9yZXR1
cm5fbG9jYXRpb246CkBAIC0zMzEsOCArMzMyLDQwIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJ
CiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3JldHVybl9s
b2NhdGlvbjoKKyAgICBjYXNlIG9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9pdGVyYXRv
cl9vcGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRlcmF0b3JfbmV4dF9z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRp
b246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2Fz
ZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBj
YXNlIG9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWU6CiAgICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RsczoK
KyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVf
b3BfdGFpbF9jYWxsOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Q6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHQ6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX2l0ZXJhdG9yX29wZW46CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfc2xv
dzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2NvbnN0cnVjdF9zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9v
cF9jYWxsX3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxs
X3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF92
YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfZXZhbF9zbG93Ogor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3c6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX29wX2l0ZXJhdG9yX29wZW5fc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBq
c190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZzoKKyAg
ICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja191bnRhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVja190YWc6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6CisgICAgY2Fz
ZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorICAgIGNhc2Ugd2FzbV90cmFt
cG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RD
b21waWxlOwogICAgIH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCBkZDY2NmZhYTgzZTgzNTA5ZTY1YjA3NTU3NjIyZjA4YTk0OTQyMWJkLi5hYzRiOGM1NzNiODI2
YjZhMzBjNjNmZWRiNDI1OGI1YWZiZWI1Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0xMzgsMjEgKzEz
OCwyMSBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgZG9uZUFkanVzdGluZy5saW5rKCZqaXQpOwog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMo
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxs
Qnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIHRydWVDYWxsZXJDYWxsS2luZCwg
Ym9vbCYgY2FsbGVySXNMTEludCkKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhp
dFB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNh
bGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kIHRydWVDYWxsZXJDYWxsS2luZCwgYm9vbCYgY2FsbGVySXNMTEludCkKIHsKICAgICBjYWxs
ZXJJc0xMSW50ID0gT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGJhc2VsaW5lQ29k
ZUJsb2NrRm9yQ2FsbGVyLT5qaXRUeXBlKCkgPT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuazsK
IAogICAgIGlmIChjYWxsQnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpIHsKICAgICAgICAgaWYg
KCFjYWxsZXJJc0xMSW50KQogICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIt
Pm1faGFzTGlua2VkT1NSRXhpdCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBMTEludDo6Z2V0Q29k
ZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxs
X3RyYW1wb2xpbmUpOworICAgICAgICByZXR1cm4gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0RnJv
bUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgIH0KIAotICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0OworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0OwogCiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24mIGNhbGxJbnN0cnVjdGlvbiA9ICpiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+
aW5zdHJ1Y3Rpb25zKCkuYXQoY2FsbEJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgIGlmIChjYWxs
ZXJJc0xMSW50KSB7Ci0jZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTE2KCkgPyBMTEludDo6Z2V0V2lkZTE2Q29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMzIo
KSA/IExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pIDogTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpKQorI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgTExJbnQ6
OnJldHVybkxvY2F0aW9uVGh1bmsobmFtZSMjX3JldHVybl9sb2NhdGlvbiwgY2FsbEluc3RydWN0
aW9uLndpZHRoKCkpLmNvZGUoKQogCiAgICAgICAgIHN3aXRjaCAodHJ1ZUNhbGxlckNhbGxLaW5k
KSB7CiAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOiB7CkBAIC0yMDksNyArMjA5
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBD
KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBiYXNlbGluZUNv
ZGVCbG9ja0ZvckNhbGxlci0+Z2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChjYWxsQnl0
ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsTGlua0luZm8pOwog
Ci0gICAgICAgICAgICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpOworICAgICAgICAgICAganVtcFRhcmdldCA9
IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uKCkucmV0YWdnZWQ8T1NSRXhpdFB0clRh
Zz4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyNiwxMyArMjI2LDEz
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgLy8gNi4gKEIpIGdl
dHMgT1NSIGV4aXQuIChCKSBhdHRlbXB0cyB0byBzZWFyY2ggZm9yIFN0cnVjdHVyZVN0dWJJbmZv
IGluIChBKSBmb3IgUHV0QnlJZCAob3JpZ2luYWxseSwgcHV0X2J5X3ZhbCkuIEJ1dCBpdCBkb2Vz
IG5vdCBleGlzdCBzaW5jZSAoQSkncyBKSVREYXRhIGlzIGNsZWFyZWQgb25jZS4KICAgICAgICAg
ICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVy
LT5maW5kQnlWYWxJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChieVZhbEluZm8pOwotICAgICAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBieVZhbEluZm8tPmRvbmVUYXJnZXQucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsK
KyAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFn
Z2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yQ2FsbGVyLT5maW5kU3R1YkluZm8oQ29kZU9yaWdpbihjYWxsQnl0ZWNvZGVJ
bmRleCkpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8pOwotICAgICAgICAg
ICAganVtcFRhcmdldCA9IHN0dWJJbmZvLT5kb25lTG9jYXRpb24ucmV0YWdnZWQ8SlNFbnRyeVB0
clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9u
LnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoKnRydWVDYWxsZXIpOwogICAgICAgICAgICAgYXV0byBjYWxs
Qnl0ZWNvZGVJbmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXgoKTsKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVy
UmV0dXJuUEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0
cnVlQ2FsbGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOworICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGp1bXBUYXJnZXQgPSBjYWxsZXJSZXR1cm5QQyhi
YXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciwgY2FsbEJ5dGVjb2RlSW5kZXgsIHRydWVDYWxsZXJD
YWxsS2luZCwgY2FsbGVySXNMTEludCk7CiAKICAgICAgICAgICAgIGlmICh0cnVlQ2FsbGVyLT5p
bmxpbmVDYWxsRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCkBAIC00MDIs
MTEgKzQwMiwxMSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICBpZiAoZXhpdFRvTExJbnQp
IHsKICAgICAgICAgYXV0byBieXRlY29kZUluZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOwogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9u
ID0gKmNvZGVCbG9ja0ZvckV4aXQtPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0
cigpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGlu
YXRpb247CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBkZXN0
aW5hdGlvbjsKICAgICAgICAgaWYgKGJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKQotICAgICAg
ICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVj
a3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBM
TEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CiAgICAgICAg
IGVsc2UgCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpnZXRDb2RlUHRyPEpTRW50
cnlQdHJUYWc+KGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9
IExMSW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogCiAgICAgICAg
IGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7CiAgICAgICAgICAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmN1cnJlbnRJbnN0cnVjdGlvbiksIEdQUkluZm86
OnJlZ1QyKTsKQEAgLTQxNiwyMiArNDE2LDIyIEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0
KFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJsb2NrRm9yRXhp
dC0+bWV0YWRhdGFUYWJsZSgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6bWV0YWRhdGFUYWJsZUdQUik7
CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2tG
b3JFeGl0LT5pbnN0cnVjdGlvbnNSYXdQb2ludGVyKCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwYkdQ
Uik7CiAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGJ5dGVjb2Rl
SW5kZXgub2Zmc2V0KCkpLCBMTEludDo6UmVnaXN0ZXJzOjpwY0dQUik7Ci0gICAgICAgIGp1bXBU
YXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvZGVCbG9ja0ZvckV4aXQtPm1faGFzTGlu
a2VkT1NSRXhpdCA9IHRydWU7CiAKICAgICAgICAgQnl0ZWNvZGVJbmRleCBleGl0SW5kZXggPSBl
eGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiBkZXN0aW5hdGlvbjsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE9TUkV4aXRQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAgICBpZiAoZXhpdElu
ZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGlu
ZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChjb2Rl
QmxvY2tGb3JFeGl0LT5ieXRlY29kZUluZGV4Rm9yRXhpdChleGl0SW5kZXgpID09IGV4aXRJbmRl
eCk7Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4aXQtPmppdENvZGVN
YXAoKS5maW5kKGV4aXRJbmRleCk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9j
a0ZvckV4aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCkucmV0YWdnZWQ8T1NSRXhpdFB0
clRhZz4oKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChkZXN0aW5hdGlvbik7CiAKLSAg
ICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLnJldGFnZ2VkPE9TUkV4aXRQdHJUYWc+KCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAganVtcFRhcmdldCA9IGRlc3RpbmF0aW9uLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQogCiAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKSVQ6OnN0YWNrUG9pbnRlck9mZnNldEZvcihjb2RlQmxvY2tGb3JF
eGl0KSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQXNz
ZW1ibHlIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRleCAzOTExNGVh
Njc3MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkLi5kYmEwZmUzMjJiZjg4MWM5NWMyMmRi
ODUwNjE2MjQyMDRhNmFhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiwgQ0NhbGxI
ZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1l
cyhDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1w
VG9UYXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwotTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayog
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5k
ZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50
KTsKIENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUq
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSk7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGZmOWE4YWZkMDU5NDVjMjliOTc4
YzFmZjNjZjk3YTIyMmJiNGI5MjEuLjliZTY0YmJkZjBmMjhmZDU3NGE0MjU4ODRjZDUzNDFkZjFh
NjY0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcApAQCAtNDgsNiArNDgsMTggQEAKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNp
bmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1
ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUo
SklUX0NBR0UpCisjaWYgT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
IE1BUF9KSVQKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1B
UF9KSVQKKyNlbHNlIC8vIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VCAwCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCisjZW5k
aWYgLy8gT1MoREFSV0lOKQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKwogZXh0ZXJuICJD
IiB7CiAgICAgLyogUm91dGluZSBtYWNoX3ZtX3JlbWFwICovCiAjaWZkZWYgbWlnX2V4dGVybmFs
CkBAIC0xMzksOCArMTUxLDggQEAgdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIAogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUgPSAxOwog
ICAgICAgICBjb25zdGV4cHIgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
IHwgUFJPVF9FWEVDOwotICAgICAgICBjb25zdGV4cHIgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiB8IE1BUF9KSVQ7CiAgICAgICAgIGNvbnN0ZXhwciBpbnQgZmQgPSBPU0FsbG9j
YXRvcjo6SlNKSVRDb2RlUGFnZXM7CisgICAgICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwg
TUFQX0FOT04gfCAoT3B0aW9uczo6dXNlSklUQ2FnZSgpID8gTUFQX0VYRUNVVEFCTEVfRk9SX0pJ
VF9XSVRIX0pJVF9DQUdFIDogTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCk7CiAgICAgICAgIHZvaWQq
IGFsbG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHByb3RlY3Rpb24sIGZsYWdzLCBmZCwg
MCk7CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVy
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbiAhPSBleGVjdXRhYmxlTWVtb3J5
QWxsb2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhhdmUgYWxsb2NhdGVkIGV4ZWN1dGFi
bGUgbWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4iKTsKQEAgLTMyNCw5ICszMzYsOSBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlvbiBpbml0aWFsaXplSklUUGFnZVJl
c2VydmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIEpJVCBjb2Rl
IGxvZ2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2RlIGlzIG5vdCByZWNvcmRlZCBjb3Jy
ZWN0bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgdXNlIGNvbW1pdHRl
ZCByZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVtcCBsb2dnaW5nLgogICAgICAgICBp
ZiAoT3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAgICAgICAgICAgIHJldHVybiBQYWdl
UmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNp
emUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxF
LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRD
b21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENv
ZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBmYWxzZSk7CiAjZW5kaWYK
LSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJl
c2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BP
T0xfV1JJVEFCTEUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNl
cnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uID0gdHJ5Q3Jl
YXRlUGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAppbmRleCA3NGRhZTIyNmY1NDViN2FhYWYzNDc4NzQ0MzM2NDI3MDAxNWJkMGE0
Li44ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDYgKzQ2NSwxMCBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBY
ODZSZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gWDg2UmVnaXN0
ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IFg4NlJlZ2lz
dGVyczo6ZWF4OworI2lmICFPUyhXSU5ET1dTKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHdhc21TY3JhdGNoR1BSMSA9IFg4NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCiAKICAgICAvLyBG
SVhNRTogSSBiZWxpZXZlIHRoYXQgYWxsIHVzZXMgb2YgdGhpcyBhcmUgZGVhZCBpbiB0aGUgc2Vu
c2UgdGhhdCBpdCBqdXN0IGNhdXNlcyB0aGUgc2NyYXRjaAogICAgIC8vIHJlZ2lzdGVyIGFsbG9j
YXRvciB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcmVnaXN0ZXIgYW5kIHBvdGVudGlhbGx5IHNwaWxs
IHRoaW5ncy4gSXQgd291bGQgYmUgYmV0dGVyCkBAIC02MzQsNyArNjM4LDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gQVJNNjRSZWdpc3Rl
cnM6OngyMjsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBV
c2VkIGJ5IEZUTCBvbmx5Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJN
NjRSZWdpc3RlcnM6OngyNTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyBudW1iZXJUYWcK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBBUk02NFJlZ2lzdGVyczo6eDI4
OyAvLyBub3RDZWxsTWFzawpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2
ZWROb25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpp
cDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJNNjRS
ZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BS
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJl
Y3QsIHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJl
Y3RseSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3Bw
CmluZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0NmU5
MDRhOWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkK
IHZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9j
YWxsTGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2Vt
Ymx5KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkp
OworICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlu
a2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9j
YXRpb24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29kZUlu
ZGV4KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3MWRk
OTgwMjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5MjJk
NWYwMzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1pdFBv
aW50ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFn
VHlwZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAgICBD
Q2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52
YWxpZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNoVG9T
YXZlKHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwotICAg
IGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0b3Jl
KHBvaW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29u
KFRHSW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAgICAg
ICAgaml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0YWcs
IHBvaW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7
CisgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAvLyBX
ZSB3aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1
dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggYmZh
NGYzYmM4ZWUyYjg5ZjQxYjljYjk4NjBmNmYzYjNjYzgxZTUyMy4uYjA1MWQ3YjgzNmMxZGE2ZDhj
ZjA0MTU4MzE4N2MwOWI0YjNkYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNsdWRl
ICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNfQVNT
RVJUKGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAot
CiBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwyMiBA
QCBleHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAogI2Vu
ZGlmIC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJD
IiB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2
b2lkIHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFp
bENhbGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpT
RW50cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0aW9u
SGFuZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxMSW50
VHJhbXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lmIEVO
QUJMRShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJM
RShDX0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFw
LCAmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxpbnQu
b3Bjb2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYgKzgz
LDEzMiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNl
cHRpb25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lOwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W2ldID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKworICAg
IEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJ
bnQoKTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFnKSBc
CisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAgICAg
IGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmso
cmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJ
bnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1
cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNu
YW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNvZGVS
ZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpz
X3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3Qo
TExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9s
aW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50Ojpn
ZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25h
bWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmln
LmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIp
XSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0g
d2hpbGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dBVEUp
CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNNX0dB
VEUobmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVS
ZWY4OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJl
dGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0
aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChj
cmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBP
cGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7
IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVy
bl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7
IFwKKyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAg
ICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29k
ZVJlZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFt
ZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01fR0FU
RV9PUENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFT
U0VNQkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChj
cmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3Bl
cmF0aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQdHJU
YWcsICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2Rl
UHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50
cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
Z2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCld
ID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAg
eworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6
dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2
bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9O
YXRpdmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46
OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlv
blB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGlu
ZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAgICBn
X2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWls
Q2FsbEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxl
QWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNj
Q29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2VwdGlv
bkhhbmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0dXJu
RnJvbUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZv
aWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZyb21M
TEludFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYuZ2V0
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRodW5r
KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9IGVu
dHJ5T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
d2FzbU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RI
VU5LUyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0NvZGVS
ZWY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVj
dCh0YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJh
dGlvblB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRhZ0Nv
ZGVSZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0
aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBcCisg
ICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50
OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUj
I190YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6Z2V0
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNfdW50
YWcpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdldCgp
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50
LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1bnRh
Z0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxl
ICgwKTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19U
SFVOS1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0ZTI3
MzY1OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMxZmVh
MjgxOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0yMDQs
NiArMjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxp
bnQub3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bjb2Rl
V2lkZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENP
REVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bj
b2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNv
ZGVXaWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1P
cGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRyKFdh
c21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFnQ29k
ZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsK
K30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7Cisg
ICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUx
NihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcs
IHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+Ojpj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0clRh
ZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdpZGUz
MkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAgICBh
ZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOworICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElO
RSBMTEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sK
KyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29k
ZT4oZ2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNl
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4o
b3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3Rl
bXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRy
PHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJ
RCkudGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8
UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlv
blB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihv
cGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1w
bGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vsc2UK
IEFMV0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2ZDI0
OWZhNjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uYzFhMjhmMGE0OWU1MWM4NTRhZDM2
MWJlNWRiMGU4MTgzZTk0NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB2
b2lkIGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBq
c1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
anNUcmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQpOwor
ZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1Byb2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGluZShQ
dHJUeXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOworfQor
I2VuZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2st
PnNwZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lkIHNl
dEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGlj
IERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJM
RShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShlbnRy
eXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSksIGVu
dHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQ
cm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFy
ZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERp
cmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2Rl
OjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJl
Y3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29u
c3RydWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnBy
ZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAg
ICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwg
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZSht
YWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMgdm9p
ZCBzZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0
aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5l
KGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIElu
dHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOwor
I2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNF
bnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1
bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFy
ZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYo
KmppdENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENv
ZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
IGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1w
b2xpbmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5z
aWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNl
CiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpq
aXRDb2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVBy
b2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVK
SVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNU
cmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVu
aywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJl
ZCk7CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJl
ZjxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6
OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJl
QXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzQgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRy
eXBvaW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAgIHJl
dHVybiBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJu
X3ZhbHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAg
ICAgcmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bj
b2RlU2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29kZVNp
emU6Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUxNjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6Oldp
ZGUzMjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIHNldEVudHJ5cG9p
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFjODQ4
NDFkYmZkOC4uMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0N2I4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKyNpbmNsdWRl
ICJPcGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw1ICs0Miw3IEBAIHZv
aWQgc2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3Vu
dEZvcihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50
KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBv
aW50RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCBiYmExMjBhN2M1NTg1OGYzNzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhLi5hMzQ3YzYyMzlhY2Rm
ZDlmZTMwZDU4NGYwMDAzOGM0YjUwYjk2MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUgSlNW
YWx1ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAgTExJ
TlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFn
PihjYWxsVGFyZ2V0KSksIChjYWxsRnJhbWUpKQorICAgIExMSU5UX1JFVFVSTl9UV08oKHJldGFn
Q29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQp
KSwgKGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3Qs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBKU0ds
b2JhbE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhp
bnRFeGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIgPj0g
T3B0aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enpl
cl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxG
cmFtZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6
OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAogICAg
IApAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nv
bnN0cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJh
cmdzPihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpP
YmplY3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVy
blR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0
aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50
KQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IElu
c3RydWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KGJ5dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxG
cmFtZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+c2V0
UmV0dXJuUEMocmV0dXJuUG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgY2FsbGVlRnJh
bWUtPnNldFJldHVyblBDKHJldHVyblBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsK
ICAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFtZS0+
c2V0Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGluZSBT
bG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNv
bnN0IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2Fs
bF9ldmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTElu
dDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJp
Y1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJu
IGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNv
bW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRy
eXBvaW50KE9wY29kZVNpemU6OldpZGUxNikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwo
Y2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2Fs
bEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6
ZTo6V2lkZTMyKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQp
CkBAIC0yMjY1LDggKzIyNjUsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRj
aFRvTmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAgIGlm
IChPcHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkg
PT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biogbmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotICAgICAgICBhdXRvIG5leHRCeXRlY29kZSA9
IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCpwYy5uZXh0KCkucHRyKCkpOwotICAg
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgbmV4dEJ5dGVjb2RlLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQo
bmV4dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggNzg1MzYwZjQ4NzYwNzFhZmQ2NGFkMWNm
ZTFiYThiZWE4MzhhYjNkMi4uYTYxNjI1ZGE4OTRmNDk4ZTk0MGJlYzE0NTJjNWU5ZTZlOTVmMjQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCkBAIC00
MCw2ICs0MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCiAKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorI2RlZmluZSBKU0NfQU5OT1RBVEVfTExJ
TlRfSklUX09QRVJBVElPTihuYW1lKSBcCisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04o
X0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCisKKyNkZWZpbmUgSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT05fV0lUSF9ERUNMQVJFKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIHZvaWQgbmFt
ZSh2b2lkKTsgXAorICAgIEpTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNu
YW1lLCBuYW1lKQorCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT04oaml0Q2FnZVB0ckdhdGVBZnRlcik7CisjZW5kaWYKK0pTQ19BTk5PVEFURV9M
TElOVF9KSVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHQpOworSlNDX0FOTk9UQVRFX0xM
SU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlKTsKK0pTQ19BTk5PVEFURV9MTElOVF9K
SVRfT1BFUkFUSU9OKHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRF
X0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKTsKK0pTQ19BTk5P
VEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9U
QVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIpOwor
CisjZW5kaWYKKwogbmFtZXNwYWNlIExMSW50IHsKIAogLy8gVGhlc2UgdGh1bmtzIGFyZSBuZWNl
c3NhcnkgYmVjYXVzZSBvZiBuZWFyQ2FsbCB1c2VkIG9uIEpJVGVkIGNvZGUuCkBAIC01Miw3ICs3
NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyhMTEludENvZGUgdGFyZ2V0LCBjb25zCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0
OwogCi0gICAgYXNzZXJ0SXNUYWdnZWRXaXRoPEpTRW50cnlQdHJUYWc+KHRhcmdldCk7CisgICAg
YXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IFdh
c206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRjaEdQUnNbMF07CkBAIC02
MCwxNiArODIsNTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKICAgICBDQ2FsbEhlbHBlcnM6
OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKICNlbmRpZgogICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gp
OwotICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIEpTRW50cnlQdHJUYWcpOworICAgIGppdC5mYXJK
dW1wKHNjcmF0Y2gsIE9wZXJhdGlvblB0clRhZyk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgcHJvbG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyB0aHVuayIs
IHRodW5rS2luZCk7CiB9CiAKIHRlbXBsYXRlPFB0clRhZyB0YWc+CiBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oT3Bjb2RlSUQgb3Bjb2Rl
SUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKIHsKLSAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9w
Y29kZUlEKSwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
dGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQp
LCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWUoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisKKyAgICBMTEludENvZGUgdGFyZ2V0ID0gTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3Bl
cmF0aW9uUHRyVGFnPih0YXJnZXQpOworCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIEND
YWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50
aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKKyNlbHNlCisgICAgQ0NhbGxIZWxwZXJzOjpS
ZWdpc3RlcklEIHNjcmF0Y2ggPSBKU0ludGVyZmFjZUpJVDo6cmVnVDA7CisjZW5kaWYKKyAgICBq
aXQudGFnUmV0dXJuQWRkcmVzcygpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKHRhcmdldCksIHNjcmF0Y2gpOworICAgIGppdC5mYXJKdW1wKHNjcmF0Y2gsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAi
TExJbnQgJXMganVtcCB0byBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChMTEludENvZGUgdGFyZ2V0LCBjb25zdCBjaGFy
ICp0aHVua0tpbmQpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIGFzc2VydElzVGFn
Z2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisgICAgaml0LmZhckp1bXAoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhcmdldCksIE9wZXJhdGlvblB0clRhZyk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHJldHVybiBwb2ludCB0aHVu
ayIsIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludChP
cGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PHRhZz4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKIH0KIAogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmsoKQpAQCAtNzcsNyArMTM2LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VL
ZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVu
Y3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICB9KTsKICAgICByZXR1cm4g
Y29kZVJlZjsKIH0KQEAgLTg3LDcgKzE0Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IikpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+
KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY29u
c3RydWN0IikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtOTcsNyArMTU2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0
clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3Ig
Y2FsbCB3aXRoIGFyaXR5IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEwNyw3ICsxNjYsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssICJmdW5jdGlv
biBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25z
dHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsK
IH0KQEAgLTExNyw3ICsxNzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZXZhbEVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQ
dHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxs
aW50X2V2YWxfcHJvbG9ndWUsICJldmFsIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVm
OwogfQpAQCAtMTI3LDcgKzE4Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBwcm9ncmFtRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZd
IHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNF
bnRyeVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CisgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRy
eVB0clRhZz4obGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSwgInByb2dyYW0iKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMzcsNyArMTk2LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZSwgIm1vZHVsZV9wcm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CiAgICAgfSk7CiAgICAgcmV0
dXJuIGNvZGVSZWY7CiB9CkBAIC0xNDksOSArMjA4LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewog
ICAgICAgICBpZiAoV2FzbTo6Q29udGV4dDo6dXNlRmFzdFRMUygpKQotICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdh
c21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1
bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG88SklUVGh1bmtQdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxz
LCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQpAQCAtMjE3LDcgKzI3Niw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUg
c2l6ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0gewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaCIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJv
cF9jYXRjaCIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0K
QEAgLTIyNSw3ICsyODQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bf
Y2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRX
aWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRj
aDE2IikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAgfQpAQCAt
MjMzLDcgKzI5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcF9jYXRj
aCksICJvcF9jYXRjaDMyIikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUz
MkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMzIi
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0yNDIs
NiArMzAxLDI4NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2lu
dFRodW5rKE9wY29kZVNpemUgc2l6ZSkKK3sKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNl
IE9wY29kZVNpemU6Ok5hcnJvdzogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9u
Y2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCIpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBj
b2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJU
YWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludDE2Iikp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIGNhc2Ug
T3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSwg
ImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50MzIiKSk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgfQorfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpCit7Cisg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVybl9l
YXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQi
KSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0
ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUp
Cit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86OnJlZ1Qz
LCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVy
KSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVy
YXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNtR2F0
ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIqIG5hbWUpCit7Cisg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86Ondhc21TY3JhdGNo
R1BSMCwgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9p
bnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7CisgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIHdhc20gY2Fs
bCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFnKQoreworICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCB0
YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpCit7
CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
b25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2Fs
bEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BS
MCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NP
REUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3AgT1NSIGVudHJ5IHRo
dW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOworICAg
ICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOwor
CisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJl
ZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZXhj
ZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5m
YXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKKworICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNh
bGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAg
ICAgIGppdC5yZXQoKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJvbUxMSW50IHRodW5r
IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikK
K3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUMyk7CisgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRSZWdpc3RlcnM6Omxy
KTsKKyAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKKyAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBq
aXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ0YWcgdGh1bmsi
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50
YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUklu
Zm86OnJlZ1QzKTsKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFSTTY0UmVnaXN0
ZXJzOjpscik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50
ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9w
ZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkKK3sKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVycyBq
aXQ7CisgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFKGppdCk7CisgICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJqaXRDYWdlUHRyIHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NS
RXhpdFB0clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+
IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihub3JtYWxfb3NyX2V4
aXRfdHJhbXBvbGluZSwgIm5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAg
IH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxP
U1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsICJjaGVja3BvaW50
X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVS
ZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50
T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpCit7CisgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNv
ZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0X2Zy
b21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1
cm5Mb2NhdGlvblRodW5rKE9wY29kZUlEIG9wY29kZUlELCBPcGNvZGVTaXplIHNpemUpCit7Cisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihuYW1lKSBcCisgICAgY2FzZSBuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uOiB7IFwKKyAgICAgICAgc3dpdGNoIChzaXplKSB7IFwKKyAgICAgICAgY2Fz
ZSBPcGNvZGVTaXplOjpOYXJyb3c6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwK
KyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRy
VGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3Jl
dHVybl9sb2NhdGlvbiksICAjbmFtZSAiX3JldHVybl9sb2NhdGlvbiB0aHVuayIpKTsgXAorICAg
ICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0g
XAorICAgICAgICBjYXNlIE9wY29kZVNpemU6OldpZGUxNjogeyBcCisgICAgICAgICAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFn
Pj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBv
aW50PE9TUkV4aXRQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0
aW9uMTYgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4g
Y29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6
IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTMy
Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiks
ICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMzIgdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBc
CisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBc
CisgICAgICAgIHJldHVybiB7IH07IFwKKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGwpCisgICAgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG9wX2l0ZXJhdG9yX29wZW4pCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2l0
ZXJhdG9yX25leHQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdCkKKyAg
ICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRf
UkVUVVJOX0xPQ0FUSU9OKG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3cpCisgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX2dldF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Z2V0X2J5X3ZhbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X2lkKQorICAg
IExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfdmFsKQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgTExJbnQKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCmluZGV4
IDAzNjhjZTlhMmRhMDYwNGY0MzcyNDUyZWUxMmY4N2M0ZTYzOGRiMGQuLmE5MjJiMjU5OWI5YzYz
OTQ5YjU1YjNhMTRmNWI3NmM1ZWI1ZTYxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCkBAIC00MCw2ICs0MCwyMiBAQCBleHRlcm4gIkMiIHsKICAgICBFbmNv
ZGVkSlNWYWx1ZSB2bUVudHJ5VG9OYXRpdmUodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsK
IH0KIAorI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCitleHRlcm4gIkMiIHsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQp
OworI2VuZGlmCisKKyAgICB2b2lkIHZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIodm9pZCk7
CisgICAgdm9pZCB2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIodm9pZCk7CisKKyAgICB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7Cisg
ICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2
b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tV
bnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7Cit9CisjZW5kaWYKKwogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHZtRW50cnlUb1dhc20odm9pZCogY29kZSwgVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogZnJhbWUpCiB7CiAgICAgYXV0byBjbG9iYmVyaXplVmFsaWRhdG9yID0gbWFrZVNjb3Bl
RXhpdChbJl0gewpAQCAtNTksMTEgKzc1LDMyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhP
cGNvZGVTaXplKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJS
ZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPiBjYWxsVG9UaHJvd1RodW5rKCk7CiBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlVW5jYXVnaHRFeGNlcHRpb25U
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSk7CiAKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCosIFB0clRh
ZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gY3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2Fs
bEdhdGUoUHRyVGFnKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+IGxvb3BPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBleGNlcHRpb25I
YW5kbGVyR2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHRhZ0dhdGVUaHVuayh2b2lkKik7
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJh
bXBvbGluZVRodW5rKCk7CisjaWYgRU5BQkxFKERGR19KSVQpCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8T1NSRXhpdFB0clRhZz4gY2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21J
bmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4
aXRQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQsIE9wY29kZVNpemUpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KaW5kZXggOWUzY2RlOTkwNGMxMDJiZWVlZjQ3YjE0ZjM1ZmY2OTUx
NjlmYTk3Zi4uMTU1ZDVlNjQ1OTc2ZGJkZGFiNWNiYjAzNjM2ODU5YmUzNjVlY2FiYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQpAQCAtMjU2LDkgKzI1NiwxMiBAQCBjb25zdCBBcml0aFByb2ZpbGVOdW1iZXJOdW1iZXIgPSBj
b25zdGV4cHIgKEJpbmFyeUFyaXRoUHJvZmlsZTo6b2JzZXJ2ZWROdW1iZXJOdQogY29uc3QgQnl0
ZWNvZGVQdHJUYWcgPSBjb25zdGV4cHIgQnl0ZWNvZGVQdHJUYWcKIGNvbnN0IEpTRW50cnlQdHJU
YWcgPSBjb25zdGV4cHIgSlNFbnRyeVB0clRhZwogY29uc3QgSG9zdEZ1bmN0aW9uUHRyVGFnID0g
Y29uc3RleHByIEhvc3RGdW5jdGlvblB0clRhZworY29uc3QgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
ID0gY29uc3RleHByIEpTRW50cnlTbG93UGF0aFB0clRhZworY29uc3QgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnID0gY29uc3RleHByIE5hdGl2ZVRvSklUR2F0ZVB0clRhZwogY29uc3QgRXhjZXB0aW9u
SGFuZGxlclB0clRhZyA9IGNvbnN0ZXhwciBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCitjb25zdCBZ
YXJyRW50cnlQdHJUYWcgPSBjb25zdGV4cHIgWWFyckVudHJ5UHRyVGFnCiBjb25zdCBOb1B0clRh
ZyA9IGNvbnN0ZXhwciBOb1B0clRhZwotY29uc3QgU2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4cHIg
U2xvd1BhdGhQdHJUYWcKKyAKIAogIyBTb21lIHJlZ2lzdGVyIGNvbnZlbnRpb25zLgogIyAtIFdl
IHVzZSBhIHBhaXIgb2YgcmVnaXN0ZXJzIHRvIHJlcHJlc2VudCB0aGUgUEM6IG9uZSByZWdpc3Rl
ciBmb3IgdGhlCkBAIC0xMDI2LDcgKzEwMjksNyBAQCBtYWNybyB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgZW5kCiBlbmQKIAotbWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUs
IHNpemUpCittYWNybyBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQogICAgIG1h
Y3JvIGRlZmluZU5hcnJvdygpCiAgICAgICAgIGlmIG5vdCBDX0xPT1BfV0lOCiAgICAgICAgICAg
ICBfJW9wY29kZU5hbWUlX3JldHVybl9sb2NhdGlvbjoKQEAgLTEwNDgsMzIgKzEwNTEsODIgQEAg
bWFjcm8gZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgc2l6
ZShkZWZpbmVOYXJyb3csIGRlZmluZVdpZGUxNiwgZGVmaW5lV2lkZTMyLCBtYWNybyAoZikgZigp
IGVuZCkKIGVuZAogCitpZiBBUk02NEUKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwg
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIKK2Vu
ZAorCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxs
ZWUsIGNhbGxQdHJUYWcpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xv
b3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgbWFjcm8g
Y2FsbE5hcnJvdygpCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUl
KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUl
OgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0clRhZworICAgICAgICBlbmQKKworICAgICAg
ICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3Rl
eHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bj
b2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcK
KyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gY2FsbFdpZGUzMigpCisgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXplLCBhMgorICAg
ICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAg
ICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6CisgICAgICAgICAg
ICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVuZAorCisgICAgICAgIG1vdmUgY2FsbGVl
LCB0MworICAgICAgICBzaXplKGNhbGxOYXJyb3csIGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1h
Y3JvIChnZW4pIGdlbigpIGVuZCkKICAgICBlbHNlCiAgICAgICAgIGNhbGwgY2FsbGVlLCBjYWxs
UHRyVGFnCisgICAgICAgIGlmIEFSTXY3IG9yIE1JUFMKKyAgICAgICAgICAgICMgSXQgaXMgcmVx
dWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMK
KyAgICAgICAgICAgICMgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9m
IGluc3RydWN0aW9ucworICAgICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1
dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKKyAgICAgICAgICAgICMgY3Jhc2hlcy4KKyAg
ICAgICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQorICAgICAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQorICAgICAgICBlbmQKICAgICBlbmQKKyAgICBkZWZp
bmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorICAgIHJlc3RvcmVTdGFja1BvaW50ZXJB
ZnRlckNhbGwoKQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIAotICAgIGlmIEFS
TXY3IG9yIE1JUFMKKyAgICBpZiBub3QgQVJNNjRFCiAgICAgICAgICMgSXQgaXMgcmVxdWlyZWQg
aW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFiZWwgZGVmaW5pdGlvbnMKICAgICAg
ICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rp
b25zCiAgICAgICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGlu
ZyBpbiB1bmV4cGVjdGVkCiAgICAgICAgICMgY3Jhc2hlcy4KLSAgICAgICAgcmVzdG9yZVN0YWNr
UG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkK
KyAgICAgICAgbWFjcm8gbGFiZWxOYXJyb3coKQorICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVf
JW9wY29kZU5hbWUlOgorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBsYWJlbFdpZGUxNigp
CisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTE2OgorICAgICAg
ICBlbmQKKworICAgICAgICBtYWNybyBsYWJlbFdpZGUzMigpCisgICAgICAgICAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICBlbmQKKyAgICAgICAgc2l6ZShs
YWJlbE5hcnJvdywgbGFiZWxXaWRlMTYsIGxhYmVsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBl
bmQpCisgICAgICAgIGNyYXNoKCkKICAgICBlbmQKLSAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFi
ZWwob3Bjb2RlTmFtZSwgc2l6ZSkKLSAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkK
LSAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCiBlbmQKIAotbWFjcm8gcHJlcGFyZUZv
clJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKK21h
Y3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl
bXA0LCBjYWxsUHRyVGFnKQogICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCiBlbmQK
IAogIyBzcCBwb2ludHMgdG8gdGhlIG5ldyBmcmFtZQotbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxs
KGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKK21hY3JvIHByZXBhcmVG
b3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBjYWxsUHRyVGFn
KQogICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKIAogICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0ZW1wMgpAQCAtMTEw
OSw4ICsxMTYyLDcgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRl
bXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIGlmIEFSTTY0RQotICAgICAg
ICBhZGRwIDE2LCBjZnIsIHRlbXAzCi0gICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0ZW1wMwor
ICAgICAgICBhZGRwIDE2LCBjZnIsIHRlbXA0CiAgICAgZW5kCiAKICAgICBzdWJwIHRlbXAyLCB0
ZW1wMQpAQCAtMTEzMCw3ICsxMTgyLDE0IEBAIG1hY3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxs
ZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgZW5kCiAKICAgICBtb3Zl
IHRlbXAxLCBzcAotICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAg
ICAgICAgbW92ZSB0ZW1wNCwgYTIKKyAgICAgICAgbW92ZSBjYWxsZWUsIGEwCisgICAgICAgIGxl
YXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsg
KGNvbnN0ZXhwciBHYXRlOjp0YWlsQ2FsbCVjYWxsUHRyVGFnJSkgKiBQdHJTaXplLCBhMQorICAg
ICAgICBqbXAgW2ExXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgJWNhbGxQdHJUYWclCisgICAg
ZWxzZQorICAgICAgICBqbXAgY2FsbGVlLCBjYWxsUHRyVGFnCisgICAgZW5kCiBlbmQKIAogbWFj
cm8gc2xvd1BhdGhGb3JDb21tb25DYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwg
ZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKQEAgLTExNDQsMTYgKzEyMDMsMTYgQEAg
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHUKICAgICAgICAgbWFjcm8gKGNhbGxlZSwgY2FsbGVlRnJh
bWVQdHIpCiAgICAgICAgICAgICBidHB6IGNhbGxlZUZyYW1lUHRyLCAuZG9udFVwZGF0ZVNQCiAg
ICAgICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAotICAgICAgICAgICAgcHJlcGFyZUNh
bGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCBTbG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIHByZXBh
cmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlTbG93UGF0aFB0clRhZykKICAg
ICAgICAgLmRvbnRVcGRhdGVTUDoKLSAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bj
b2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIFNsb3dQYXRoUHRyVGFnKQorICAgICAg
ICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNh
bGxlZSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICBlbmQpCiBlbmQKIAogbWFjcm8g
Z2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wTmFtZSwgc2l6ZSkKICAgICBjcmFzaCgp
ICMgV2UgZG9uJ3QgcmVhY2ggdGhpcyBpbiBzdHJhaWdodCBsaW5lIGNvZGUuIFdlIG9ubHkgcmVh
Y2ggaXQgdmlhIHJldHVybmluZyB0byB0aGUgY29kZSBiZWxvdyB3aGVuIHJlY29uc3RydWN0aW5n
IHN0YWNrIGZyYW1lcyBkdXJpbmcgT1NSIGV4aXQuCiAKLSAgICBkZWZpbmVPU1JFeGl0UmV0dXJu
TGFiZWwob3BOYW1lLCBzaXplKQorICAgIGRlZmluZVJldHVybkxhYmVsKG9wTmFtZSwgc2l6ZSkK
IAogICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQogICAgIGxvYWRpIExMSW50UmV0
dXJuUENbY2ZyXSwgUEMKQEAgLTEzNTEsNyArMTQxMCw2IEBAIGVuZAogIyBpbiB0MS4gTWF5IGFs
c28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCiBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tH
ZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAgICAg
IyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCi0gICAg
dGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogCiAgICAg
aWYgVFJBQ0lORwpAQCAtMTM3OSwxNiArMTQzNywyNSBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NyU2xvd1BhdGgsIHRyYWNlU2xvd1BhdGgpCiAg
ICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCiAgICAgICAgIG1vdmUgY2ZyLCBzcCAjIHJlc3RvcmUg
dGhlIHByZXZpb3VzIHNwCiAgICAgICAgICMgcG9wIHRoZSBjYWxsZXJGcmFtZSBzaW5jZSB3ZSB3
aWxsIGp1bXAgdG8gYSBmdW5jdGlvbiB0aGF0IHdhbnRzIHRvIHNhdmUgaXQKLSAgICAgICAgaWYg
QVJNNjQgb3IgQVJNNjRFCisgICAgICAgIGlmIEFSTTY0CisgICAgICAgICAgICBwb3AgbHIsIGNm
cgorICAgICAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgICAgICMgdW50YWdSZXR1cm5BZGRyZXNz
IHdpbGwgYmUgcGVyZm9ybWVkIGluIEdhdGU6OmVudHJ5T1NSRW50cnkuCiAgICAgICAgICAgICBw
b3AgbHIsIGNmcgotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgICAgIGVs
c2lmIEFSTXY3IG9yIE1JUFMKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgICAgIHBvcCBs
cgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3AgY2ZyCiAgICAgICAgIGVuZAotICAgICAg
ICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAg
IG1vdmUgcjAsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6ZW50cnlPU1JFbnRy
eSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1wIHIwLCBK
U0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIC5yZWNvdmVyOgogICAgICAgICBub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlcih0MSkKICAgICAuY29udGludWU6CkBAIC0xNDk0LDcgKzE1NjEs
MTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5
TExJbnQoKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgcmV0CisgICAgaWYgQVJN
NjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0ND
b25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpyZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6
ZSwgYTIKKyAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgIGVsc2UK
KyAgICAgICAgcmV0CisgICAgZW5kCiBlbmQKIAogIyBUaGlzIGJyZWFrIGluc3RydWN0aW9uIGlz
IG5lZWRlZCBzbyB0aGF0IHRoZSBzeW50aGVzaXplZCBsbGludFBDUmFuZ2VTdGFydCBsYWJlbApA
QCAtMTUyNSw2ICsxNTk3LDE5IEBAIGVsc2UKIGVuZAogICAgIGRvVk1FbnRyeShtYWtlSG9zdEZ1
bmN0aW9uQ2FsbCkKIAoraWYgQVJNNjQgb3IgQVJNNjRFCisgICAgZ2xvYmFsIF92bUVudHJ5VG9Z
YXJySklUQWZ0ZXIKK2VuZAorZ2xvYmFsIF92bUVudHJ5VG9ZYXJySklUCitfdm1FbnRyeVRvWWFy
ckpJVDoKKyAgICBmdW5jdGlvblByb2xvZ3VlKCkKK2lmIEFSTTY0IG9yIEFSTTY0RQorICAgIGpt
cCB0NSwgWWFyckVudHJ5UHRyVGFnCisgICAgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcjoKK2VuZAor
ICAgIGZ1bmN0aW9uRXBpbG9ndWUoKQorICAgIHJldAorCiAKIGlmIG5vdCAoQ19MT09QIG9yIENf
TE9PUF9XSU4pCiAgICAgIyB2b2lkIHNhbml0aXplU3RhY2tGb3JWTUltcGwoVk0qIHZtKQpAQCAt
MTU3MCw2ICsxNjU1LDcxIEBAIGlmIG5vdCAoQ19MT09QIG9yIENfTE9PUF9XSU4pCiAgICAgICAg
IHJldAogZW5kCiAKK2lmIEFSTTY0RQorICAgICMgdm9pZCogaml0Q2FnZVB0cih2b2lkKiBwb2lu
dGVyLCB1aW50cHRyX3QgdGFnKQorICAgIGVtaXQgIi5nbG9ibCBfaml0Q2FnZVB0ciIKKyAgICBl
bWl0ICJfaml0Q2FnZVB0cjoiCisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAg
bGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAg
KyAoY29uc3RleHByIEdhdGU6OmppdENhZ2VQdHIpICogUHRyU2l6ZSwgdDIKKyAgICAgICAgam1w
IFt0Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAgICBnbG9iYWwgX2ppdENhZ2VQdHJH
YXRlQWZ0ZXIKKyAgICAgICAgX2ppdENhZ2VQdHJHYXRlQWZ0ZXI6CisgICAgICAgIHJldAorCisg
ICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lCisgICAgX3RhaWxDYWxsSlNFbnRy
eVRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBhMgorICAgICAgICBqbXAg
YTAsIEpTRW50cnlQdHJUYWcKKworICAgIGdsb2JhbCBfdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhU
cmFtcG9saW5lCisgICAgX3RhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZToKKyAgICAg
ICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCisgICAgICAgIGptcCBhMCwgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnCisKKyAgICBnbG9iYWwgX2V4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lCisgICAgX2V4
Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lOgorICAgICAgICBqbXAgYTAsIEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWcKKworICAgIGdsb2JhbCBfcmV0dXJuRnJvbUxMSW50VHJhbXBvbGluZQorICAgIF9y
ZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lOgorICAgICAgICByZXQKKworICAgIGdsb2JhbCBfanNU
cmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1
ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X3Byb2dy
YW1fcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xv
Z3VlCisgICAgX2pzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZToKKyAgICAgICAgdGFn
UmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xv
Z3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZQorICAgIF9qc1RyYW1w
b2xpbmVFdmFsUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAg
am1wIF9sbGludF9ldmFsX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0
aW9uRm9yQ2FsbFByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xv
Z3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0
cnVjdFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1Ry
YW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJvbG9ndWUKKyAgICBfanNUcmFtcG9s
aW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5B
ZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2sKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNo
ZWNrUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNo
ZWNrUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrCitlbmQKKwogaWYgQ19MT09Q
IG9yIENfTE9PUF9XSU4KICAgICAjIER1bW15IGVudHJ5IHBvaW50IHRoZSBDIExvb3AgdXNlcyB0
byBpbml0aWFsaXplLgogICAgIF9sbGludF9lbnRyeToKQEAgLTE3MjQsMjEgKzE4NzQsMzAgQEAg
ZW5kKQogCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgbWFjcm8gKCkK
ICAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQotICAgIGZ1bmN0aW9uQXJpdHlD
aGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQor
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aywgLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKIC5m
dW5jdGlvbkZvckNhbGxCZWdpbjoKICAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCiAgICAg
ZGlzcGF0Y2goMCkKIGVuZCkKIAotCiBvcChsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNr
X2Zvcl9jb25zdHJ1Y3QpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0
cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAuZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykK
IC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
MSkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCisjIE5lZWQgdGhlc2Ugc3R1YiBsYWJlbHMgdG8g
bWFrZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3Vu
dGFnIGV0Yy4gTExJbnQgaGVscGVyIG9wY29kZXMuCitfanNfdHJhbXBvbGluZV9sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9s
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6CitfanNfdHJh
bXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWdfd2lkZTE2Ogor
X2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdGFnX3dp
ZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2tfdW50YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZ193aWRlMTY6CitfanNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6
CisgICAgY3Jhc2goKQogCiAjIFZhbHVlLXJlcHJlc2VudGF0aW9uLXNwZWNpZmljIGNvZGUuCiBp
ZiBKU1ZBTFVFNjQKQEAgLTIxMDksNyArMjI2OCw3IEBAIGVuZCkKIAogX2xsaW50X29wX2NhbGxf
ZXZhbDoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF9u
YXJyb3csCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAgICAgbmFycm93LAogICAgICAgICBP
cENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKG5hcnJvdywgb3BfY2FsbF9l
dmFsKSBlbmQsCkBAIC0yMTE4LDcgKzIyNzcsNyBAQCBfbGxpbnRfb3BfY2FsbF9ldmFsOgogCiBf
bGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0g
ICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMTYsCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAg
ICAgd2lkZTE2LAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRj
aE9wKHdpZGUxNiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMTI3LDcgKzIyODYsNyBAQCBfbGxp
bnRfb3BfY2FsbF9ldmFsX3dpZGUxNjoKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMzI6CiAg
ICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTMyLAor
ICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUzMiwKICAgICAgICAgT3BDYWxsRXZh
bCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMzIsIG9wX2NhbGxfZXZhbCkgZW5k
LApAQCAtMjIxMiw3ICsyMzcxLDEzIEBAIG9wKGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxp
bmVkX2NhbGxfdHJhbXBvbGluZSwgbWFjcm8gKCkKIAogICAgICAgICByZXN0b3JlU3RhdGVBZnRl
ckNDYWxsKCkKICAgICAgICAgYnJhbmNoSWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xv
d19wYXRoX3RyYW1wb2xpbmUpCi0gICAgICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAg
ICBpZiBBUk02NEUKKyAgICAgICAgICAgIG1vdmUgcjEsIGEwCisgICAgICAgICAgICBsZWFwIEpT
Q0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25z
dGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAg
W2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNl
CisgICAgICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgZWxz
ZQogICAgICAgICBub3RTdXBwb3J0ZWQoKQogICAgIGVuZApAQCAtMjIyOSwxMiArMjM5NCwyMyBA
QCBvcChjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUsIG1hY3JvICgpCiAgICAgICAgIGND
YWxsMihfbGxpbnRfc2xvd19wYXRoX2NoZWNrcG9pbnRfb3NyX2V4aXQpCiAgICAgICAgIHJlc3Rv
cmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhy
b3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKLSAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRy
VGFnCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSByMSwgYTAKKyAgICAgICAg
ICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRl
TWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAg
ICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBl
bmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBvcnRlZCgpCiAgICAgZW5kCiBlbmQpCiAKK29w
KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCBtYWNybyAoKQorICAgIGRpc3BhdGNoKDApCitl
bmQpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdo
IHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5l
dmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CiAjIGFz
IG11Y2guCkBAIC0yMjc5LDQgKzI0NTUsMTggQEAgb3Aod2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9u
b190bHMsIG1hY3JvICgpCiAgICAgY3Jhc2goKQogZW5kKQogCitfd2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbDoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5k
aXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfd2lkZTE2OgorX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX2luZGlyZWN0X3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRlMzI6Citf
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lkZTMyOgorX3dhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3Rfbm9fdGxzX3dpZGUzMjoKKyAgICBjcmFzaCgpCisKIGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQppbmRleCA2MjZhNDY4MTdiMTUzYjNkNTQ2NDdjM2Q4MmMxYjQ3NDlmZTYyNjg0Li44ZTczMzdk
NzYyMjc0NWEwOTZmMGVmMjRlYzA0NDAzYTY2YzZkOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
Njg2LDcgKzY4Niw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgog
CiAjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9n
dWUoKSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwg
c2xvd1BhdGgpCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2sob3Bjb2RlTmFtZSwgZG9uZUxhYmVs
LCBzbG93UGF0aCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRl
cnNbdDFdLCBkb25lTGFiZWwKICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCkBAIC03NTcsNiAr
NzU3LDE0IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQog
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyW3QxXSwgUEIKICAg
ICBtb3ZlIDAsIFBDCiAgICAgam1wIGRvbmVMYWJlbAorCisgICAgIyBJdCBpcyByZXF1aXJlZCBp
biBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZpbml0aW9ucworICAgICMg
Zm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJhdGVzIGEgc2V0IG9mIGluc3RydWN0aW9ucwor
ICAgICMgdGhhdCBjYW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4
cGVjdGVkCisgICAgIyBjcmFzaGVzLgorICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91
bnRhZzoKKyAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgorICAgIGNyYXNoKCkK
IGVuZAogCiAjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucwpAQCAtMjExNSw3ICsyMTIzLDcg
QEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBzdG9yZWkgQ2VsbFRhZywgQ2Fs
bGVlICsgVGFnT2Zmc2V0W3QzXQogICAgIG1vdmUgdDMsIHNwCi0gICAgcHJlcGFyZUNhbGwoJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0
W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICBwcmVwYXJlQ2FsbCglb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVd
LCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVB0clRhZykKICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24o
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQogCiAub3BDYWxs
U2xvdzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggYWExNTcyM2M2NDBmMmQ3N2VhOGE3ZmU4OGE5OGJhZWE4NmQy
YjliOS4uNTM0ZTBkZjNkZTMwMDA2MmY3NWYxNWNiZTUxMzY0OWE3ZGFhN2EwZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTMwMCwxNSArMzAwLDI1IEBAIG1hY3JvIGRvVk1FbnRyeShtYWtlQ2FsbCkKICAgICBy
ZXQKIGVuZAogCi0KICMgYTAsIGEyLCB0MywgdDQKIG1hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChl
bnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICBhZGRwIDE2LCBzcAogICAg
IGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gZW50
cnkKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgbW92ZSBlbnRyeSwgdDMKKyAgICAgICAgbGVh
cCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAo
Y29uc3RleHByIEdhdGU6OnZtRW50cnlUb0phdmFTY3JpcHQpICogUHRyU2l6ZSwgYTIKKyAgICAg
ICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAg
ICAgZ2xvYmFsIF92bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZQorICAgICAgICBfdm1FbnRy
eVRvSmF2YVNjcmlwdFRyYW1wb2xpbmU6CisgICAgICAgIGNhbGwgdDMsIEpTRW50cnlQdHJUYWcK
ICAgICBlbHNlCiAgICAgICAgIGNhbGwgZW50cnksIEpTRW50cnlQdHJUYWcKICAgICBlbmQKKyAg
ICBpZiBBUk02NEUKKyAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVy
CisgICAgICAgIF92bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyOgorICAgIGVuZAogICAgIHN1
YnAgMTYsIHNwCiBlbmQKIApAQCAtMzI2LDkgKzMzNiwyMCBAQCBtYWNybyBtYWtlSG9zdEZ1bmN0
aW9uQ2FsbChlbnRyeSwgcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCB0ZW1wMikKICAgICAgICAgc3Vi
cCAzMiwgc3AKICAgICAgICAgY2FsbCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgICAg
IGFkZHAgMzIsIHNwCisgICAgZWxzaWYgQVJNNjRFCisgICAgICAgIG1vdmUgdGVtcDEsIHQzCisg
ICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdH
YXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp2bUVudHJ5VG9OYXRpdmUpICogUHRyU2l6ZSwgYTIK
KyAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEhvc3RGdW5jdGlvblB0
clRhZworICAgICAgICBnbG9iYWwgX3ZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUKKyAgICAgICAg
X3ZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmU6CisgICAgICAgIGNhbGwgdDMsIEhvc3RGdW5jdGlv
blB0clRhZwogICAgIGVsc2UKICAgICAgICAgY2FsbCB0ZW1wMSwgSG9zdEZ1bmN0aW9uUHRyVGFn
CiAgICAgZW5kCisgICAgaWYgQVJNNjRFCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZl
R2F0ZUFmdGVyCisgICAgICAgIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXI6CisgICAgZW5kCiBl
bmQKIAogb3AobGxpbnRfaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiwgbWFjcm8gKCkKQEAgLTQz
MSw4ICs0NTIsMTQgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAg
ICAgbW92ZSBQQywgYTEKICAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IpCiAgICAg
ICAgICAgICBidHB6IHIwLCAucmVjb3ZlcgorCiAgICAgICAgICAgICBtb3ZlIHIxLCBzcAotICAg
ICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAg
ICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5KSAqIFB0clNpemUs
IGEyCisgICAgICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpT
RW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjAsIEpT
RW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAg
ICAgIGxvYWRQQygpCiAgICAgICAgIGVuZCkKQEAgLTY0NSw3ICs2NzIsNyBAQCBlbmQKICMgRW50
cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKICMgRXhwZWN0cyB0aGF0IENvZGVCbG9j
ayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCi1tYWNy
byBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKK21hY3JvIGZ1bmN0aW9u
QXJpdHlDaGVjayhvcGNvZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJp
YWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAogICAgIHBy
ZXBhcmVTdGF0ZUZvckNDYWxsKCkKQEAgLTY4Miw5ICs3MDksMTUgQEAgbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAKIC5ub0V4dHJhU2xvdDoKICAgICBpZiBB
Uk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJVVudGFnKSAqIFB0
clNpemUsIHQzCisgICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAg
ICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgICAgICBsb2FkcCA4W2Nm
cl0sIGxyCiAgICAgICAgIGFkZHAgMTYsIGNmciwgdDMKICAgICAgICAgdW50YWdSZXR1cm5BZGRy
ZXNzIHQzCisgICAgICAgIF8lb3Bjb2RlTmFtZSVVbnRhZ0dhdGVBZnRlcjoKKyAgICBlbHNlCisg
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91bnRhZzoKICAgICBlbmQKIAogICAg
IC8vIE1vdmUgZnJhbWUgdXAgdDEgc2xvdHMKQEAgLTcxMiw5ICs3NDUsMTUgQEAgbWFjcm8gZnVu
Y3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgYmFkZGlueiAxLCB0Miwg
LmZpbGxMb29wCiAKICAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25z
dGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVv
cGNvZGVOYW1lJVRhZykgKiBQdHJTaXplLCB0MworICAgICAgICBqbXAgW3QzXSwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV90YWc6CiAg
ICAgICAgIGFkZHAgMTYsIGNmciwgdDEKICAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyB0MQogICAg
ICAgICBzdG9yZXAgbHIsIDhbY2ZyXQorICAgICAgICBfJW9wY29kZU5hbWUlVGFnR2F0ZUFmdGVy
OgorICAgIGVsc2UKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAg
ICBlbmQKIAogLmNvbnRpbnVlOgpAQCAtMjE3NSw5ICsyMjE0LDE1IEBAIG1hY3JvIGNhbGxIZWxw
ZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhCiAgICAgc3RvcmVQQygpCiAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgbW92ZSB0Mywgc3AKLSAgICBwcmVw
YXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcp
Ci0KKyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDAKKyAgICAgICAgcHJl
cGFyZUNhbGwodDAsIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVU
YXJnZXRbdDVdLCB0MAorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRp
c3BhdGNoLCB0MCwgSlNFbnRyeVB0clRhZykKKyAgICBlbHNlCisgICAgICAgIHByZXBhcmVDYWxs
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFy
Z2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFn
KQorICAgIGVuZAogLm9wQ2FsbFNsb3c6CiAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUs
IHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVy
LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQogZW5kCkBAIC0yMjQ1LDcgKzIyOTAs
NyBAQCBsbGludE9wV2l0aFJldHVybihvcF90b19wcm9wZXJ0eV9rZXksIE9wVG9Qcm9wZXJ0eUtl
eSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogZW5kKQogCiAKLWNvbW1vbk9wKGxsaW50X29w
X2NhdGNoLCBtYWNybygpIGVuZCwgbWFjcm8gKHNpemUpCitjb21tb25PcChsbGludF9vcF9jYXRj
aCwgbWFjcm8gKCkgZW5kLCBtYWNybyAoc2l6ZSkKICAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5k
IHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCiAgICAgIyBt
YWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNo
KSwgYW5kIGZyb20KICAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNl
ZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCkBAIC0yMzEwLDcgKzIzNTUsMTMgQEAgb3AobGxp
bnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICAjIFRoaXMg
ZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgogICAgIGxv
YWRwIENhbGxlZVtjZnJdLCB0MQogICAgIGNvbnZlcnRDYWxsZWVUb1ZNKHQxKQotICAgIGptcCBW
TTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisg
ICAgaWYgQVJNNjRFCisgICAgICAgIGxvYWRwIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0
MV0sIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZK
U0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpleGNlcHRpb25IYW5kbGVyKSAqIFB0
clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBFeGNl
cHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAgICBqbXAgVk06OnRhcmdldE1hY2hp
bmVQQ0ZvclRocm93W3QxXSwgRXhjZXB0aW9uSGFuZGxlclB0clRhZworICAgIGVuZAogZW5kKQog
CiAKQEAgLTMwMTgsNCArMzA2OSwzIEBAIG9wKGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29w
X2hpbnQsIG1hY3JvICgpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0s
IHQwCiAgICAgZG9SZXR1cm4oKQogZW5kKQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L1dlYkFzc2VtYmx5LmFzbQppbmRleCBiOTMyMjEzNDgzNDJlOWFhODg4ODMyZDVjN2JhZDE2NjQ3
YWNiNDViLi5hOWRhOGJhZGU2NzdjNjAzMzQ0YmJmZDY0MjYwOTg1YTg5MzQ2MDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KQEAgLTEzOSw4ICsxMzks
MTIgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKGNvZGVCbG9ja1JlZ2lzdGVy
KQogCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICAgICAg
ICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgICAgICAgICB1bnRhZ1JldHVybkFkZHJl
c3Mgc3AKLSAgICAgICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAg
aWYgQVJNNjRFCisgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlND
OjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Ondhc21PU1JFbnRy
eSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZyAjIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGptcCB3czAsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAg
IC5yZWNvdmVyOgogICAgICAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIoY29kZUJs
b2NrUmVnaXN0ZXIpCiAgICAgICAgIGVuZCkKQEAgLTE1OSw5ICsxNjMsMTQgQEAgbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICAgICAgYnRweiByMSwgLnJlY292ZXIKICAg
ICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAgICAgICAgcmVz
dG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAog
ICAgICAgICAgICAgbW92ZSByMCwgYTAKLSAgICAgICAgICAgIGptcCByMSwgV2FzbUVudHJ5UHRy
VGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBtb3ZlIHIxLCB3czAK
KyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9m
SlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5KSAqIFB0clNp
emUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
ICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgam1w
IHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoK
ICAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCiAgICAgICAgIGVuZCkKQEAgLTI1Myw3ICsyNjIsNiBAQCBlbmQKIAogbWFjcm8g
d2FzbVByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBsb2FkV2FzbUlu
c3RhbmNlKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91
bGQgT1NSLgotICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBwcmVzZXJ2ZUNhbGxlclBDQW5k
Q0ZSKCkKICAgICBwcmVzZXJ2ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgbG9hZFdhc21J
bnN0YW5jZSgpCkBAIC00NTYsNyArNDY0LDEyIEBAIGVuZAogbWFjcm8gZG9SZXR1cm4oKQogICAg
IHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENG
UigpCi0gICAgcmV0CisgICAgaWYgQVJNNjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29u
c3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpy
ZXR1cm5Gcm9tTExJbnQpICogUHRyU2l6ZSwgd3MwCisgICAgICAgIGptcCBbd3MwXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAgICAgICByZXQKKyAgICBlbmQKIGVuZAogCiAj
IEVudHJ5IHBvaW50CkBAIC00OTcsNyArNTEwLDEzIEBAIG9wKHdhc21fdGhyb3dfZnJvbV9zbG93
X3BhdGhfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyArIFBheWxvYWRPZmZzZXRbY2ZyXSwgYTMKICAgICBjQ2FsbDQoX3Nsb3dfcGF0aF93
YXNtX3Rocm93X2V4Y2VwdGlvbikKIAotICAgIGptcCByMCwgRXhjZXB0aW9uSGFuZGxlclB0clRh
ZworICAgIGlmIEFSTTY0RQorICAgICAgICBtb3ZlIHIwLCBhMAorICAgICAgICBsZWFwIEpTQ0Nv
bmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4
cHIgR2F0ZTo6ZXhjZXB0aW9uSGFuZGxlcikgKiBQdHJTaXplLCBhMQorICAgICAgICBqbXAgW2Ex
XSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgRXhjZXB0aW9uSGFuZGxlclB0clRhZworICAgIGVs
c2UKKyAgICAgICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBlbmQp
CiAKICMgRGlzYWJsZSB3aWRlIHZlcnNpb24gb2YgbmFycm93LW9ubHkgb3Bjb2RlcwpAQCAtNzA1
LDcgKzcyNCwzOCBAQCBtYWNybyBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgc2xvd1BhdGgsIHN0
b3JlV2FzbUluc3RhbmNlKQogICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBhZGRwIENh
bGxlckZyYW1lQW5kUENTaXplLCBzcAotICAgICAgICAgICAgY2FsbCB3czAsIFNsb3dQYXRoUHRy
VGFnCisKKyAgICAgICAgICAgIGN0eChtYWNybyhvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNp
emUpCisgICAgICAgICAgICAgICAgbWFjcm8gY2FsbE5hcnJvdygpCisgICAgICAgICAgICAgICAg
ICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
OiVvcGNvZGVOYW1lJSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGpt
cCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisg
ICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9s
aW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpTRW50cnlT
bG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgbWFj
cm8gY2FsbFdpZGUxNigpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAg
ICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMTYpICog
UHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
d2lkZTE2OgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRy
VGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsV2lk
ZTMyKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAg
ICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0
ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXplLCB3
czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6Cisg
ICAgICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAg
ICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIHNpemUoY2FsbE5hcnJvdywgY2FsbFdp
ZGUxNiwgY2FsbFdpZGUzMiwgbWFjcm8gKGdlbikgZ2VuKCkgZW5kKQorICAgICAgICAgICAgICAg
IGRlZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgICAgICAgICBlbmQpCiAK
ICAgICAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB3czEKICAgICAgICAgICAgIGxvYWRp
IFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrOjptX251bUNhbGxlZUxvY2Fsc1t3czFdLCB3czEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIKaW5kZXggZjllNTczMmZhZjE0
YjA4MDliYzJiYjZjMTliMWM4MDJjNTlmODMwMi4uZmY1N2I2YTQ4YWU5NzU1YjRjMTA1NDg1NDNk
NzU5ZjQ0MzYyNzg3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtNjQucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQu
cmIKQEAgLTM3LDM4ICszNyw0NSBAQAogIwogIyBHUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRo
ZSBiYXNlbGluZSBKSVQ6CiAjCi0jICB4MCAgPT4gdDAsIGEwLCByMAotIyAgeDEgID0+IHQxLCBh
MSwgcjEKLSMgIHgyICA9PiB0MiwgYTIKLSMgIHgzICA9PiB0MywgYTMKLSMgIHg0ICA9PiB0NAot
IyAgeDUgID0+IHQ1CisjICB4MCAgPT4gdDAsIGEwLCB3YTAsIHIwCisjICB4MSAgPT4gdDEsIGEx
LCB3YTEsIHIxCisjICB4MiAgPT4gdDIsIGEyLCB3YTIKKyMgIHgzICA9PiB0MywgYTMsIHdhMwor
IyAgeDQgID0+IHQ0LCBhNCwgd2E0CisjICB4NSAgPT4gdDUsIGE1LCB3YTUKKyMgIHg2ICA9PiB0
NiwgYTYsIHdhNgorIyAgeDcgID0+IHQ3LCBhNywgd2E3CisjICB4OCAgPT4gd3MwCisjICB4OSAg
PT4gd3MxCiAjIHgxMyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE2ICA9PiAg
ICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTcgID0+ICAgICAgICAgICAgICAgICAgKHNj
cmF0Y2gpCi0jIHgyNiAgPT4gICAgICAgICAgICAgY3NyMCAoUEIpCi0jIHgyNyAgPT4gICAgICAg
ICAgICAgY3NyMSAobnVtYmVyVGFnKQotIyB4MjggID0+ICAgICAgICAgICAgIGNzcjIgKG5vdENl
bGxNYXNrKQorIyB4MjUgID0+ICAgICAgICAgICAgIGNzcjYgKG1ldGFkYXRhVGFibGUpCisjIHgy
NiAgPT4gICAgICAgICAgICAgY3NyNyAoUEIpCisjIHgyNyAgPT4gICAgICAgICAgICAgY3NyOCAo
bnVtYmVyVGFnKQorIyB4MjggID0+ICAgICAgICAgICAgIGNzcjkgKG5vdENlbGxNYXNrKQogIyB4
MjkgID0+IGNmcgogIyAgc3AgID0+IHNwCiAjICBsciAgPT4gbHIKICMKICMgRlBSIGNvbnZlbnRp
b25zLCB0byBtYXRjaCB0aGUgYmFzZWxpbmUgSklUOgogIwotIyAgcTAgID0+IGZ0MCwgZmEwLCBm
cgotIyAgcTEgID0+IGZ0MSwgZmExCi0jICBxMiAgPT4gZnQyLCBmYTIKLSMgIHEzICA9PiBmdDMs
IGZhMwotIyAgcTQgID0+IGZ0NCAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5lKQotIyAgcTUg
ID0+IGZ0NSAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5lKQotIyAgcTggID0+IGNzZnIwICAg
ICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgIHE5ICA9PiBjc2ZyMSAgICAgICAgKE9u
bHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMCAgPT4gY3NmcjIgICAgICAgIChPbmx5IHRoZSBs
b3dlciA2NCBiaXRzKQotIyBxMTEgID0+IGNzZnIzICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQg
Yml0cykKLSMgcTEyICA9PiBjc2ZyNCAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0j
IHExMyAgPT4gY3NmcjUgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTQgID0+
IGNzZnI2ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTE1ICA9PiBjc2ZyNyAg
ICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjICBxMCAgPT4gZnQwLCBmYTAsIHdmYTAs
IGZyCisjICBxMSAgPT4gZnQxLCBmYTEsIHdmYTEKKyMgIHEyICA9PiBmdDIsIGZhMiwgd2ZhMgor
IyAgcTMgID0+IGZ0MywgZmEzLCB3ZmEzCisjICBxNCAgPT4gZnQ0LCAgICAgIHdmYTQgICAgICAg
ICAgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE1ICA9PiBmdDUsICAgICAgd2ZhNSAgICAgICAg
ICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTYgID0+ICAgICAgICAgICB3ZmE2ICAgICAgICAg
ICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxNyAgPT4gICAgICAgICAgIHdmYTcgICAgICAgICAg
KHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE4ICA9PiBjc2ZyMCAgICAgICAgICAgICAgICAgICAo
T25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgIHE5ICA9PiBjc2ZyMSAgICAgICAgICAgICAgICAg
ICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTEwICA9PiBjc2ZyMiAgICAgICAgICAgICAg
ICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTExICA9PiBjc2ZyMyAgICAgICAgICAg
ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTEyICA9PiBjc2ZyNCAgICAgICAg
ICAgICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTEzICA9PiBjc2ZyNSAgICAg
ICAgICAgICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTE0ICA9PiBjc2ZyNiAg
ICAgICAgICAgICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgcTE1ICA9PiBjc2Zy
NyAgICAgICAgICAgICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKICMgcTMxICA9PiBz
Y3JhdGNoCiAKIGRlZiBhcm02NEdQUk5hbWUobmFtZSwga2luZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWY1YTMyZDUxMGZjODBjMDYzOGEzOWVkNjUxYWVm
NWE5ZDBmZmYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2F0ZS5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBF
TkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorCisjZGVmaW5lIEpTQ19VVElMSVRZX0dB
VEVTKHYpIFwKKyAgICB2KGppdENhZ2VQdHIsIE5vUHRyVGFnKSBcCisgICAgdih0YWlsQ2FsbEpT
RW50cnlQdHJUYWcsIE5vUHRyVGFnKSBcCisgICAgdih0YWlsQ2FsbEpTRW50cnlTbG93UGF0aFB0
clRhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxvb3BPU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2
KGVudHJ5T1NSRW50cnksIE5vUHRyVGFnKSBcCisgICAgdih3YXNtT1NSRW50cnksIE5vUHRyVGFn
KSBcCisgICAgdihleGNlcHRpb25IYW5kbGVyLCBOb1B0clRhZykgXAorICAgIHYocmV0dXJuRnJv
bUxMSW50LCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tVbnRhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrVGFnLCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZywgTm9QdHJUYWcpIFwKKyAgICB2KHZtRW50cnlU
b0phdmFTY3JpcHQsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KHZtRW50cnlUb05hdGl2ZSwgSG9z
dEZ1bmN0aW9uUHRyVGFnKSBcCisKKyNkZWZpbmUgSlNDX0pTX0dBVEVfT1BDT0RFUyh2KSBcCisg
ICAgdihvcF9jYWxsLCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGwsIEpTRW50
cnlQdHJUYWcpIFwKKyAgICB2KG9wX2NvbnN0cnVjdCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYo
b3BfaXRlcmF0b3JfbmV4dCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfaXRlcmF0b3Jfb3Bl
biwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfY2FsbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2FsbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcp
IFwKKyAgICB2KG9wX2NvbnN0cnVjdF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAg
ICB2KG9wX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2
KG9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAg
IHYob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0
clRhZykgXAorICAgIHYob3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnKSBcCisgICAgdihvcF9jYWxsX2V2YWxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisgICAgdihvcF9pdGVyYXRvcl9uZXh0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykg
XAorICAgIHYob3BfaXRlcmF0b3Jfb3Blbl9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwK
KworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKworI2RlZmluZSBKU0NfV0FTTV9HQVRFX09QQ09E
RVModikgXAorICAgIHYod2FzbV9jYWxsLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2
KHdhc21fY2FsbF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9j
YWxsX2luZGlyZWN0LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdhc21fY2FsbF9p
bmRpcmVjdF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorCisjZWxzZQorI2RlZmlu
ZSBKU0NfV0FTTV9HQVRFX09QQ09ERVModikKKyNlbmRpZgorCitlbnVtIGNsYXNzIEdhdGUgOiB1
aW50OF90IHsKKyNkZWZpbmUgSlNDX0RFRklORV9HQVRFX0VOVU0oZ2F0ZU5hbWUsIHRhZykgZ2F0
ZU5hbWUsCisjZGVmaW5lIEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFn
KSBnYXRlTmFtZSwgZ2F0ZU5hbWUjI193aWRlMTYsIGdhdGVOYW1lIyNfd2lkZTMyLAorICAgIEpT
Q19VVElMSVRZX0dBVEVTKEpTQ19ERUZJTkVfR0FURV9FTlVNKQorICAgIEpTQ19KU19HQVRFX09Q
Q09ERVMoSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQorICAgIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyhKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0pCisjdW5kZWYgSlNDX0RFRklORV9HQVRF
X0VOVU0KK307CisKKyNkZWZpbmUgSlNDX0NPVU5UKGdhdGVOYW1lLCB0YWcpICsgMQorI2RlZmlu
ZSBKU0NfT1BDT0RFX0NPVU5UKGdhdGVOYW1lLCB0YWcpICsgMworc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBudW1iZXJPZkdhdGVzID0gMCBKU0NfVVRJTElUWV9HQVRFUyhKU0NfQ09VTlQpIEpT
Q19KU19HQVRFX09QQ09ERVMoSlNDX09QQ09ERV9DT1VOVCkgSlNDX1dBU01fR0FURV9PUENPREVT
KEpTQ19PUENPREVfQ09VTlQpOworI3VuZGVmIEpTQ19DT1VOVAorI3VuZGVmIEpTQ19PUENPREVf
Q09VTlQKKyNlbHNlCisvLyBLZWVwIGl0IG5vbi16ZXJvIHRvIG1ha2UgSlNDQ29uZmlnJ3MgYXJy
YXkgbm90IFswXS4KK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9IDE7
CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaApp
bmRleCA1YTQ3MzE3YzYyYTVlYmE2NjY2NzU3MzVmNzc0MDM1MDBjNjgwYjQxLi43Zjk2ZWM1MmVk
MjFhZmRlMzNkYTEzMGRiN2RkNDY5NGVjNjE5OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NDb25maWcuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkdhdGUuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJPcHRpb25z
TGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTkyLDYgKzkzLDcgQEAgc3Ry
dWN0IENvbmZpZyB7CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBbbnVtT3Bjb2RlSURzICsgbnVt
V2FzbU9wY29kZUlEc107CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBXaWRlMTZbbnVtT3Bjb2Rl
SURzICsgbnVtV2FzbU9wY29kZUlEc107CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBXaWRlMzJb
bnVtT3Bjb2RlSURzICsgbnVtV2FzbU9wY29kZUlEc107CisgICAgICAgIGNvbnN0IHZvaWQqIGdh
dGVNYXBbbnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGludDsKIAogI2lmIENQVShBUk02NEUpICYm
IEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQpAQCAtMTE3LDYgKzExOSw3IEBAIGV4dGVybiAiQyIg
SlNfRVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfanNjQ29uZmlnOwogY29uc3RleHByIHNpemVfdCBv
ZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5v
cGNvZGVNYXApOwogY29uc3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcFdp
ZGUxNiA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5vcGNvZGVNYXBXaWRlMTYpOwogY29u
c3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcFdpZGUzMiA9IG9mZnNldG9m
KEpTQzo6Q29uZmlnLCBsbGludC5vcGNvZGVNYXBXaWRlMzIpOworY29uc3RleHByIHNpemVfdCBv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQuZ2F0
ZU1hcCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUHRyVGFnLmNwcAppbmRleCBhOTQxNjM0YmZmZGE3YTQ2MzE1NmM0NTkwNmY3NzQ5
YmVhMjI2YWM3Li5lYWIzN2VlODc4NDE2NDliYmQ5MWFjNDk0MjNlOWUzYmQ3YzUyZWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKQEAgLTI4LDYgKzI4
LDEyIEBACiAKICNpbmNsdWRlICJKU0NDb25maWcuaCIKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMuaD4KKyNpbmNsdWRlIDxzeXMvbW1h
bi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0Mgewog
CiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0zNSw4ICs0
MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBjaGFyKiB0YWdGb3JQdHIoY29u
c3Qgdm9pZCogcHRyKQogewogI2RlZmluZSBSRVRVUk5fTkFNRV9JRl9UQUdfTUFUQ0hFUyh0YWcs
IGNhbGxlZVR5cGUsIGNhbGxlclR5cGUpIFwKLSAgICBpZiAocHRyID09IFdURjo6dGFnQ29kZVB0
ckltcGw8V1RGOjpQdHJUYWdBY3Rpb246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4ocmVtb3ZlQ29kZVB0
clRhZyhwdHIpKSkgXAotICAgICAgICByZXR1cm4gI3RhZzsKKyAgICBpZiAoY2FsbGVyVHlwZSAh
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQgfHwgY2FsbGVlVHlwZSAhPSBQdHJUYWdDYWxsZXJUeXBl
OjpOYXRpdmUpIHsgXAorICAgICAgICBpZiAocHRyID09IFdURjo6dGFnQ29kZVB0ckltcGw8V1RG
OjpQdHJUYWdBY3Rpb246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4ocmVtb3ZlQ29kZVB0clRhZyhwdHIp
KSkgXAorICAgICAgICAgICAgcmV0dXJuICN0YWc7IFwKKyAgICB9CiAgICAgRk9SX0VBQ0hfSlND
X1BUUlRBRyhSRVRVUk5fTkFNRV9JRl9UQUdfTUFUQ0hFUykKICN1bmRlZiBSRVRVUk5fTkFNRV9J
Rl9UQUdfTUFUQ0hFUwogICAgIHJldHVybiBudWxscHRyOyAvLyBNYXRjaGluZyB0YWcgbm90IGZv
dW5kLgpAQCAtNjEsNCArNjksMzIgQEAgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3VwKCkKIAog
I2VuZGlmIC8vIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogCisjaWYg
Q1BVKEFSTTY0RSkKKworUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyB0YWcpCit7
CisjZGVmaW5lIFJFVFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVy
VHlwZSkgY2FzZSBfdGFnTmFtZTogcmV0dXJuIGNhbGxlclR5cGU7CisgICAgc3dpdGNoICh0YWcp
IHsKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKKyAgICB9
CisjdW5kZWYgUkVUVVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6
Ok5hdGl2ZTsKK30KKworUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0clRhZyB0YWcpCit7
CisjZGVmaW5lIFJFVFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2FsbGVy
VHlwZSkgY2FzZSBfdGFnTmFtZTogcmV0dXJuIGNhbGxlZVR5cGU7CisgICAgc3dpdGNoICh0YWcp
IHsKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKKyAgICB9
CisjdW5kZWYgUkVUVVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6
Ok5hdGl2ZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAppbmRleCBkZjhiNDAyMjY2ZTBlMDIwMTlhZjM1
ZjY4ZTkxZmFhNzhiZTc5MzViLi4zMzhhYWFlYWU2YTEyNTUzNjQ0ZWQ1NTczYWY1YjFiYzRmMDM5
MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaApAQCAtMjcs
NDYgKzI3LDUzIEBACiAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVkZSA8
d3RmL1B0clRhZy5oPgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRp
dGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGppdENhZ2VQdHIodm9pZCogcG9p
bnRlciwgdWludHB0cl90IHRhZyk7CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHVzaW5n
IFB0clRhZyA9IFdURjo6UHRyVGFnOwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19QVFJUQUcodikg
XAotICAgIC8qIE5hdGl2ZSBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpO
b25lICovIFwKICAgICB2KERPTUpJVEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpO
YXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAg
ICB2KFB1dFZhbHVlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxl
clR5cGU6Ok5vbmUpIFwKLSAgICAvKiBKSVQgTm9uZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBD
YWxsZXI6Tm9uZSAqLyBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVU
eXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFibGVNZW1v
cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkg
XAogICAgIHYoTGlua0J1ZmZlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdD
YWxsZXJUeXBlOjpOb25lKSBcCi0gICAgLyogTmF0aXZlIE5hdGl2ZSAqLyBcCisgICAgdihZYXJy
OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25l
KSBcCisgICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFn
Q2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcsIFB0clRh
Z0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1h
dGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6Ok5vbmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOYXRpdmUgKi8gXAogICAg
IHYoQnl0ZWNvZGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVy
VHlwZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlRXhlY3V0
b3JQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0
aXZlKSBcCiAgICAgdihKSVRQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAg
ICB2KFNsb3dQYXRoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxl
clR5cGU6Ok5hdGl2ZSkgXAotICAgIC8qIEpJVCBOYXRpdmUgKi8gXAorICAgIC8qIENhbGxlZTpK
SVQgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAgICAgdihOYXRpdmVUb0pJVEdhdGVQdHJUYWcsIFB0clRh
Z0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogTmF0
aXZlIEpJVCAqLyBcCisgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2ZSBDYWxs
ZXI6SklUICovIFwKICAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2
KEpJVFRvTmF0aXZlR2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpIFwKLSAgICAvKiBKSVQgSklUICovIFwKKyAgICAvKiBDYWxsZWU6SklU
IENhbGxlcjpKSVQgKi8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFRodW5rUHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAg
IHYoSklUU3R1YlJvdXRpbmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2Fs
bGVyVHlwZTo6SklUKSBcCiAgICAgdihKU0VudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpK
SVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAorICAgIHYoSlNFbnRyeVNsb3dQYXRoUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYo
SlNJbnRlcm5hbFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBl
OjpKSVQpIFwKICAgICB2KEpTU3dpdGNoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoT1NSRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFeGl0UHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYo
V2FzbUVudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6
OkpJVCkgXAotICAgIHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRy
VGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQp
IFwKLSAgICB2KFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KFlhcnJCYWNrdHJhY2tQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAKICNkZWZpbmUg
SlNDX0RFQ0xBUkVfUFRSVEFHKG5hbWUsIHR5cGUsIHRhcmdldCkgV1RGX0RFQ0xBUkVfUFRSVEFH
KG5hbWUpCkBAIC0xMDgsMTggKzExNSwyOCBAQCBGT1JfRUFDSF9KU0NfUFRSVEFHKEpTQ19ERUNM
QVJFX1BUUlRBRykKICNwcmFnbWEgd2FybmluZyhwb3ApCiAjZW5kaWYKIAorSlNfRVhQT1JUX1BS
SVZBVEUgUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyk7CitKU19FWFBPUlRfUFJJ
VkFURSBQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnKTsKKwogdGVtcGxhdGU8UHRy
VGFnIHRhZywgUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlLCBQdHJUYWdDYWxsZXJUeXBlIGNh
bGxlclR5cGUsIHR5cGVuYW1lIFB0clR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQdHJUeXBl
IHRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2Fs
bGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2Fs
bGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3Rl
eHByICh0YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNf
YXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRh
Zyk7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0g
ICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9w
ZXJhdGlvbihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0
RnVuY3Rpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFu
Y2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOwotICAgICAgICB9CisgICAgICAgIHN0YXRp
Y19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRy
VGFnKTsKKyAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQorICAg
ICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlv
bihwdHIpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0
clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNI
b3N0RnVuY3Rpb24ocHRyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRp
b25zOjp1c2VKSVRDYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5
cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0d2lzZV9jYXN0PHZv
aWQqPihwdHIpKSk7CisjZW5kaWYKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8UHRyVHlwZT4oaml0Q2FnZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciks
IHRhZykpOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJ
bXBsPHRhZz4ocHRyKTsKIH0KQEAgLTEyOSwxNyArMTQ2LDY0IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIFB0clR5cGUgdW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsKICAgICBzdGF0
aWNfYXNzZXJ0KGNhbGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICBpZiBj
b25zdGV4cHIgKGNhbGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlKSB7Ci0gICAg
ICAgIGlmIGNvbnN0ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykgewotICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0
RnVuY3Rpb25QdHJUYWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0
aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCku
YXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHBy
ICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlv
bkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25Q
dHJUYWcpOworICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisg
ICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0
aW9uKHB0cik7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9u
UHRyVGFnKQorICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJ
c0hvc3RGdW5jdGlvbihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lz
ZV9jYXN0PFB0clR5cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuY29udGFpbnMoYml0
d2lzZV9jYXN0PHZvaWQqPihwdHIpKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1v
dmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0gZWxzZSB7CisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7Cisg
ICAgICAgICAgICBQdHJUeXBlIHJlbW92ZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCgodGFnSlNDQ29kZVB0ckltcGw8dGFnLCBjYWxsZWVUeXBl
LCBjYWxsZXJUeXBlPihyZW1vdmVkKSkgPT0gcHRyKTsKKyAgICAgICAgICAgIHJldHVybiByZW1v
dmVkOwogICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIFdURjo6dW50YWdOYXRp
dmVDb2RlUHRySW1wbDx0YWc+KHB0cik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+
CitpbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRy
VHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxQdHJUeXBlPihKU0NfSklUX0NBR0UoYml0d2lzZV9jYXN0PHZvaWQqPihwdHIpLCBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihzdGFja1BvaW50ZXIpKSk7CisjZW5kaWYKKyNpZiBDUFUoQVJNNjRF
KQorICAgIHJldHVybiBwdHJhdXRoX3NpZ25fdW5hdXRoZW50aWNhdGVkKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2lu
dGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgUHRyVHlwZT4KK2lubGluZSBQdHJUeXBlIHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50
ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCit7Cisg
ICAgQVNTRVJUKHB0cik7CisgICAgVU5VU0VEX1BBUkFNKHN0YWNrUG9pbnRlcik7CisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAg
UHRyVHlwZSB1bmNhZ2VkID0gcmVtb3ZlQ29kZVB0clRhZyhwdHIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVCh0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwodW5jYWdlZCwgc3Rh
Y2tQb2ludGVyKSA9PSBwdHIpOworICAgICAgICByZXR1cm4gdW5jYWdlZDsKKyAgICB9CisjZW5k
aWYKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0
ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRh
Zz4oc3RhY2tQb2ludGVyKSk7CisjZWxzZQorICAgIHJldHVybiBwdHI7CisjZW5kaWYKK30KKwog
I2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogdm9pZCBpbml0aWFs
aXplUHRyVGFnTG9va3VwKCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hdGNoUmVzdWx0LmgKaW5kZXggYWRkMjY0ZTkwOTc1YjI2NWZkNWJlMTBmMjYzMmZkNzVlMjg2
YzgxYy4uZjMwNWU0YTE2NGQwMWZmYjFmODFjNzllYjVlNDlmMDQ1YjgxODVkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCkBAIC0zNCw3ICszNCwxMCBA
QCBzdHJ1Y3QgTWF0Y2hSZXN1bHQ7CiAjaWYgQ1BVKEFERFJFU1MzMikKIHVzaW5nIEVuY29kZWRN
YXRjaFJlc3VsdCA9IHVpbnQ2NF90OwogI2Vsc2UKLXVzaW5nIEVuY29kZWRNYXRjaFJlc3VsdCA9
IE1hdGNoUmVzdWx0Oworc3RydWN0IEVuY29kZWRNYXRjaFJlc3VsdCB7CisgICAgc2l6ZV90IHN0
YXJ0OworICAgIHNpemVfdCBlbmQ7Cit9OwogI2VuZGlmCiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7
CkBAIC01Niw2ICs1OSwxMiBAQCBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgICAgICAsIGVuZChi
aXR3aXNlX2Nhc3Q8TWF0Y2hSZXN1bHQ+KG1hdGNoKS5lbmQpCiAgICAgewogICAgIH0KKyNlbHNl
CisgICAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdChFbmNvZGVkTWF0Y2hSZXN1bHQgbWF0Y2gp
CisgICAgICAgIDogc3RhcnQobWF0Y2guc3RhcnQpCisgICAgICAgICwgZW5kKG1hdGNoLmVuZCkK
KyAgICB7CisgICAgfQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXRjaFJl
c3VsdCBmYWlsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApp
bmRleCAwZDJmNWFjZjc5Y2RmNTc0OThlNmE3M2MwNjcyZDZkZDRiZjg4NDc4Li5lNzE3ZDMwZTY0
ZDE1OTczNDc5MmEzZjQ4YjkyMTY1NzJmYjQwM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcApAQCAtNTAsNiArNTAsMTEgQEAKICNpbmNsdWRlIDxjcnRfZXh0
ZXJucy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBh
YmlsaXRpZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTM5Miw2ICszOTcsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlQWxsSklUT3B0aW9u
cygpCiAgICAgT3B0aW9uczo6dXNlT01HSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25zOjp1c2VE
T01KSVQoKSA9IGZhbHNlOwogICAgIE9wdGlvbnM6OnVzZVJlZ0V4cEpJVCgpID0gZmFsc2U7Cisg
ICAgT3B0aW9uczo6dXNlSklUQ2FnZSgpID0gZmFsc2U7CiB9CiAKIHZvaWQgT3B0aW9uczo6cmVj
b21wdXRlRGVwZW5kZW50T3B0aW9ucygpCkBAIC0xMTE0LDQgKzExMjAsMTAgQEAgYm9vbCBPcHRp
b25SZWFkZXI6Ok9wdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2Jvb2wgY2FuVXNl
SklUQ2FnZSgpIHsgcmV0dXJuIEpTQ19KSVRfQ0FHRV9WRVJTSU9OKCk7IH0KKyNlbHNlCitib29s
IGNhblVzZUpJVENhZ2UoKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5k
ZXggOGQwZmYwZWM2ODMyOWIwNGQwOTNjZTM4ZDRlY2E0NmFhMjg4ZjNlYS4uYTYxOTFhYmEwMzMx
Y2FjM2RjN2U2Nzg3NjRlZGE3NTRjMjBmM2ViOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00Myw2ICs0Myw4IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gdHJ1ZTsKIGNvbnN0ZXhwciBib29sIGVuYWJs
ZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAjZW5kaWYKIAorSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CisKIC8vIEhvdyBkbyBKU0MgVk0gb3B0aW9ucyB3
b3JrPwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAvLyBUaGUgRk9SX0VBQ0hfSlND
X09QVElPTigpIG1hY3JvIGJlbG93IGRlZmluZXMgYSBsaXN0IG9mIGFsbCBKU0Mgb3B0aW9ucyBp
biB1c2UsCkBAIC01MjAsNiArNTIyLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1i
bHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KFVuc2lnbmVkLCBzZWVkRm9yTElDTUZ1enpl
ciwgNDI0MjQyLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KERvdWJsZSwgYWxsb3dIb2lzdGlu
Z0xJQ01Qcm9iYWJpbGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIGV4
cG9zZUN1c3RvbVNldHRlcnNPbkdsb2JhbE9iamVjdEZvclRlc3RpbmcsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZUpJVENhZ2UsIGNhblVzZUpJVENhZ2UoKSwgTm9y
bWFsLCBudWxscHRyKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRp
b24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4
IDljNGI1OTU0NmU2Zjk2MGFiNzU4ZTNhNTNmMmI2MWRiYjY3NGMyMWUuLjkwNjIxMTIxYTgxZTMx
YjUyMTc1YjU5N2Q5YmM0MTI2NDg2NzYzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgewogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIFdBU01fQ0FM
TF9SRVRVUk4odGFyZ2V0SW5zdGFuY2UsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIGRvIHsg
XAotICAgICAgICBXQVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBT
bG93UGF0aFB0clRhZz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0YW5jZSk7IFwKKyAgICAgICAg
V0FTTV9SRVRVUk5fVFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRyeVNsb3dQ
YXRoUHRyVGFnPihjYWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAogICAgIH0gd2hpbGUg
KGZhbHNlKQogCiAjZGVmaW5lIENPREVfQkxPQ0soKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCmluZGV4IDIyYmY2NmQ4YzgyMmRhOTFlMDMxODA2YTJmNjlkMzZlNGJkOGY3
YmQuLjk0ZDMwMmFlYWZkNTE2YTViM2ZjN2Y0YmY1Zjc5NWEzZjU2Y2E3NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC00MCw2ICs0MCwxMCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCisjaWYgQ1BVKEFSTTY0KQorSlNDX0FOTk9UQVRF
X0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF92bUVudHJ5VG9ZYXJySklUQWZ0ZXIsIHZtRW50cnlU
b1lhcnJKSVRBZnRlcik7CisjZW5kaWYKKwogTWF0Y2hpbmdDb250ZXh0SG9sZGVyOjpNYXRjaGlu
Z0NvbnRleHRIb2xkZXIoVk0mIHZtLCBZYXJyQ29kZUJsb2NrKiB5YXJyQ29kZUJsb2NrLCBNYXRj
aEZyb20gbWF0Y2hGcm9tKQogICAgIDogbV92bSh2bSkKIHsKQEAgLTM3NDYsOSArMzc1MCw3IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWN4KTsKICNlbmRp
ZgogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICB0YWdSZXR1cm5BZGRyZXNzKCk7CiAgICAgICAg
IGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKSB7Ci0gICAgICAgICAgICBwdXNoUGFpcihmcmFt
ZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKDB4MTAwMDApLCBzdXBwbGVtZW50YXJ5UGxhbmVzQmFzZSk7CiAgICAgICAgICAgICBt
b3ZlKFRydXN0ZWRJbW0zMigweGQ4MDApLCBsZWFkaW5nU3Vycm9nYXRlVGFnKTsKICAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4ZGMwMCksIHRyYWlsaW5nU3Vycm9nYXRlVGFnKTsKQEAg
LTM4MDMsOCArMzgwNSw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgcG9wKFg4NlJl
Z2lzdGVyczo6ZWJ4KTsKICAgICAgICAgcG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKICNlbGlmIENQ
VShBUk02NCkKLSAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAg
ICBwb3BQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOworICAgICAgICAv
LyBEbyBub3RoaW5nCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAgcG9wKEFSTVJlZ2lz
dGVyczo6cjgpOwogICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyNik7CkBAIC0zODEzLDcgKzM4
MTQsMTMgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAjZWxpZiBDUFUoTUlQUykKICAgICAgICAgLy8gRG8g
bm90aGluZwogI2VuZGlmCisKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFn
Pigmdm1FbnRyeVRvWWFyckpJVEFmdGVyKSksIHJlZ1QwKTsKKyAgICAgICAgZmFySnVtcChyZWdU
MCwgT3BlcmF0aW9uUHRyVGFnKTsKKyNlbHNlCiAgICAgICAgIHJldCgpOworI2VuZGlmCiAgICAg
fQogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggNjY0Mjhl
MDY2M2YzMzIwOTE3NzgxZGJiOWQwYzczMGQyYjZkNjg1Yi4uMTViN2JkNmEyNmZmNmU0YjAwMTIx
Mjk4OWU4ZmRjZWVhNWE0YjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApA
QCAtNzYsNiArNzYsOSBAQCBjbGFzcyBNYXRjaGluZ0NvbnRleHRIb2xkZXIgewogI2VuZGlmCiB9
OwogCitleHRlcm4gIkMiIEVuY29kZWRNYXRjaFJlc3VsdCB2bUVudHJ5VG9ZYXJySklUKGNvbnN0
IHZvaWQqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1
dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyKiBtYXRjaGluZ0NvbnRleHQsIGNvbnN0IHZvaWQqIGNv
ZGVQdHIpOworZXh0ZXJuICJDIiB2b2lkIHZtRW50cnlUb1lhcnJKSVRBZnRlcih2b2lkKTsKKwog
Y2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoWWFyckNvZGVCbG9jayk7CkBAIC0xMDksMjUgKzExMiw0MSBA
QCBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExD
aGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQs
IE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKGhhczhCaXRDb2RlKCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1h
dGNoUmVzdWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwg
Jm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnI4Qml0UHRyVGFnLCBZYXJyRW50cnlQ
dHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTgsIFlh
cnI4Qml0UHRyVGFnPihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBz
dGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQog
CiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIm
IG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7
CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFy
ckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRh
Z0NvZGVQdHI8WWFycjE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fcmVmMTYuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1
bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGUxNiwgWWFycjE2Qml0UHRyVGFnPihtX3Jl
ZjE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0
cHV0LCBtYXRjaGluZ0NvbnRleHQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0
IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoLCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChoYXM4Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVu
Z3RoLCBudWxscHRyLCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25s
eThCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFn
Q0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJU
YWc+KG1fbWF0Y2hPbmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0
LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsKKyNpZiBD
UFUoQVJNNjRFKQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChp
bnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2Rl
UHRyPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNoT25s
eTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJu
IE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYsIFlh
cnJNYXRjaE9ubHkxNkJpdFB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkp
OworI2VuZGlmCiAgICAgfQogCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2Nh
dG9yLmgKaW5kZXggNzcxMzYyYjkyYTJlNTIyOTM5ODRlMTE2NTFiZDJhOTM5M2Q5ODNhMi4uMjY4
OGE0ZWZkZjgxN2RiN2FmNjY2OTg3NWRmMjNhNzk4OTM2YWExNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvT1NBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyByZWxlYXNlRGVj
b21taXR0ZWQgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkg
YSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50
bHkgYmUgaW4gYSBkZWNvbW1pdHRlZCBzdGF0ZS4gcmVzZXJ2ZVVuY29tbWl0dGVkIHJldHVybnMg
dG8KICAgICAvLyB5b3UgbWVtb3J5IHRoYXQgaXMgemVyb2VkLgotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCwgVXNhZ2UgPSBVbmtu
b3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwg
Ym9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25V
c2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29s
IGppdENhZ2VFbmFibGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2Up
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZWxlYXNlRGVjb21taXR0ZWQo
dm9pZCosIHNpemVfdCk7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHRo
ZXkgY29tbWl0IG9yIGRlY29tbWl0IGEgcmVnaW9uIG9mIFZNICh1bmNvbW1pdHRlZCBWTSBzaG91
bGQKQEAgLTU1LDI3ICs1NSwyNyBAQCBjbGFzcyBPU0FsbG9jYXRvciB7CiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlQW5kQ29tbWl0IGFsbG9jYXRlcyBWTSBpbiBh
biBjb21taXR0ZWQgc3RhdGUsCiAgICAgLy8gZGVjb21taXRBbmRSZWxlYXNlIHNob3VsZCBiZSBj
YWxsZWQgb24gYSByZWdpb24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9u
LAogICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgY29tbWl0dGVk
IHN0YXRlLgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2Up
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChz
aXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBl
eGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNs
dWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgZGVjb21taXRBbmRSZWxl
YXNlKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IGFraW4gdG8gcmVzZXJ2ZUFuZENvbW1pdC9kZWNvbW1pdEFuZFJlbGVhc2UsIGFib3ZlIC0gaG93
ZXZlciByYXRoZXIgdGhhbgogICAgIC8vIGNvbW1pdHRpbmcvZGVjb21taXR0aW5nIHRoZSBlbnRp
cmUgcmVnaW9uIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBhbGxvdyBhIHN1YnJlZ2lvbiB0byBiZQog
ICAgIC8vIHNwZWNpZmllZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJl
c2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNh
Z2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5k
Q29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlID0gVW5r
bm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2Us
IGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSk7CiAKICAgICAvLyBSZWFsbG9jYXRlIGFuIGV4
aXN0aW5nLCBjb21taXR0ZWQgYWxsb2NhdGlvbi4KICAgICAvLyBUaGUgcHJpb3IgYWxsb2NhdGlv
biBtdXN0IGJlIGZ1bGx5IGNvbWl0dGVkLCBhbmQgdGhlIG5ldyBzaXplIHdpbGwgYWxzbyBiZSBm
dWxseSBjb21taXR0ZWQuCiAgICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgcHJvdmlkZWQgc2luY2Ug
aXQgbWF5IGJlIHBvc3NpYmxlIHRvIG9wdGltaXplIHRoaXMgb3BlcmF0aW9uIG9uIHNvbWUgcGxh
dGZvcm1zLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQqIHJlYWxsb2Nh
dGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBV
bmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxz
ZSk7CisgICAgc3RhdGljIFQqIHJlYWxsb2NhdGVDb21taXR0ZWQoVCosIHNpemVfdCBvbGRTaXpl
LCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0
cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNl
KTsKIAogICAgIC8vIEhpbnQgdG8gdGhlIE9TIHRoYXQgYW4gYWRkcmVzcyByYW5nZSBpcyBub3Qg
ZXhwZWN0ZWQgdG8gYmUgYWNjZXNzZWQgYW55dGltZSBzb29uLgogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbih2b2lkKiwgc2l6ZV90KTsK
IH07CiAKLWlubGluZSB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3Qg
cmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJs
ZSwgYm9vbCBleGVjdXRhYmxlKQoraW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5k
Q29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdl
LCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7
Ci0gICAgdm9pZCogYmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwgdXNhZ2Us
IHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0
dGVkKHJlc2VydmVTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFi
bGVkKTsKICAgICBjb21taXQoYmFzZSwgY29tbWl0U2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUp
OwogICAgIHJldHVybiBiYXNlOwogfQpAQCAtODYsOSArODYsOSBAQCBpbmxpbmUgdm9pZCBPU0Fs
bG9jYXRvcjo6ZGVjb21taXRBbmRSZWxlYXNlKHZvaWQqIHJlbGVhc2VCYXNlLCBzaXplX3QgcmVs
ZWFzZVNpegogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFQqIE9TQWxsb2NhdG9y
OjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3Qg
bmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKK2lu
bGluZSBUKiBPU0FsbG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBzaXpl
X3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBi
b29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQpCiB7Ci0gICAgdm9pZCogbmV3QmFz
ZSA9IHJlc2VydmVBbmRDb21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxl
KTsKKyAgICB2b2lkKiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwg
d3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkKTsKICAgICBtZW1jcHkobmV3QmFz
ZSwgb2xkQmFzZSwgc3RkOjptaW4ob2xkU2l6ZSwgbmV3U2l6ZSkpOwogICAgIGRlY29tbWl0QW5k
UmVsZWFzZShvbGRCYXNlLCBvbGRTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG5l
d0Jhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmggYi9T
b3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAppbmRleCBhMmFlZTg4NGU5ODY0Y2Q5MzIx
YTZiNDk0ZTllNjk4ODI0NDMxMDMwLi40OTRiZjA1ZTAwMTcxNTM4NTFlYjEwYTU1MzNjMjJmYzY1
Y2I3NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaApAQCAtNTUsMTIgKzU1LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAKIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2Nr
IHsKIHB1YmxpYzoKLSAgICBQYWdlUmVzZXJ2YXRpb24oKQotICAgICAgICA6IG1fY29tbWl0dGVk
KDApCi0gICAgICAgICwgbV93cml0YWJsZShmYWxzZSkKLSAgICAgICAgLCBtX2V4ZWN1dGFibGUo
ZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBQYWdlUmVzZXJ2YXRpb24oKSA9IGRlZmF1bHQ7CiAK
ICAgICB1c2luZyBQYWdlQmxvY2s6OmJhc2U7CiAgICAgdXNpbmcgUGFnZUJsb2NrOjpzaXplOwpA
QCAtOTMsMjIgKzg4LDIyIEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJs
b2NrIHsKICAgICAgICAgcmV0dXJuIG1fY29tbWl0dGVkOwogICAgIH0KIAotICAgIHN0YXRpYyBQ
YWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVz
YWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2
ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVu
a25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNl
LCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQ
YWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxv
Y2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgZmFsc2UpOworICAgICAgICByZXR1cm4g
UGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSwgdXNh
Z2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpLCBzaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAgICAg
Ci0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1YXJkUGFnZXMoc2l6ZV90
IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNh
Z2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBz
dGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwg
T1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9v
bCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VF
bmFibGVkID0gZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXpl
KSk7Ci0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVV
bmNvbW1pdHRlZChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emUgKyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdl
RW5hYmxlZCwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxl
ZCwgdHJ1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlQW5k
Q29tbWl0V2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2Fn
ZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29s
IGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVB
bmRDb21taXRXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVz
YWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7Ci0gICAgICAgIHJldHVybiBQ
YWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VT
aXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXplLCB3cml0
YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24o
T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2Fn
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3Jp
dGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAKICAgICB2
b2lkIGRlYWxsb2NhdGUoKQpAQCAtMTI3LDcgKzEyMiw3IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlv
biA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUGFnZVJlc2Vy
dmF0aW9uKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1
dGFibGUsIGJvb2wgaGFzR3VhcmRQYWdlcykKKyAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFz
ZSwgc2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9v
bCBoYXNHdWFyZFBhZ2VzKQogICAgICAgICA6IFBhZ2VCbG9jayhiYXNlLCBzaXplLCBoYXNHdWFy
ZFBhZ2VzKQogICAgICAgICAsIG1fY29tbWl0dGVkKDApCiAgICAgICAgICwgbV93cml0YWJsZSh3
cml0YWJsZSkKQEAgLTEzNSw5ICsxMzAsOSBAQCBjbGFzcyBQYWdlUmVzZXJ2YXRpb24gOiBwcml2
YXRlIFBhZ2VCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIHNpemVfdCBtX2NvbW1pdHRlZDsK
LSAgICBib29sIG1fd3JpdGFibGU7Ci0gICAgYm9vbCBtX2V4ZWN1dGFibGU7CisgICAgc2l6ZV90
IG1fY29tbWl0dGVkIHsgMCB9OworICAgIGJvb2wgbV93cml0YWJsZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2V4ZWN1dGFibGUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
LmgKaW5kZXggZTIyMjk4NzViNDc3YjFjNmJhYmJjNWZlZGQ5N2NhNTcyOTFkM2MyMy4uZWJlZDY4
NjkyMmI2ZjBmMGJiMjA4N2NmNTQ2YTE4ODA0MjhjZGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCkBAIC04ODQsMTAgKzg4NCwxMCBAQAogI2Vycm9yICJFTkFCTEUoV0hMU0xfQ09NUElMRVIp
IHJlcXVpcmVzIEVOQUJMRShXRUJHUFUpIgogI2VuZGlmCiAKLSNpZiBDUFUoQVJNNjQpICYmIENQ
VShBRERSRVNTNjQpCi0jZGVmaW5lIFVTRV9KVU1QX0lTTEFORFMgMQorI2lmIE9TKERBUldJTikg
JiYgRU5BQkxFKEpJVCkgJiYgKChVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBDUFUoQVJNNjRF
KSkpCisjZGVmaW5lIEVOQUJMRV9KSVRfQ0FHRSAxCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikg
JiYgRU5BQkxFKEpJVCkgJiYgQVNTRVJUX0VOQUJMRUQKKyNpZiBPUyhEQVJXSU4pICYmIENQVShB
RERSRVNTNjQpICYmIEVOQUJMRShKSVQpICYmIChFTkFCTEUoSklUX0NBR0UpIHx8IEFTU0VSVF9F
TkFCTEVEKQogI2RlZmluZSBFTkFCTEVfSklUX09QRVJBVElPTl9WQUxJREFUSU9OIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtVXNlLmgKaW5kZXggMjJmNDYyYjJhNjRkYWJmOGMwODQ5YTkyMGRlYWJkOWEx
YzFlNWJlMi4uZmNlOWVkYTEzM2M5YmIzMTY3MGUzMmU5ZGYzYTA3YTRhMmRjMzhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVVzZS5oCkBAIC0zMDgsMyArMzA4LDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDExMDAw
MCkKICNkZWZpbmUgVVNFX0NURk9OVEdFVEFEVkFOQ0VTX1dPUktBUk9VTkQgMQogI2VuZGlmCisK
KyNpZiBDUFUoQVJNNjQpICYmIENQVShBRERSRVNTNjQpCisjZGVmaW5lIFVTRV9KVU1QX0lTTEFO
RFMgMQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaCBiL1NvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oCmluZGV4IDVhNDIxNzExMWQ1ZmE5MTIxNzYwYTI0MjFlMDIwYjVm
MWRlYjc4YmMuLmFjOTJlYzMxOTRkZmFjODRjMTUzZmI2NmZhZmVlYTNjZTk2MDRmNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1B0clRh
Zy5oCkBAIC0zNDQsNiArMzQ0LDcgQEAgYm9vbCBpc1RhZ2dlZFdpdGgoUHRyVHlwZSB2YWx1ZSkK
IHRlbXBsYXRlPFB0clRhZyB0YWcsIHR5cGVuYW1lIFB0clR5cGU+CiB2b2lkIGFzc2VydElzVGFn
Z2VkV2l0aChQdHJUeXBlIHZhbHVlKQogeworICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAg
V1RGX1BUUlRBR19BU1NFUlQoUHRyVGFnQWN0aW9uOjpEZWJ1Z0Fzc2VydCwgdmFsdWUsIHRhZywg
aXNUYWdnZWRXaXRoPHRhZz4odmFsdWUpKTsKIH0KIApAQCAtNDQ5LDIwICs0NTAsNiBAQCBpbmxp
bmUgVCogcmV0YWdBcnJheVB0cihUKiBwdHIsIHNpemVfdCBvbGRMZW5ndGgsIHNpemVfdCBuZXdM
ZW5ndGgpCiAgICAgcmV0dXJuIHB0cmF1dGhfYXV0aF9hbmRfcmVzaWduKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfZGF0YSwgb2xkTGVuZ3RoLCBwdHJhdXRoX2tleV9wcm9jZXNz
X2RlcGVuZGVudF9kYXRhLCBuZXdMZW5ndGgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJU
eXBlPgotaW5saW5lIFB0clR5cGUgdGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxs
KFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIpCi17Ci0gICAgQVNTRVJUKHB0
cik7Ci0gICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRo
X2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1Bv
aW50ZXIpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KLWlubGluZSBQdHJUeXBl
IHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25z
dCB2b2lkKiBzdGFja1BvaW50ZXIpCi17Ci0gICAgQVNTRVJUKHB0cik7Ci0gICAgcmV0dXJuIF9f
YnVpbHRpbl9wdHJhdXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9j
b2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKLX0KLQogdGVtcGxhdGUg
PFB0clRhZyB0YWcsIHR5cGVuYW1lIEludFR5cGU+CiBpbmxpbmUgSW50VHlwZSB0YWdJbnQoSW50
VHlwZSBwdHJJbnQpCiB7CkBAIC01MjAsMTIgKzUwNyw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5
UHRyKFQqIHB0ciwgc2l6ZV90LCBzaXplX3QpCiAgICAgcmV0dXJuIHB0cjsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
cG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5cGUgdGFnQ29kZVB0cldpdGhT
dGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKikgeyByZXR1cm4g
cHRyOyB9Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KLWlubGluZSBQdHJUeXBl
IHVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25z
dCB2b2lkKikgeyByZXR1cm4gcHRyOyB9Ci0KIHRlbXBsYXRlIDxQdHJUYWcsIHR5cGVuYW1lIElu
dFR5cGU+CiBpbmxpbmUgSW50VHlwZSB0YWdJbnQoSW50VHlwZSBwdHJJbnQpCiB7CkBAIC01NzIs
OSArNTUzLDcgQEAgdXNpbmcgV1RGOjpyZXRhZ0FycmF5UHRyOwogdXNpbmcgV1RGOjpyZW1vdmVB
cnJheVB0clRhZzsKIAogdXNpbmcgV1RGOjp0YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp0YWdDb2Rl
UHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGw7CiB1c2luZyBXVEY6OnVudGFnQ29kZVB0cjsK
LXVzaW5nIFdURjo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGw7CiB1c2lu
ZyBXVEY6OnJldGFnQ29kZVB0cjsKIHVzaW5nIFdURjo6cmVtb3ZlQ29kZVB0clRhZzsKIHVzaW5n
IFdURjo6dGFnQ0Z1bmN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvT1NB
bGxvY2F0b3JQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lY
LmNwcAppbmRleCA0NDU0MDU5YzUxNWQyYTQxMmI0MzJkMDcxNDZjZjZmMDExZDQ3NjBiLi42Y2Vm
ZDJlZTJkMzEwNWMyZDQwNDg1ZjY5NjVmZWJhODg0NWI0MzNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcApAQCAtMzEsMTQgKzMxLDI3IEBACiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFnZUJsb2NrLmg+CiAKKyNpZiBFTkFC
TEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMu
aD4KKyNlbHNlIC8vIEVOQUJMRShKSVRfQ0FHRSkKKyNpZiBPUyhEQVJXSU4pCisjZGVmaW5lIE1B
UF9FWEVDVVRBQkxFX0ZPUl9KSVQgTUFQX0pJVAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1Jf
SklUX1dJVEhfSklUX0NBR0UgTUFQX0pJVAorI2Vsc2UgLy8gT1MoREFSV0lOKQorI2RlZmluZSBN
QVBfRVhFQ1VUQUJMRV9GT1JfSklUIDAKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9X
SVRIX0pJVF9DQUdFIDAKKyNlbmRpZiAvLyBPUyhEQVJXSU4pCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VF9DQUdFKQorCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVV
bmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29s
IGV4ZWN1dGFibGUsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQordm9pZCogT1NBbGxvY2F0b3I6
OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2FnZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNH
dWFyZFBhZ2VzKQogewogI2lmIE9TKExJTlVYKQogICAgIFVOVVNFRF9QQVJBTSh1c2FnZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHdyaXRhYmxlKTsKICAgICBVTlVTRURfUEFSQU0oZXhlY3V0YWJsZSk7
CisgICAgVU5VU0VEX1BBUkFNKGppdENhZ2VFbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oaW5j
bHVkZXNHdWFyZFBhZ2VzKTsKIAogICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBS
T1RfTk9ORSwgTUFQX05PUkVTRVJWRSB8IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsK
QEAgLTQ2LDcgKzU5LDcgQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLAogICAgICAgICBDUkFTSCgp
OwogICAgIG1hZHZpc2UocmVzdWx0LCBieXRlcywgTUFEVl9ET05UTkVFRCk7CiAjZWxzZQotICAg
IHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwg
ZXhlY3V0YWJsZSwgaW5jbHVkZXNHdWFyZFBhZ2VzKTsKKyAgICB2b2lkKiByZXN1bHQgPSByZXNl
cnZlQW5kQ29tbWl0KGJ5dGVzLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VF
bmFibGVkLCBpbmNsdWRlc0d1YXJkUGFnZXMpOwogI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQog
ICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgLy8gVG8gc3VwcG9ydCB0aGUgInJlc2VydmUgdGhl
biBjb21taXQiIG1vZGVsLCB3ZSBoYXZlIHRvIGluaXRpYWxseSBkZWNvbW1pdC4KQEAgLTU5LDcg
KzcyLDcgQEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0
ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2Ug
dXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJk
UGFnZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMs
IFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wgaml0Q2Fn
ZUVuYWJsZWQsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQogewogICAgIC8vIEFsbCBQT1NJWCBy
ZXNlcnZhdGlvbnMgc3RhcnQgb3V0IGxvZ2ljYWxseSBjb21taXR0ZWQuCiAgICAgaW50IHByb3Rl
Y3Rpb24gPSBQUk9UX1JFQUQ7CkBAIC03MCw4ICs4MywxNCBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6
cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxl
LCBibwogCiAgICAgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfQU5PTjsKICNpZiBPUyhE
QVJXSU4pCi0gICAgaWYgKGV4ZWN1dGFibGUpCi0gICAgICAgIGZsYWdzIHw9IE1BUF9KSVQ7Cisg
ICAgaWYgKGV4ZWN1dGFibGUpIHsKKyAgICAgICAgaWYgKGppdENhZ2VFbmFibGVkKQorICAgICAg
ICAgICAgZmxhZ3MgfD0gTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUOwor
ICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGppdENhZ2VFbmFibGVkKTsKICNlbmRpZgog
CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL09TQWxsb2Nh
dG9yV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKaW5kZXgg
OWQ2YzBhYTc0MTEzNmNjOGE4NDZkMDQxMmE5MjFiZGEyYWMzOGI0Ny4uNmQ1MmM2NjJkZjA2Zjk0
ODFhOTMzNWE3ZWQyYjQ1MTQzNjY0NjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L09TQWxsb2NhdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JX
aW4uY3BwCkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBpbmxpbmUgRFdPUkQgcHJvdGVjdGlvbihi
b29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCiAgICAgICAgICh3cml0YWJsZSA/IFBBR0Vf
UkVBRFdSSVRFIDogUEFHRV9SRUFET05MWSk7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNl
cnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBl
eGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2ws
IGJvb2wpCiB7CiAgICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKG51bGxwdHIsIGJ5dGVz
LCBNRU1fUkVTRVJWRSwgcHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlm
ICghcmVzdWx0KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVu
Y29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0
KHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCkKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNh
Z2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2
b2lkKiByZXN1bHQgPSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFIHwg
TUVNX0NPTU1JVCwgcHJvdGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlmICgh
cmVzdWx0KQo=
</data>
<flag name="commit-queue"
          id="429074"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412597</attachid>
            <date>2020-10-28 18:03:45 -0700</date>
            <delta_ts>2020-10-29 00:11:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201028180344.patch</filename>
            <type>text/plain</type>
            <size>172630</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODIwNjEzYTgyNzliNTMxNWY1OGEzODlmNDE3MzA3NzZkMTM4OTRhLi5jYThkZjNjYzE5MmRiZTBm
NDZlYjUxMzgzZmRiMGNkM2ZjODViZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMjAtMTAtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KToKKyAgICAgICAg
KiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpT
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRy
eU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRyeUdh
dGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dW50
YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5l
VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
bGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29u
ZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAgICAgICAoSlNDOjp0
YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2Fs
bGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6
dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToK
KyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6
Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21T
bG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorCiAyMDIwLTEwLTI4ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dW1BsYXlTdGF0aW9uXSBBZGQgaGFuZGxpbmcgZm9yIGFjY2Vw
dCBmYWlsdXJlIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggYTFiM2UwYmMxNDM5MWY4YTViMmRmOWU1ZmE2ZjEyZjM0ODkz
NTcyNi4uYzI1OTI5YmIzZTE5Zjg1ZGJkNWZmNzYyOGY3MDkxNDMxM2Q5NGI5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0xMC0yOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL09TQWxsb2NhdG9yLmg6CisgICAg
ICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KToKKyAgICAgICAgKFdURjo6
T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQpOgorICAgICAgICAqIHd0Zi9QYWdlUmVz
ZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKToKKyAg
ICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJkUGFnZXMpOgorICAg
ICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdl
cyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6UGFnZVJlc2VydmF0aW9uKToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2Uu
aDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAgICAgIChXVEY6OmFzc2VydElzVGFnZ2Vk
V2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2Fs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJG
b3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJ
WC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgor
ICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgICog
d3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpy
ZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFu
ZENvbW1pdCk6CisKIDIwMjAtMTAtMjggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgQmV0dGVyIGNhY2hlIG91ciBzZXJpYWxpemF0aW9uIG9mIHRoZSBvdXRlciBU
RFogZW52aXJvbm1lbnQgd2hlbiBjcmVhdGluZyBGdW5jdGlvbkV4ZWN1dGFibGVzIGR1cmluZyBi
eXRlY29kZSBnZW5lcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTNkOGFiMGE0NzA5NmQwZDExM2U3ODNhZGQxNTQyOGY1Nzg0YzI1YS4uZTcxNmM2MTk5ZTA5OWUx
NjYxMzQ3YjQyOWQ1YjcyYmFiZmM2ZTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtODY3LDYgKzg2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCiAgICAgcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmgKICAgICBydW50aW1lL0Z1enplckFnZW50LmgKKyAgICBydW50
aW1lL0dhdGUuaAogICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNldC5oCiAgICAgcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAzZTdlMWNiMmE5YWRjZDhk
OGZjZmRlZDY1MDRmNGE2ODYyYmFhODkuLmNiYjk4MTYxY2JjMzgxOTIwYmQ4ZjU2ZTgwYTZkYzk5
ZWI1MDEwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODUzLDYgKzE4NTMs
NyBAQAogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxh
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2
NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJ
RTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJl
bmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZF
RENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAg
LyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyog
SW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGlt
ZUZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBE
OTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwu
aCAqLzsgfTsKQEAgLTUwNjEsNiArNTA2Miw3IEBACiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgx
OCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JP
U1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcw
MDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzI4MCw2ICs3MjgyLDcgQEAKIAkJCQlFMzNBOTQ5MjIyNTUzMjI5
MDBENDJCMDYgLyogRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1
OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovLAogCQkJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5
MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkxMjUzRkE4N0UwMEJB
NjlBMCAvKiBHYXRlLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAg
LTk3MDEsNiArOTcwNCw3IEBACiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0
aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0E5NDk3MjI1NTMyMzMwMEQ0MkIw
NiAvKiBGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDRkFEMzYyMzcyREFEMDAw
MjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzcxMTk5
MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0Qx
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGlu
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAppbmRleCBiM2NlMTc3OTJkMDE2N2Y0ZWM3YmVjY2E0
ZmRlODVjNDVjYmIxMGIwLi5lNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlv
bkxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0
aW9uTGlzdC5jcHAKQEAgLTI2LDYgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSklUT3BlcmF0aW9uTGlzdC5oIgogCisjaW5jbHVkZSAiR2F0ZS5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIEpTQyB7CiAKIExhenlOZXZlckRlc3Ryb3llZDxKSVRPcGVyYXRpb25MaXN0
PiBqaXRPcGVyYXRpb25MaXN0OwpAQCAtNDUsMTggKzUzLDIyIEBAIHZvaWQgSklUT3BlcmF0aW9u
TGlzdDo6aW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikK
IHN0YXRpYyBTVVBQUkVTU19BU0FOIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQb2ludGVycyhIYXNo
TWFwPHZvaWQqLCB2b2lkKj4mIG1hcCwgY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0
IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNv
bnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBmb3IgKGNvbnN0IHVpbnRwdHJf
dCogY3VycmVudCA9IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsK
LSAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZv
aWQqPigqY3VycmVudCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9z
dEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRp
b25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgSlNDX0pJVF9DQUdFRF9QT0lOVEVSX1JFR0lT
VFJBVElPTigpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAoY29uc3QgdWludHB0
cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7
ICsrY3VycmVudCkgewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0g
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVD
b2RlUHRySW1wbDxPcGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQuaXNOZXdFbnRyeSk7CisjZW5kaWYKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9F
TkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5I
b3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgeworICAgICAgICAgICAgdm9pZCog
Y29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkp
OworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFkZChjb2Rl
UHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRhZz4oY29kZVB0
cikpOworICAgICAgICB9CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0g
YmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgewor
ICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0
PHZvaWQqPigqY3VycmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAg
ICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPE9wZXJhdGlv
blB0clRhZz4oY29kZVB0cikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMsNiArODUsNTYg
QEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29y
ZSgpCiAjZW5kaWYKIH0KIAordm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJz
SW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCkKK3sKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9W
QUxJREFUSU9OKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKworI2RlZmluZSBMTElOVF9PUChuYW1lKSBcCisgICAg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50Ojpn
ZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksIFwKKyAgICBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obmFtZSkpLAorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihu
YW1lLCAuLi4pIFwKKyAgICBMTElOVF9PUChuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKQorCisgICAg
ICAgIGNvbnN0IHVpbnRwdHJfdCBvcGVyYXRpb25zW10gPSB7CisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSksCisgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
KSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSkpLAorICAgICAg
ICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPih3
YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscykpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PihsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKSksCisg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KSksCisK
KyAgICAgICAgICAgIExMSU5UX09QKG9wX2NhdGNoKQorICAgICAgICAgICAgTExJTlRfT1AobGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpCisKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NB
VElPTihvcF9nZXRfYnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Z2V0X2J5X3ZhbCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlf
aWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKwor
ICAgICAgICAgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisg
ICAgICAgICAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJOX0xPQ0FUSU9OKQor
ICAgICAgICB9OworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBh
ZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIG51bGxw
dHIsIG51bGxwdHIsIG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJSQVlfTEVOR1RIKG9w
ZXJhdGlvbnMpKTsKKyN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KKyAgICB9KTsKKyNlbmRp
ZgorfQorCisKIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRk
ZXIoY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwg
Y29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3Bl
cmF0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5kZXggMDk4NDkz
ZjUwYjJhZDMzY2QxZDk3NTc0YTI4M2U5ZmY4Yjk2ODM2OS4uNWE0MGZmN2M4Y2ZhZDZiNDIwMzc3
M2JkMjRhZDU1N2I0Y2U0MjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKQEAgLTM5LDEyICszOSwxNSBAQCBjbGFzcyBKSVRP
cGVyYXRpb25MaXN0IHsKIAogICAgIHZvaWQqIGNvbnRhaW5zKHZvaWQqIHBvaW50ZXIpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiBjb25zdGV4cHIoQVNTRVJUX0VOQUJMRUQpCi0gICAgICAgICAg
ICByZXR1cm4gbV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50
ZXIpKTsKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorICAgICAgICByZXR1
cm4gbV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsK
KyNlbHNlCiAgICAgICAgIHJldHVybiBwb2ludGVyOworI2VuZGlmCiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKTsKKyAgICBzdGF0aWMg
dm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCk7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihj
b25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRp
b25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAppbmRleCA0NWI0YjNiNDY5Njg1NTJkN2RhYzk3ODhhZmY2Y2YwYjQz
ZGIyNmM2Li40YzlhOWViYTRiNjRmNDFjMTBlOTQ0ZGYyNDM4YTZmZGVhMTdiYTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaApAQCAtMzM5Miw2ICszMzkyLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuYnIodGFyZ2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0
ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5i
cihkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBh
ZGRyZXNzLCBQdHJUYWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMzll
YTE1MTE0NzYxYTAwZTAwMDUwMzEwMGJlNzZiZGU0NGEyZjhjNC4uZDE4N2Q2OTMwZTZmZDlmNjY4
Mzc5OGRhMzM5YzVhMTM2ZDAzNGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMzIsNiArMzIsOSBAQAog
I2luY2x1ZGUgIkFSTTY0RUFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5j
bHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtMTEwLDIwICsxMTMsMjggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4oLTEpOwog
CiAgICAgZW51bSBjbGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAgIENGdW5jdGlvbkNh
bGwsCi0gICAgICAgIE90aGVyQ2FsbAorICAgICAgICBKSVRDYWxsLAorICAgICAgICBOYXRpdmVD
YWxsLAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEp1bXBTaWduYXR1cmVUeXBlIHsKKyAgICAg
ICAgSklUSnVtcCwKKyAgICAgICAgTmF0aXZlSnVtcCwKICAgICB9OwogCiAgICAgdGVtcGxhdGU8
Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFRydXN0
ZWRQdHIoUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5s
YWJlbCgpOwogICAgICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAg
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNp
Z25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJh
YXooZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19K
SVRfQ0FHRURfQ0FMTCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIpOworI2VuZGlmCisg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIoZGF0YVRlbXBSZWdp
c3RlciwgdGFnR1BSKTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExhYmVsID0gbV9hc3Nl
bWJsZXIubGFiZWwoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFSTTY0
QXNzZW1ibGVyOjpnZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFiZWwsIHBvaW50ZXJM
YWJlbCkgPT0gUkVQQVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAgLTEzMiw1MSArMTQz
LDUzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
QVJNNjQgewogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnIHRhZykKICAgICB7
Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJBUk02NDo6Y2FsbCh0YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0
clRhZykKLSAgICAgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlw
ZTo6Q0Z1bmN0aW9uQ2FsbD4oKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcp
LCBBUk02NFJlZ2lzdGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2Fs
bFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAg
aWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJVENhbGw+KEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0
dXJlVHlwZTo6TmF0aXZlQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAg
IHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YWdH
UFIpOworICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5h
dGl2ZUNhbGw+KHRhZ0dQUik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5
cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFJlZ2lzdGVyKFJlZ2lzdGVySUQg
dGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAg
ICBVTlVTRURfUEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BS
KTsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5
cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5ibHJhYXoodGFyZ2V0R1BSKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAg
SlNDX0pJVF9DQUdFRF9DQUxMKHR5cGUsIHRhcmdldEdQUiwgdGFnR1BSKTsKKyNlbmRpZgorICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFiKHRhcmdldEdQUiwgdGFn
R1BSKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9u
ZSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQot
ICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCB0
YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIHJl
dHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KHRhcmdl
dEdQUik7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBO
b1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3Rl
cnM6OmxyKTsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6
T3RoZXJDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIGlmIChj
YWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4odGFyZ2V0R1BSLCBB
Uk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWdu
YXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIs
IFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxD
YWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgICAg
IHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRy
ZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRy
VGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwoYWRkcmVz
cywgdGFnKTsKLQorICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcg
IT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVt
cFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KQEAgLTE5Nyw5MCArMjEwLDEyOSBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKIAogICAgIEFM
V0FZU19JTkxJTkUgSnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6anVt
cCgpOyB9CiAKLSAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZyB0YWcp
CisgICAgdGVtcGxhdGU8SnVtcFNpZ25hdHVyZVR5cGUgdHlwZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmFySnVtcFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRh
Z0dQUiA9IEludmFsaWRHUFIpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7Cisg
ICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19K
SVRfQ0FHRURfRkFSX0pVTVAodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CisgICAgfQorCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBQdHJU
YWcgdGFnKQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKKyAgICAg
ICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAg
ICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwog
CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICAgICAgUmVnaXN0
ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0g
ICAgICAgIGZhckp1bXAodGFyZ2V0LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVl
VHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBS
ZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlH
UFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25h
dHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAK
LSAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgdGFnKQorICAg
IHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRhZykKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0
YXJnZXQsIHRhZyk7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIFJlZ2lzdGVySUQg
ZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCk7CisgICAgICAgIG1vdmUodGFyZ2V0LCB0YXJnZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcp
ID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxK
dW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6
Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lk
IGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZvaWQgZmFySnVtcChS
ZWdpc3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICBp
ZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJn
ZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1
bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBD
RnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgdGFnR1BSKQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9h
ZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyks
IGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZl
cnNpdHlHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJ
VEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0
YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0g
ICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAh
PSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAgIGZhckp1bXBSZWdp
c3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAg
IH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKKyAg
ICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BS
KQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisgICAgICAgIFJl
Z2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgbG9h
ZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lz
dGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAg
fQogCi0gICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICB2b2lkIGZh
ckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNT
RVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBS
ZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwor
ICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAg
ICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1w
UmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJz
aXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFn
IHRhZykKICAgICB7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcg
IT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNo
ZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0
YWcpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAg
ICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0
R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVn
aXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5
R1BSKTsKICAgICB9CiAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Ms
IFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsK
LQorICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJU
YWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6
OkpJVCk7CiAgICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQ
UiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7CiAgICAgICAg
IGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewotICAgICAgICBSZWdp
c3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChB
ZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCB0YWcpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+
KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmV0KCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7CisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
ICAgICBKU0NfSklUX0NBR0VEX1JFVCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDBj
NzU5N2JhZjY0MjY2NDk5NjM0YTU5ODAxN2JmYjY0YzMxNmE1NjQuLjJjOWI4ZmY4MDk1MTZlYjA3
NzQ0YmRmZjgyNjc3YTBjNmM0ZmRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzE5LDYgKzE3MTksMTIg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwogICAgIH0K
IAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsK
KyAgICAgICAgbW92ZSh0YXJnZXQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICAvLyBBZGRyZXNzIGlzIGEg
bWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZv
aWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBl
NjNhYjQ3NTVmZjhhMWIwNjk3Y2NkNzNiNjIyMDIyZDZlYzAxOTYzLi5hZGFkNTRjYjAyNjE3ZDEx
OTcxYmIyNDVlMGEwM2Y0ZDhkYWRmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwMDQsNiArMjAwNCwxMyBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAg
dm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAgICAg
ICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5q
cihNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgIH0K
KwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAg
ICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMjhmYWUyZTcy
ZjI1NjU3ZTYxMzMwNWYyMDAzZGZjYmVhNWVlY2E5YS4uNzZkZGI1NzY5NGRhMjRmNGFlODA1YjA0
OTNiNDJhOGU2NDJmMzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1MCw2ICsyNzUwLDEy
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHRhcmdldCk7
CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcp
CisgICAgeworICAgICAgICBtb3ZlKHRhcmdldCwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgLy8g
QWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1
bXAgdG8KICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXgg
MmZlZDE4MmU0NTdmNzQ2NjI2NWY2NWIxNGM1OTQzMWYyM2U4NGFkMS4uMDU3YjMwNzhjMmI3ZTg2
OTM5MzJiOTA1ZjE5NGQzZjc3YjQ2NDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xNDAzLDYgKzE0MDMsNyBAQAogb3AgOmxsaW50
X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9v
c3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3Jf
ZXhpdF90cmFtcG9saW5lCitvcCA6bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUKIG9wIDpmdXp6
ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6bGxpbnRfZ2V0X2hvc3RfY2FsbF9y
ZXR1cm5fdmFsdWUKIG9wIDpsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCkBAIC0xNDE5
LDYgKzE0MjAsNDAgQEAKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5j
dGlvbl9wcm9sb2d1ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24K
K29wIDpvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9v
cGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9zbG93X3JldHVy
bl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWls
X2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgor
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsCitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2Nh
bGwKK29wIDpqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdAorb3AgOmpzX3RyYW1wb2xpbmVfb3Bf
aXRlcmF0b3JfbmV4dAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbgorb3AgOmpz
X3RyYW1wb2xpbmVfb3BfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxf
c2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29wIDpqc190cmFtcG9s
aW5lX29wX2NhbGxfdmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxf
dmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHNfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdwor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29w
X2l0ZXJhdG9yX25leHRfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbl9z
bG93CitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a191bnRhZworb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tfdGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrX3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGwK
K29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscworb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfaW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3RscworCiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwogCiBiZWdpbl9zZWN0aW9u
IDpXYXNtLApAQCAtMTQzMyw2ICsxNDY4LDExIEBACiAKIG9wIDp0aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lCiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfbm9fdGxz
X3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCitvcCA6
Y2FsbF9pbmRpcmVjdF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKICMgRklYTUU6IFdhc20gYW5k
IEpTIExMSW50IHNob3VsZCBzaGFyZSBjb21tb24gb3Bjb2RlcwogIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTUwM2JmMDM4NDdhNjQ4NTMzOTExMjc3
NjhkNzAyNTBlODlhNTM4Li5iMDYxNTBmY2NmNGM3ZGRhNWU1MWNjNWZhZDYzY2QzMTFkMTgyMzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0zMjAsNiArMzIwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGxsaW50
X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb246CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0
X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9l
eGl0X3RyYW1wb2xpbmU6CisgICAgY2FzZSBub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZToKICAg
ICBjYXNlIGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQ6CiAgICAgY2FzZSBvcF9p
dGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRf
cmV0dXJuX2xvY2F0aW9uOgpAQCAtMzMxLDggKzMzMiw0MCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSQogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1
cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRl
cmF0b3Jfb3Blbl9zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHRfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfcmV0dXJuX2xv
Y2F0aW9uOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9u
OgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF9jYWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSB3YXNt
X2Z1bmN0aW9uX3Byb2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190
bHM6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGw6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX3RhaWxfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0Ogor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0OgorICAgIGNhc2UganNfdHJh
bXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxs
X3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93OgorICAgIGNh
c2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfb3BfY2FsbF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxf
Y2FsbF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50c19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1
Y3RfdmFyYXJnc19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xv
dzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93OgorICAgIGNh
c2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3c6CisgICAgY2FzZSBqc190cmFt
cG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnOgorICAgIGNh
c2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWc6
CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKKyAgICBjYXNlIHdhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAK
aW5kZXggZGQ2NjZmYWE4M2U4MzUwOWU2NWIwNzU1NzYyMmYwOGE5NDk0MjFiZC4uYWM0YjhjNTcz
YjgyNmI2YTMwYzYzZmVkYjQyNThiNWFmYmViNTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTM4LDIx
ICsxMzgsMjEgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0
KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVy
blBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXgg
Y2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtp
bmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9T
UkV4aXRQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tG
b3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFt
ZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCiB7CiAgICAg
Y2FsbGVySXNMTEludCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBiYXNlbGlu
ZUNvZGVCbG9ja0ZvckNhbGxlci0+aml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1
bms7CiAKICAgICBpZiAoY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAg
IGlmICghY2FsbGVySXNMTEludCkKICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2Fs
bGVyLT5tX2hhc0xpbmtlZE9TUkV4aXQgPSB0cnVlOwotICAgICAgICByZXR1cm4gTExJbnQ6Omdl
dENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRf
Y2FsbF90cmFtcG9saW5lKTsKKyAgICAgICAgcmV0dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhp
dEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICB9CiAKLSAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4ganVtcFRhcmdldDsKIAogICAgIGNvbnN0
IEluc3RydWN0aW9uJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxs
ZXItPmluc3RydWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAo
Y2FsbGVySXNMTEludCkgewotI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNh
bGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRy
eVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lk
ZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIExM
SW50OjpyZXR1cm5Mb2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9jYXRpb24sIGNhbGxJbnN0
cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxs
S2luZCkgewogICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogewpAQCAtMjA5LDcg
KzIwOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1
cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgYmFzZWxp
bmVDb2RlQmxvY2tGb3JDYWxsZXItPmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2Fs
bEJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZv
KTsKIAotICAgICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxv
Y2F0aW9uKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJn
ZXQgPSBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLnJldGFnZ2VkPE9TUkV4aXRQ
dHJUYWc+KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMjYsMTMgKzIy
NiwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJu
UEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICAgICAgICAgIC8vIDYuIChC
KSBnZXRzIE9TUiBleGl0LiAoQikgYXR0ZW1wdHMgdG8gc2VhcmNoIGZvciBTdHJ1Y3R1cmVTdHVi
SW5mbyBpbiAoQSkgZm9yIFB1dEJ5SWQgKG9yaWdpbmFsbHksIHB1dF9ieV92YWwpLiBCdXQgaXQg
ZG9lcyBub3QgZXhpc3Qgc2luY2UgKEEpJ3MgSklURGF0YSBpcyBjbGVhcmVkIG9uY2UuCiAgICAg
ICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNh
bGxlci0+ZmluZEJ5VmFsSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29kZUluZGV4KSk7CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnlWYWxJbmZvKTsKLSAgICAgICAgICAgICAgICBq
dW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+
KCk7CisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGJ5VmFsSW5mby0+ZG9uZVRhcmdldC5y
ZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBiYXNl
bGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVj
b2RlSW5kZXgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAg
ICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uLnJldGFnZ2VkPEpTRW50
cnlQdHJUYWc+KCk7CisgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVMb2Nh
dGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0g
aml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKICAgICAgICAgICAgIGF1dG8g
Y2FsbEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldCA9IGNh
bGxlclJldHVyblBDKGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBjYWxsQnl0ZWNvZGVJbmRl
eCwgdHJ1ZUNhbGxlckNhbGxLaW5kLCBjYWxsZXJJc0xMSW50KTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVyUmV0dXJu
UEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0cnVlQ2Fs
bGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOwogCiAgICAgICAgICAgICBpZiAodHJ1ZUNhbGxl
ci0+aW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAt
NDAyLDExICs0MDIsMTEgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgaWYgKGV4aXRUb0xM
SW50KSB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgoKTsKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVj
dGlvbiA9ICpjb2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4
KS5wdHIoKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRl
c3RpbmF0aW9uOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4g
ZGVzdGluYXRpb247CiAgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4o
Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAg
ICAgICBlbHNlIAotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgZGVzdGluYXRp
b24gPSBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKIAogICAg
ICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBHUFJJ
bmZvOjpyZWdUMik7CkBAIC00MTYsMjIgKzQxNiwyMiBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1Rh
cmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkK
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0Zv
ckV4aXQtPm1ldGFkYXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVH
UFIpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJs
b2NrRm9yRXhpdC0+aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgTExJbnQ6OlJlZ2lzdGVyczo6
cGJHUFIpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihieXRl
Y29kZUluZGV4Lm9mZnNldCgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGNHUFIpOwotICAgICAgICBq
dW1wVGFyZ2V0ID0gZGVzdGluYXRpb24ucmV0YWdnZWQ8T1NSRXhpdFB0clRhZz4oKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICBqdW1wVGFyZ2V0ID0gZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb2RlQmxvY2tGb3JFeGl0LT5tX2hh
c0xpbmtlZE9TUkV4aXQgPSB0cnVlOwogCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4
ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGV4
aXRJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50Ojpn
ZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSk7
CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
Y29kZUJsb2NrRm9yRXhpdC0+Ynl0ZWNvZGVJbmRleEZvckV4aXQoZXhpdEluZGV4KSA9PSBleGl0
SW5kZXgpOwotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRD
b2RlTWFwKCkuZmluZChleGl0SW5kZXgpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2Rl
QmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCkuZmluZChleGl0SW5kZXgpLnJldGFnZ2VkPE9TUkV4
aXRQdHJUYWc+KCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwog
Ci0gICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFn
PigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0KIAogICAgIGppdC5hZGRQdHIoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2Nr
Rm9yRXhpdCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKaW5kZXggMzkx
MTRlYTY3NzAwMmE5ODJmMmViODFlN2QyOGY4NmYyMjhmNmQwZC4uZGJhMGZlMzIyYmY4ODFjOTVj
MjJkYjg1MDYxNjI0MjA0YTZhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHZvaWQgaGFuZGxlRXhpdENvdW50cyhWTSYsIEND
YWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxG
cmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5k
SnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29k
ZUluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQgY2FsbGVyS2luZCwgYm9vbCYgY2FsbGVySXNM
TEludCk7CiBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5saW5lQ2FsbEZy
YW1lKiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpOwog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBmZjlhOGFmZDA1OTQ1YzI5
Yjk3OGMxZmYzY2Y5N2EyMjJiYjRiOTIxLi45YmU2NGJiZGYwZjI4ZmQ1NzRhNDI1ODg0Y2Q1MzQx
ZGYxYTY2NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKQEAgLTQ4LDYgKzQ4LDE4IEBACiAjaW5jbHVkZSA8bWFjaC9tYWNoLmg+
CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNp
bmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5B
QkxFKEpJVF9DQUdFKQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9S
X0pJVCBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FH
RSBNQVBfSklUCisjZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVQgMAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAor
I2VuZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIGV4dGVy
biAiQyIgewogICAgIC8qIFJvdXRpbmUgbWFjaF92bV9yZW1hcCAqLwogI2lmZGVmIG1pZ19leHRl
cm5hbApAQCAtMTM5LDggKzE1MSw4IEBAIHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklU
RW5hYmxlZChib29sIGVuYWJsZWQpCiAKICAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0g
MTsKICAgICAgICAgY29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9X
UklURSB8IFBST1RfRVhFQzsKLSAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklW
QVRFIHwgTUFQX0FOT04gfCBNQVBfSklUOwogICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NB
bGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzOworICAgICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFU
RSB8IE1BUF9BTk9OIHwgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSA/IE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVRfV0lUSF9KSVRfQ0FHRSA6IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQpOwogICAgICAgICB2
b2lkKiBhbGxvY2F0aW9uID0gbW1hcChudWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywg
ZmQsIDApOwogICAgICAgICBjb25zdCB2b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZh
aWx1cmUgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigtMSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1l
bW9yeUFsbG9jYXRpb25GYWlsdXJlLCAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVj
dXRhYmxlIG1lbW9yeSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBKSVQuIik7CkBAIC0zMjQsOSArMzM2
LDkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdGlhbGl6ZUpJVFBh
Z2VSZXNlcnZhdGlvbigpCiAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBKSVQg
Y29kZSBsb2dnaW5nIGJyb2tlbiBhbmQgc29tZSBvZiBKSVQgY29kZSBpcyBub3QgcmVjb3JkZWQg
Y29ycmVjdGx5LgogICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIHVzZSBjb21t
aXR0ZWQgcmVzZXJ2YXRpb24gaWYgd2UgbmVlZCBwZXJmIEpJVER1bXAgbG9nZ2luZy4KICAgICAg
ICAgaWYgKE9wdGlvbnM6OmxvZ0pJVENvZGVGb3JQZXJmKCkpCi0gICAgICAgICAgICByZXR1cm4g
UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRp
b25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklU
QUJMRSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZl
QW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNK
SVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgZmFsc2UpOwogI2Vu
ZGlmCi0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3VhcmRQYWdl
cyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJM
RV9QT09MX1dSSVRBQkxFLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6
cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklU
Q29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSk7CiAgICAgfTsKIAogICAgIHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbiA9IHRy
eUNyZWF0ZVBhZ2VSZXNlcnZhdGlvbihyZXNlcnZhdGlvbi5zaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgKaW5kZXggNzRkYWUyMjZmNTQ1YjdhYWFmMzQ3ODc0NDMzNjQyNzAwMTVi
ZDBhNC4uOGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODkyMWY2YWRkNmEzZDRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQ2NSw2ICs0NjUsMTAgQEAgY2xhc3MgR1BSSW5m
byB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
ID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IFg4NlJl
Z2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6
OmVheDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBYODZS
ZWdpc3RlcnM6OmVheDsKKyNpZiAhT1MoV0lORE9XUykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyB3YXNtU2NyYXRjaEdQUjEgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IEkgYmVsaWV2ZSB0aGF0IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRlYWQgaW4gdGhl
IHNlbnNlIHRoYXQgaXQganVzdCBjYXVzZXMgdGhlIHNjcmF0Y2gKICAgICAvLyByZWdpc3RlciBh
bGxvY2F0b3IgdG8gc2VsZWN0IGEgZGlmZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3RlbnRpYWxseSBz
cGlsbCB0aGluZ3MuIEl0IHdvdWxkIGJlIGJldHRlcgpAQCAtNjM0LDcgKzYzOCw3IEBAIGNsYXNz
IEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMyA9IEFSTTY0UmVn
aXN0ZXJzOjp4MjI7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyByZWdDUzQgPSBBUk02NFJlZ2lzdGVyczo6eDIzOyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gQVJNNjRSZWdpc3RlcnM6OngyNDsg
Ly8gVXNlZCBieSBGVEwgb25seQotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNiA9
IEFSTTY0UmVnaXN0ZXJzOjp4MjU7IC8vIFVzZWQgYnkgRlRMIG9ubHkKKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gQVJNNjRSZWdpc3RlcnM6OngyNzsgLy8gbnVtYmVy
VGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6
OngyODsgLy8gbm90Q2VsbE1hc2sKQEAgLTY1NCw2ICs2NTgsOCBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAg
PSBBUk02NFJlZ2lzdGVyczo6eDg7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJl
c2VydmVkTm9uQXJndW1lbnRHUFIxID0gQVJNNjRSZWdpc3RlcnM6Ong5OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVy
czo6aXAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4OTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRj
aEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDEwOwogCiAgICAgLy8gR1BSUmVnIG1hcHBpbmcgaXMg
ZGlyZWN0LCB0aGUgbWFjaGluZSByZWdpc3RlciBudW1iZXJzIGNhbgogICAgIC8vIGJlIHVzZWQg
ZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBHUFIgUmVnaXN0ZXJCYW5rLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmNwcAppbmRleCAxOGU1ZmZlZTljYTM5M2I2ZTlmY2MxNDgwZTA3Mjc1MGM0NTI4ZmQ1Li5jNDUz
NDZlOTA0YTlkMTM3ZDc5NmRmMWY1MWM2OGQ5N2Y0MGViODI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBQb2x5bW9ycGhpY0NhbGxOb2RlOjp+UG9seW1vcnBoaWNDYWxsTm9k
ZSgpCiB2b2lkIFBvbHltb3JwaGljQ2FsbE5vZGU6OnVubGluayhWTSYgdm0pCiB7CiAgICAgaWYg
KG1fY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNh
c3NlbWJseSgpLCAiVW5saW5raW5nIHBvbHltb3JwaGljIGNhbGwgYXQgIiwgbV9jYWxsTGlua0lu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAiLCAiLCBtX2NhbGxMaW5rSW5mby0+Y29kZU9yaWdp
bigpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCksICJV
bmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uKCksICIsIGJjIyIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkuYnl0ZWNv
ZGVJbmRleCgpKTsKICAgICAgICAgbV9jYWxsTGlua0luZm8tPnVubGluayh2bSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXgg
NzFkZDk4MDI4ZjQ3ZTk5N2U1MjUzMDBiN2MwZDZhYWI5Y2JmMmE4My4uMzYyNzI1NTE0YzEwYzhh
OTIyZDVmMDMyMDVmYzkzMjNkMGU1N2JjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNDQsMTMgKzQ0LDE1IEBAIGlubGluZSB2b2lkIGVt
aXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBvaW50ZXJHUFIs
IFRhZ1R5cGUKIHsKICAgICBpZiAoIUFTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGlzTm9uWmVybyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgcG9pbnRlckdQUik7Ci0gICAgaml0LmFib3J0V2l0aFJlYXNvbihU
R0ludmFsaWRQb2ludGVyKTsKLSAgICBpc05vblplcm8ubGluaygmaml0KTsKLSAgICBqaXQucHVz
aFRvU2F2ZShwb2ludGVyR1BSKTsKLSAgICBqaXQudW50YWdQdHIodGFnLCBwb2ludGVyR1BSKTsK
LSAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7Ci0gICAgaml0LnBvcFRvUmVz
dG9yZShwb2ludGVyR1BSKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKKyAgICAgICAgaml0LmFib3J0V2l0aFJl
YXNvbihUR0ludmFsaWRQb2ludGVyKTsKKyAgICAgICAgaXNOb25aZXJvLmxpbmsoJmppdCk7Cisg
ICAgICAgIGppdC5wdXNoVG9TYXZlKHBvaW50ZXJHUFIpOworICAgICAgICBqaXQudW50YWdQdHIo
dGFnLCBwb2ludGVyR1BSKTsKKyAgICAgICAgaml0LmxvYWQ4KHBvaW50ZXJHUFIsIHBvaW50ZXJH
UFIpOworICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHBvaW50ZXJHUFIpOworICAgIH0KIH0KIAog
Ly8gV2Ugd2lsbCBqdW1wIGhlcmUgaWYgdGhlIEpJVCBjb2RlIHRyaWVzIHRvIG1ha2UgYSBjYWxs
LCBidXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IGJmYTRmM2JjOGVlMmI4OWY0MWI5Y2I5ODYwZjZmM2IzY2M4MWU1MjMuLmIwNTFkN2I4MzZjMWRh
NmQ4Y2YwNDE1ODMxODdjMDliNGIzZGM0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJKU0NDb25maWcuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCisjaW5j
bHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVk
ZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAKICNkZWZpbmUgU1RBVElD
X0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQsICJMTEludCBhc3N1bWVzICIgI2NvbmQp
CiAKLQogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBMTEludCB7CkBAIC00OSwxMiArNTAs
MjIgQEAgZXh0ZXJuICJDIiB2b2lkIHdhc21fZW50cnkodm9pZCosIHZvaWQqLCB2b2lkKik7CiAK
ICNlbmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVy
biAiQyIgdm9pZCB2bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAi
QyIgdm9pZCB2bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lk
IHRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFpbENh
bGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGV4Y2Vw
dGlvbkhhbmRsZXJUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIHJldHVybkZyb21M
TEludFRyYW1wb2xpbmUodm9pZCk7CisjZW5kaWYKKwogdm9pZCBpbml0aWFsaXplKCkKIHsKICNp
ZiBFTkFCTEUoQ19MT09QKQogICAgIENMb29wOjppbml0aWFsaXplKCk7CiAKICNlbHNlIC8vICFF
TkFCTEUoQ19MT09QKQorCiAgICAgbGxpbnRfZW50cnkoJmdfanNjQ29uZmlnLmxsaW50Lm9wY29k
ZU1hcCwgJmdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUxNiwgJmdfanNjQ29uZmlnLmxs
aW50Lm9wY29kZU1hcFdpZGUzMik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC03Miw2
ICs4MywxMzIgQEAgdm9pZCBpbml0aWFsaXplKCkKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJh
bXBvbGluZTsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0
aW9uc1tpXSA9IHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKICAgICB9CisK
KyAgICBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZv
ckxMSW50KCk7CisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oR2F0ZTo6aml0Q2FnZVB0cildID0gaml0Q2FnZVB0clRodW5rKCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisKKyNkZWZpbmUgSU5JVElBTElaRV9KU19HQVRFKG5hbWUsIHRh
ZykgXAorICAgIGRvIHsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmODsgXAorICAg
ICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmMTY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjMyOyBcCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAg
ICAgICBjb2RlUmVmOC5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZv
aWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAj
bmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMTYuY29uc3RydWN0KGNyZWF0ZUpTR2F0ZVRo
dW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+
KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNf
cmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7IFwKKyAgICAgICAgICAg
IGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQq
LCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFn
LCAjbmFtZSAiX3dpZGUzMiIpKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICBj
b2RlUmVmOC5jb25zdHJ1Y3QoTExJbnQ6OmdldENvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pihqc190cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMTYuY29uc3Ry
dWN0KExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJh
bXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjMyLmNvbnN0cnVjdChMTElu
dDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVf
IyNuYW1lKSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVN
YXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUpXSA9IGNvZGVSZWY4LmdldCgpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lmdh
dGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMTYpXSA9IGNvZGVS
ZWYxNi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0Nv
bmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lk
ZTMyKV0gPSBjb2RlUmVmMzIuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAg
ICB9IHdoaWxlICgwKTsKKworICAgIEpTQ19KU19HQVRFX09QQ09ERVMoSU5JVElBTElaRV9KU19H
QVRFKQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZGVmaW5lIElOSVRJQUxJWkVfV0FT
TV9HQVRFKG5hbWUsIHRhZykgXAorICAgIGRvIHsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmODsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmMTY7IFwKKyAgICAgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPj4gY29kZVJlZjMyOyBcCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQo
KSkgeyBcCisgICAgICAgICAgICBjb2RlUmVmOC5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9s
b2NhdGlvbikpLCB0YWcsICNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1
Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRh
ZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTE2
IikpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KGNyZWF0ZVdhc21HYXRlVGh1
bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4o
TExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUzMiIpKTsgXAorICAgICAgICB9IGVs
c2UgeyBcCisgICAgICAgICAgICBjb2RlUmVmOC5jb25zdHJ1Y3QoTExJbnQ6OmdldENvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPih3YXNtX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAg
ICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPih3YXNtX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAg
IGNvZGVSZWYzMi5jb25zdHJ1Y3QoTExJbnQ6OmdldFdpZGUzMkNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPih3YXNtX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgfSBcCisgICAg
ICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6
Om5hbWUpXSA9IGNvZGVSZWY4LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisg
ICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdh
dGU6Om5hbWUjI193aWRlMTYpXSA9IGNvZGVSZWYxNi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lkZTMyKV0gPSBjb2RlUmVmMzIuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxlICgwKTsKKworICAgIEpTQ19XQVNN
X0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX1dBU01fR0FURSkKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKKworICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcs
IE9wZXJhdGlvblB0clRhZz4oJnZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpLCBKU0VudHJ5
UHRyVGFnLCAidm1FbnRyeVRvSmF2YVNjcmlwdCIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFn
Q29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZ2
bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OnZtRW50cnlUb0phdmFTY3Jp
cHQpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRl
VGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRh
Zz4odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKSwgSG9zdEZ1bmN0aW9uUHRyVGFnLCAidm1FbnRy
eVRvTmF0aXZlIikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVu
Y3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50cnlUb05hdGl2ZVRyYW1w
b2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihHYXRlOjp2bUVudHJ5VG9OYXRpdmUpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoY3JlYXRlVGFpbENhbGxHYXRlKEpTRW50cnlQdHJUYWcpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4
ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+KCZ0YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lKSkpKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
dGFpbENhbGxKU0VudHJ5UHRyVGFnKV09IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoY3JlYXRlVGFpbENhbGxHYXRlKEpTRW50cnlTbG93UGF0aFB0clRhZykpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZSkpKSk7Cisg
ICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdh
dGU6OnRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoUHRyVGFnKV0gPSBjb2RlUmVmLmdldCgpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnPigmZXhjZXB0aW9uSGFuZGxlclRyYW1wb2xpbmUpKSkpOworICAgICAgICBn
X2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpleGNl
cHRpb25IYW5kbGVyKV0gPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgIH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KHJl
dHVybkZyb21MTEludEdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZyZXR1cm5G
cm9tTExJbnRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6cmV0dXJuRnJvbUxMSW50KV0gPSBjb2RlUmVm
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKworICAgIGlmIChPcHRp
b25zOjp1c2VKSVQoKSkgeworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihHYXRlOjpsb29wT1NSRW50cnkpXSA9IGxvb3BPU1JFbnRyeUdhdGVU
aHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBnX2pzY0NvbmZpZy5s
bGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjplbnRyeU9TUkVudHJ5KV0g
PSBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdh
dGU6Ondhc21PU1JFbnRyeSldID0gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisjZGVmaW5lIElOSVRJQUxJWkVfVEFHX0FORF9VTlRB
R19USFVOS1MobmFtZSkgXAorICAgIGRvIHsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiB0YWdD
b2RlUmVmOyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHVudGFnQ29kZVJlZjsgXAorICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsgXAorICAgICAgICAgICAgdGFnQ29kZVJlZi5jb25z
dHJ1Y3QodGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBP
cGVyYXRpb25QdHJUYWc+KG5hbWUjI1RhZ0dhdGVBZnRlcikpKTsgXAorICAgICAgICAgICAgdW50
YWdDb2RlUmVmLmNvbnN0cnVjdCh1bnRhZ0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihuYW1lIyNVbnRhZ0dhdGVBZnRlcikpKTsg
XAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVjdChM
TEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNu
YW1lIyNfdGFnKSk7IFwKKyAgICAgICAgICAgIHVudGFnQ29kZVJlZi5jb25zdHJ1Y3QoTExJbnQ6
OmdldENvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5lXyMjbmFtZSMj
X3VudGFnKSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVN
YXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1RhZyldID0gdGFnQ29kZVJlZi5n
ZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0NvbmZpZy5s
bGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNVbnRhZyldID0g
dW50YWdDb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgfSB3
aGlsZSAoMCk7CisKKyAgICBJTklUSUFMSVpFX1RBR19BTkRfVU5UQUdfVEhVTktTKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKKyAgICBJTklUSUFMSVpFX1RBR19BTkRfVU5U
QUdfVEhVTktTKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworI2Vu
ZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggY2I0NDVmNWU5MmNlNTI2
NGUyNzM2NTljZDA4NzA1NDYzZTNkYzA3ZC4uMDVjMDIxYTE4ODIwZjU5MzE3OWU0NTZiMGRmNGUz
MWZlYTI4MTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAt
MjA0LDYgKzIwNCw5MyBAQCBBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMzJDb2RlRnVu
Y3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKworaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoV2FzbU9wY29kZUlEIGlkKQorewor
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmln
LmxsaW50Lm9wY29kZU1hcFtudW1PcGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPcGNvZGU+KGlkKTsKKyNlbmRpZgorfQorCitpbmxpbmUgT3Bjb2RlIGdldE9w
Y29kZVdpZGUxNihXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2W251
bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlkKTsKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0
T3Bjb2RlV2lkZTMyKFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19PUENPREVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMzJb
bnVtT3Bjb2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8UHRyVGFn
IHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gZ2V0Q29kZVB0
cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZShvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRh
Z0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjx0YWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVz
cyk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjx0YWc+IGdldFdpZGUxNkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQor
eworICAgIHZvaWQqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVX
aWRlMTYob3Bjb2RlSUQpKTsKKyAgICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRy
VGFnLCB0YWc+KGFkZHJlc3MpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFn
Pjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQ
dHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRX
aWRlMzJDb2RlUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlV2lkZTMyKG9wY29kZUlEKSk7Cisg
ICAgYWRkcmVzcyA9IHJldGFnQ29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsK
KyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhhZGRyZXNzKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19J
TkxJTkUgTExJbnRDb2RlIGdldENvZGVGdW5jdGlvblB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQp
Cit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTElu
dENvZGU+KGdldENvZGVQdHI8dGFnPihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cisj
ZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0Q29kZVB0cjx0
YWc+KG9wY29kZUlEKS50ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQor
Cit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBMTEludENvZGUgZ2V0V2lkZTE2
Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyNpZiBDT01QSUxFUihN
U1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTE2Q29k
ZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRyPHRhZz4ob3Bj
b2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMzJDb2RlRnVu
Y3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMzJDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNvZGVJRCku
dGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKICNl
bHNlCiBBTFdBWVNfSU5MSU5FIHZvaWQqIGdldENvZGVQdHIoT3Bjb2RlSUQgaWQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IDZk
NmQyNDlmYTYzNGZkN2RlNTZiOWMxNWUzODQxYTNmMmI5ZjExZTguLmMxYTI4ZjBhNDllNTFjODU0
YWQzNjFiZTVkYjBlODE4M2U5NDRmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC0zNSw2ICszNSwyMiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAi
QyIgdm9pZCBqc1RyYW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2
b2lkIGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1Ry
YW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBq
c1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJD
IiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQcm9sb2d1ZSh2b2lk
KTsKK2V4dGVybiAiQyIgdm9pZCBqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tQcm9sb2d1ZSh2b2lkKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KK3N0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZW50cnlwb2ludFRyYW1wb2xp
bmUoUHRyVHlwZSBhZGRyZXNzKQoreworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0Nv
ZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgSlNFbnRyeVB0clRhZz4oYWRkcmVzcykpKTsK
K30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY29kZUJs
b2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKQEAgLTcyLDE0ICs4OCwyMiBAQCBzdGF0aWMgdm9p
ZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIHN0
YXRpYyBEaXJlY3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUo
ZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9ndWUp
LCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNo
ZWNrUHJvbG9ndWUpLmNvZGUoKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6
U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZWxzZQogICAgICAgICAgICAgaml0Q29kZSA9IG5l
dyBEaXJlY3RKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUpLCBnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgc3RhdGljIERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcg
RGlyZWN0SklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZv
ckNvbnN0cnVjdFByb2xvZ3VlKSwgZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9saW5lRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUpLmNvZGUoKSwgSklUVHlwZTo6SW50
ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZWxzZQog
ICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRy
eVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIGdldENvZGVQ
dHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2VuZGlmCiAgICAgICAgIH0pOwogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENv
ZGUobWFrZVJlZigqaml0Q29kZSkpOwogICAgIH0KQEAgLTEwMyw3ICsxMjcsMTEgQEAgc3RhdGlj
IHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGlj
IE5hdGl2ZUpJVENvZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBv
bGluZShqc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyNlbHNlCiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVm
PEpTRW50cnlQdHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRl
clRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6
U2hhcmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtl
UmVmKCpqaXRDb2RlKSk7CiB9CkBAIC0xMjYsNyArMTU0LDExIEBAIHN0YXRpYyB2b2lkIHNldFBy
b2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVK
SVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNU
cmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50
cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7Cisj
ZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZW5kaWYKICAgICB9KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJl
Zigqaml0Q29kZSkpOwogfQpAQCAtMTQ5LDcgKzE4MSwxMSBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1
bGVQcm9ncmFtRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0
aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5l
KGpzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENv
ZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRU
eXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CiB9CkBAIC0xNjAsNyArMTk2LDM0IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
RW50cnlwb2ludCgpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQogICAgICAgICByZXR1cm4g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRodW5rKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKLSAg
ICByZXR1cm4gZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9nZXRfaG9zdF9jYWxsX3Jl
dHVybl92YWx1ZSk7CisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlw
b2ludCgpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisg
ICAgICAgIHJldHVybiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0
clRhZz4oZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50
KE9wY29kZVNpemUgc2l6ZSkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1
c2VKSVQoKSkKKyAgICAgICAgcmV0dXJuIGdlbmVyaWNSZXR1cm5Qb2ludFRodW5rKHNpemUpOwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSBPcGNv
ZGVTaXplOjpOYXJyb3c6CisgICAgICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCk7CisgICAgY2FzZSBPcGNvZGVTaXpl
OjpXaWRlMTY6CisgICAgICAgIHJldHVybiBMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCk7CisgICAgY2FzZSBPcGNvZGVTaXpl
OjpXaWRlMzI6CisgICAgICAgIHJldHVybiBMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCk7CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBzZXRFbnRy
eXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5oCmluZGV4IDQzZWIyODY0MDg2NTc4NTZkMGI5YjFkMmRhNzYx
Yzg0ODQxZGJmZDguLjI1ZWU4MjNhZTljYmNlYWVhNWNkZDk1OGJjODJiNGU5OGI4NDdiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCisjaW5j
bHVkZSAiT3Bjb2RlU2l6ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDEsNSArNDIsNyBA
QCB2b2lkIHNldEVudHJ5cG9pbnQoQ29kZUJsb2NrKik7CiB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVy
Q291bnRGb3IoQ29kZUJsb2NrKik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2ludCgpOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlw
b2ludCgpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1
cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggYmJhMTIwYTdjNTU4NThmMzc3ZTc5YmI0MjlmNTlkNzk4ZTE2MzRkYS4uYTM0N2M2MjM5
YWNkZmQ5ZmUzMGQ1ODRmMDAwMzhjNGI1MGI5NjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgaW5saW5l
IEpTVmFsdWUgZ2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQpIHsgcmV0dXIKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9D
QUxMX0VORF9JTVBMKGNhbGxGcmFtZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgXAotICAg
IExMSU5UX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBTbG93UGF0aFB0
clRhZz4oY2FsbFRhcmdldCkpLCAoY2FsbEZyYW1lKSkKKyAgICBMTElOVF9SRVRVUk5fVFdPKChy
ZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnPihjYWxsVGFy
Z2V0KSksIChjYWxsRnJhbWUpKQogCiAjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZ2xvYmFsT2Jq
ZWN0LCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIF9fY3RfZ2xvYmFsT2JqZWN0ID0gKGdsb2JhbE9iamVjdCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICAgICAgdWludDY0X3QqIHB0ciA9IHZtLmdldExv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihwYyk7CiAgICAgICAgICpwdHIgKz0gY29kZUJsb2NrLT5s
bGludEV4ZWN1dGVDb3VudGVyKCkubV9hY3RpdmVUaHJlc2hvbGQ7CiAgICAgICAgIGlmICgqcHRy
ID49IE9wdGlvbnM6OmVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKQotICAgICAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihm
dXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KS5leGVjdXRhYmxlQWRkcmVzcygpLCBj
YWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CisgICAgICAgICAgICBMTElOVF9SRVRVUk5fVFdPKExM
SW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9pbnQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOwogICAgIH0KICAgICAK
ICAgICAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICByZXR1cm4gdmFyYXJnc1NldHVwPE9wQ29uc3RydWN0
VmFyYXJncz4oY2FsbEZyYW1lLCBwYywgQ29kZUZvckNvbnN0cnVjdCwgU2V0QXJndW1lbnRzV2l0
aDo6T2JqZWN0KTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZh
bChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCitpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Q
b2ludCkKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wQ2FsbEV2YWw+KCk7CkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBpbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBJbnN0cnVjdGlvbgogICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhieXRlY29kZS5tX2FyZ2MpOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZXJGcmFtZShj
YWxsRnJhbWUpOwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7Ci0gICAgY2FsbGVlRnJhbWUt
PnNldFJldHVyblBDKHJldHVyblBvaW50LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIGNhbGxl
ZUZyYW1lLT5zZXRSZXR1cm5QQyhyZXR1cm5Qb2ludC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENvZGVCbG9jayhudWxscHRyKTsKICAgICBjYWxsRnJh
bWUtPnNldEN1cnJlbnRWUEMocGMpOwogICAgIApAQCAtMTk3MCwxNyArMTk3MCwxNyBAQCBpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbgogICAgIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NhbGxfZXZhbCkKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywg
TExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9p
bnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6Omdl
bmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZTo6TmFycm93KSk7CiB9CiAKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWxfd2lkZTE2KQogewotICAgIHJl
dHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2V0V2lkZTE2Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIHJldHVy
biBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJpY1JldHVyblBvaW50
RW50cnlwb2ludChPcGNvZGVTaXplOjpXaWRlMTYpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMzIpCiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxF
dmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFs
KGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KE9wY29k
ZVNpemU6OldpZGUzMikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3Ry
Y2F0KQpAQCAtMjI2NSw4ICsyMjY1LDExIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlz
cGF0Y2hUb05leHRJbnN0cnVjdGlvbihUaHJvd1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrCiAKICAg
ICBpZiAoT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGNvZGVCbG9jay0+aml0VHlw
ZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspIHsKICAgICAgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIG5leHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKLSAgICAgICAgYXV0byBuZXh0Qnl0ZWNv
ZGUgPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPigqcGMubmV4dCgpLnB0cigpKTsK
LSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIG5leHRCeXRlY29kZS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KG5leHRQQywgTExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5yZXRhZ2dl
ZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQobmV4dFBDLCBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworI2VuZGlmCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDc4NTM2MGY0ODc2MDcxYWZkNjRh
ZDFjZmUxYmE4YmVhODM4YWIzZDIuLjZiZjJlNGQzYWExOTBjN2Y3OTM4Y2RkOTFkYWJhMTQ1YTY4
MzlmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApA
QCAtNDAsNiArNDAsMjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogCisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorCisjZGVmaW5lIEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BF
UkFUSU9OKG5hbWUpIFwKKyAgICBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0
XyMjbmFtZSwgbmFtZSkKKworI2RlZmluZSBKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElP
Tl9XSVRIX0RFQ0xBUkUobmFtZSkgXAorICAgIGV4dGVybiAiQyIgdm9pZCBuYW1lKHZvaWQpOyBc
CisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF8jI25hbWUsIG5hbWUp
CisKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGppdENhZ2VQdHJHYXRlQWZ0ZXIp
OworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdCk7
CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9OYXRpdmUpOworSlND
X0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRl
cik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9OYXRpdmVHYXRl
QWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRf
SklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVB
ZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xM
SU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
a1RhZ0dhdGVBZnRlcik7CisKKyNlbmRpZgorCiBuYW1lc3BhY2UgTExJbnQgewogCiAvLyBUaGVz
ZSB0aHVua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIG5lYXJDYWxsIHVzZWQgb24gSklUZWQg
Y29kZS4KQEAgLTUyLDcgKzczLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKIHsKICAgICBK
U0ludGVyZmFjZUpJVCBqaXQ7CiAKLSAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8SlNFbnRyeVB0clRh
Zz4odGFyZ2V0KTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJn
ZXQpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIENDYWxsSGVscGVyczo6UmVnaXN0
ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3Jh
dGNoR1BSc1swXTsKQEAgLTYwLDE2ICs4MSw1MyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwog
ICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwOwogI2VuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIo
dGFyZ2V0KSwgc2NyYXRjaCk7Ci0gICAgaml0LmZhckp1bXAoc2NyYXRjaCwgSlNFbnRyeVB0clRh
Zyk7CisgICAgaml0LmZhckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIs
IHRodW5rS2luZCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywg
IkxMSW50ICVzIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0KIAogdGVtcGxhdGU8UHRyVGFnIHRhZz4K
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQogewotICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzx0YWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpLCB0aHVua0tpbmQpOworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbzx0YWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+
CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZShPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQorewor
ICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKworICAgIExMSW50Q29kZSB0YXJnZXQgPSBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpOworICAgIGFzc2Vy
dElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3
YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOworI2Vsc2UKKyAg
ICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdU
MDsKKyNlbmRpZgorICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7CisgICAgaml0LmZh
ckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBqdW1wIHRvIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtL
aW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50KExMSW50Q29kZSB0
YXJnZXQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7
CisgICAgYXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKKyAgICBq
aXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMg
cmV0dXJuIHBvaW50IHRodW5rIiwgdGh1bmtLaW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRh
Zz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1JldHVyblBvaW50KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQp
Cit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8dGFnPihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpLCB0aHVu
a0tpbmQpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVuaygpCkBAIC03Nyw3ICsxMzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpCiAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAg
IH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtODcsNyArMTQ1LDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVu
aygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5j
b25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKSk7
CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9n
dWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwg
ImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7
CiB9CkBAIC05Nyw3ICsxNTUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aywgImZ1bmN0aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2Fs
bCB3aXRoIGFyaXR5IGNoZWNrIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpA
QCAtMTA3LDcgKzE2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBm
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAi
ZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTE3LDcgKzE3NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7Cisg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8
SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMjcsNyArMTg1LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29k
ZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxf
b25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJv
Z3JhbSIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJvZ3Jh
bSIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEzNyw3ICsxOTUsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5
VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CisgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0
clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTE0OSw5ICsyMDcsOSBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmso
KQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7CiAgICAgICAgIGlmIChXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkp
Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxK
SVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxs
IikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZTxKSVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0
aW9uIGZvciBjYWxsIikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKSVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlv
bl9wcm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1bmtQ
dHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCAiZnVuY3Rpb24gZm9yIGNhbGwi
KSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0yMTcsNyArMjc1LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNo
VGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsK
ICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29k
ZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoIikpOworICAg
ICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
IGNvZGVSZWY7CiAgICAgfQpAQCAtMjI1LDcgKzI4Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6
ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaDE2IikpOworICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
X2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29k
ZVJlZjsKICAgICB9CkBAIC0yMzMsNyArMjkxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQog
ICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0g
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPEpTRW50
cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMzIiKSk7CisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BfY2F0
Y2gpLCAib3BfY2F0Y2gzMiIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVm
OwogICAgIH0KQEAgLTI0Miw2ICszMDAsMjg3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAg
ICByZXR1cm4geyB9OwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Z2VuZXJpY1JldHVyblBvaW50VGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQoreworICAgIHN3aXRjaCAo
c2l6ZSkgeworICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7CisgICAgICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBj
b2RlUmVmOworICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAg
c3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJ
bnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0
dXJuX3BvaW50KSwgImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50IikpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAgfQorICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lk
ZTE2OiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAg
ICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJu
UG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxPcGVy
YXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSwgImxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50MTYiKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gY29kZVJlZjsK
KyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6IHsKKyAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNv
ZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBz
dGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQzMiIpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBjb2RlUmVmOworICAgIH0KKyAgICB9Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29w
SGludFRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAg
ICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFn
PihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCAiZnV6emVyX3JldHVybl9lYXJs
eV9mcm9tX2xvb3BfaGludCIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKwor
I2lmIEVOQUJMRShKSVRfQ0FHRSkKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCogcG9pbnRlciwgUHRyVGFnIHRhZywg
Y29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmNh
bGwoR1BSSW5mbzo6cmVnVDMsIHRhZyk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgJXMgY2FsbCBnYXRlIHRodW5r
IiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+IGNyZWF0ZVdhc21HYXRlVGh1bmsodm9pZCogcG9pbnRlciwgUHRyVGFnIHRhZywgY29uc3Qg
Y2hhciogbmFtZSkKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmNhbGwoR1BS
SW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIxKTsKKyAgICBq
aXQuZmFySnVtcChHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEsIE9wZXJhdGlvblB0clRhZyk7CisK
KyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBy
ZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAi
TExJbnQgJXMgd2FzbSBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlVGFpbENhbGxHYXRlKFB0clRh
ZyB0YWcpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC51bnRhZ1B0cihHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0LmZhckp1bXAo
R1BSSW5mbzo6cmVnVDAsIHRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgdGFpbCBjYWxsIGdhdGUgdGh1bmsiKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gbG9vcE9TUkVu
dHJ5R2F0ZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsm
XSB7CisgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LmZhckp1bXAoR1BS
SW5mbzo6YXJndW1lbnRHUFIwLCBKU0VudHJ5UHRyVGFnKTsKKworICAgICAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAi
bG9vcCBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGVudHJ5T1NS
RW50cnlHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQudW50YWdSZXR1
cm5BZGRyZXNzKCk7CisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
SlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImVudHJ5IE9TUiBlbnRyeSB0aHVu
ayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCkKK3sK
KyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxs
SGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOworICAgICAg
ICBqaXQuZmFySnVtcChHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjAsIFdhc21FbnRyeVB0clRhZyk7
CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZywgIndhc20gT1NSIGVudHJ5IHRodW5rIikpOworICAgIH0pOwor
ICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5rKCkKK3sKKyAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDAsIEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWcpOworCisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhV
TktfSUQpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJleGNlcHRpb24gaGFuZGxlciB0aHVuayIpKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gcmV0dXJuRnJvbUxMSW50R2F0ZVRodW5rKCkKK3sKKyAg
ICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVs
cGVycyBqaXQ7CisKKyAgICAgICAgaml0LnJldCgpOworCisgICAgICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJyZXR1
cm5Gcm9tTExJbnQgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHRhZ0dhdGVUaHVu
ayh2b2lkKiBwb2ludGVyKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQudGFnUHRyKEdQUkluZm86OnJlZ1QzLCBB
Uk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5zdG9yZVB0cihBUk02NFJlZ2lzdGVyczo6bHIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgOCkpOwor
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5m
bzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QzLCBPcGVyYXRpb25QdHJU
YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0
clRhZywgInRhZyB0aHVuayIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPiB1bnRhZ0dhdGVUaHVuayh2b2lkKiBwb2ludGVyKQoreworICAgIENDYWxs
SGVscGVycyBqaXQ7CisKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGpp
dC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC51bnRhZ1B0cihHUFJJbmZvOjpy
ZWdUMywgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuZmFySnVtcChH
UFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ1bnRhZyB0aHVuayIpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBqaXRDYWdlUHRyVGh1
bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAg
ICAgQ0NhbGxIZWxwZXJzIGppdDsKKyAgICAgICAgSlNDX0pJVF9DQUdFX0NPTVBJTEUoaml0KTsK
KyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Cisg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgImppdENhZ2VQdHIgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5r
KCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxPU1JFeGl0UHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PE9TUkV4aXRQdHJU
YWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCAibm9ybWFsX29zcl9leGl0X3RyYW1wb2xp
bmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IGNoZWNr
cG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPj4gY29kZVJlZjsKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbJl0geworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1JldHVyblBvaW50PE9TUkV4aXRQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBv
bGluZSwgImNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSB0aHVuayIpKTsKKyAgICB9KTsK
KyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQ
dHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxP
U1JFeGl0UHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PE9TUkV4aXRQdHJUYWc+
KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSwgImNoZWNr
cG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSB0aHVuayIpKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9T
UkV4aXRQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQgb3Bjb2RlSUQsIE9wY29k
ZVNpemUgc2l6ZSkKK3sKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIFwKKyAg
ICBjYXNlIG5hbWUjI19yZXR1cm5fbG9jYXRpb246IHsgXAorICAgICAgICBzd2l0Y2ggKHNpemUp
IHsgXAorICAgICAgICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzogeyBcCisgICAgICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRy
VGFnPj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAg
ICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVy
blBvaW50PE9TUkV4aXRQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0aW9u
IHRodW5rIikpOyBcCisgICAgICAgICAgICB9KTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvZGVS
ZWY7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTE2OiB7IFwK
KyAgICAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOyBcCisgICAgICAgICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsgXAorICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsgXAorICAgICAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25h
bWUgIl9yZXR1cm5fbG9jYXRpb24xNiB0aHVuayIpKTsgXAorICAgICAgICAgICAgfSk7IFwKKyAg
ICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIE9w
Y29kZVNpemU6OldpZGUzMjogeyBcCisgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPj4gY29kZVJlZjsgXAorICAg
ICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7IFwKKyAgICAgICAgICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAgICAgICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PE9TUkV4aXRQdHJUYWc+
KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihuYW1lIyNf
cmV0dXJuX2xvY2F0aW9uKSwgI25hbWUgIl9yZXR1cm5fbG9jYXRpb24zMiB0aHVuayIpKTsgXAor
ICAgICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAg
IH0gXAorICAgICAgICB9IFwKKyAgICAgICAgcmV0dXJuIHsgfTsgXAorICAgIH0KKworICAgIHN3
aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCkKKyAg
ICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3BlbikKKyAgICBMTElOVF9SRVRV
Uk5fTE9DQVRJT04ob3BfaXRlcmF0b3JfbmV4dCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04o
b3BfY29uc3RydWN0KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsX3ZhcmFyZ3Nf
c2xvdykKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xv
dykKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfZ2V0X2J5X2lkKQorICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9nZXRfYnlfdmFsKQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihv
cF9wdXRfYnlfaWQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV92YWwpCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBMTElu
dAogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmgKaW5kZXggMDM2OGNlOWEyZGEwNjA0ZjQzNzI0NTJlZTEyZjg3YzRlNjM4ZGIw
ZC4uOWUzNTAyZDI1ZjE0M2UxMzA2ODIyNmRiNzExYTg2NTFiZDUwOWFhZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKQEAgLTQwLDYgKzQwLDE5IEBAIGV4dGVy
biAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb05hdGl2ZSh2b2lkKiwgVk0qLCBQ
cm90b0NhbGxGcmFtZSopOwogfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB7
CisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgdm1FbnRyeVRv
SmF2YVNjcmlwdEdhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIHZtRW50cnlUb05hdGl2ZUdhdGVB
ZnRlcih2b2lkKTsKKworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2tVbnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2b2lk
KTsKK30KKyNlbmRpZgorCiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvV2FzbSh2b2lk
KiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBmcmFtZSkKIHsKICAgICBhdXRvIGNsb2Ji
ZXJpemVWYWxpZGF0b3IgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CkBAIC01OSwxMSArNzIsMzIgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCk7CiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKTsK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlU
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
IGdlbmVyaWNSZXR1cm5Qb2ludFRodW5rKE9wY29kZVNpemUpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsK
IAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhbGxUb1Ro
cm93VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFn
PiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvblRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplKTsKIAor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRo
dW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVh
dGVKU0dhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNtR2F0ZVRodW5rKHZvaWQq
LCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJ
VEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcpOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCk7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5
R2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
PiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVu
aygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50YWdH
YXRlVGh1bmsodm9pZCopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gdGFnR2F0ZVRodW5rKHZvaWQqKTsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4
aXRQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsKKyNpZiBFTkFCTEUoREZH
X0pJVCkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiBjaGVja3BvaW50T1NS
RXhpdFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJU
YWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCk7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhP
cGNvZGVJRCwgT3Bjb2RlU2l6ZSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlU
aHVuaygpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA5ZTNjZGU5
OTA0YzEwMmJlZWVmNDdiMTRmMzVmZjY5NTE2OWZhOTdmLi4xNTVkNWU2NDU5NzZkYmRkYWI1Y2Ji
MDM2MzY4NTliZTM2NWVjYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNTYsOSArMjU2LDEyIEBAIGNvbnN0IEFy
aXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpv
YnNlcnZlZE51bWJlck51CiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29k
ZVB0clRhZwogY29uc3QgSlNFbnRyeVB0clRhZyA9IGNvbnN0ZXhwciBKU0VudHJ5UHRyVGFnCiBj
b25zdCBIb3N0RnVuY3Rpb25QdHJUYWcgPSBjb25zdGV4cHIgSG9zdEZ1bmN0aW9uUHRyVGFnCitj
b25zdCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4cHIgSlNFbnRyeVNsb3dQYXRoUHRy
VGFnCitjb25zdCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgPSBjb25zdGV4cHIgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnCiBjb25zdCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnID0gY29uc3RleHByIEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWcKK2NvbnN0IFlhcnJFbnRyeVB0clRhZyA9IGNvbnN0ZXhwciBZYXJy
RW50cnlQdHJUYWcKIGNvbnN0IE5vUHRyVGFnID0gY29uc3RleHByIE5vUHRyVGFnCi1jb25zdCBT
bG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBTbG93UGF0aFB0clRhZworIAogCiAjIFNvbWUgcmVn
aXN0ZXIgY29udmVudGlvbnMuCiAjIC0gV2UgdXNlIGEgcGFpciBvZiByZWdpc3RlcnMgdG8gcmVw
cmVzZW50IHRoZSBQQzogb25lIHJlZ2lzdGVyIGZvciB0aGUKQEAgLTEwMjYsNyArMTAyOSw3IEBA
IG1hY3JvIHRyYWNlRXhlY3V0aW9uKCkKICAgICBlbmQKIGVuZAogCi1tYWNybyBkZWZpbmVPU1JF
eGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKK21hY3JvIGRlZmluZVJldHVybkxhYmVs
KG9wY29kZU5hbWUsIHNpemUpCiAgICAgbWFjcm8gZGVmaW5lTmFycm93KCkKICAgICAgICAgaWYg
bm90IENfTE9PUF9XSU4KICAgICAgICAgICAgIF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9u
OgpAQCAtMTA0OCwzMiArMTA1MSw4MiBAQCBtYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwo
b3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBk
ZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5kCiAKK2lmIEFSTTY0RQorICAgIGds
b2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcgor
ICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0
ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tV
bnRhZ0dhdGVBZnRlcgorICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVja1RhZ0dhdGVBZnRlcgorZW5kCisKIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Ag
b3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGNhbGxlZQorICAgIGVs
c2lmIEFSTTY0RQorICAgICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgIGxlYXAg
SlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNv
bnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGpt
cCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBf
anNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRy
VGFnCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGNhbGxXaWRlMTYoKQorICAgICAgICAg
ICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVN
YXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMTYpICogUHRyU2l6ZSwgYTIK
KyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFn
CisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfd2lkZTE2OgorICAgICAg
ICAgICAgY2FsbCB0MywgY2FsbFB0clRhZworICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBj
YWxsV2lkZTMyKCkKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVf
d2lkZTMyKSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29k
ZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAg
ZW5kCisKKyAgICAgICAgbW92ZSBjYWxsZWUsIHQzCisgICAgICAgIHNpemUoY2FsbE5hcnJvdywg
Y2FsbFdpZGUxNiwgY2FsbFdpZGUzMiwgbWFjcm8gKGdlbikgZ2VuKCkgZW5kKQogICAgIGVsc2UK
ICAgICAgICAgY2FsbCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICAgICAgaWYgQVJNdjcgb3IgTUlQ
UworICAgICAgICAgICAgIyBJdCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNl
IGdsb2JhbCBsYWJlbCBkZWZpbml0aW9ucworICAgICAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0
ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisgICAgICAgICAgICAjIHRo
YXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAor
ICAgICAgICAgICAgIyBjcmFzaGVzLgorICAgICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFm
dGVyQ2FsbCgpCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCisgICAg
ICAgIGVuZAogICAgIGVuZAorICAgIGRlZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUp
CisgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgZGlzcGF0Y2hBZnRlckNh
bGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0
ZXIsIGRpc3BhdGNoKQogCi0gICAgaWYgQVJNdjcgb3IgTUlQUworICAgIGlmIG5vdCBBUk02NEUK
ICAgICAgICAgIyBJdCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2Jh
bCBsYWJlbCBkZWZpbml0aW9ucwogICAgICAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdl
bmVyYXRlcyBhIHNldCBvZiBpbnN0cnVjdGlvbnMKICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVy
IExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFz
aGVzLgotICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RW
aXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQorICAgICAgICBtYWNybyBsYWJlbE5hcnJvdygpCisg
ICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgICAgIGVuZAorCisg
ICAgICAgIG1hY3JvIGxhYmVsV2lkZTE2KCkKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVv
cGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGxhYmVsV2lk
ZTMyKCkKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6Cisg
ICAgICAgIGVuZAorICAgICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJlbFdpZGUxNiwgbGFiZWxX
aWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKKyAgICAgICAgY3Jhc2goKQogICAgIGVuZAot
ICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQotICAgIHJlc3Rv
cmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVt
cDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAgYWRkcCBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCiAjIHNwIHBvaW50cyB0byB0aGUgbmV3IGZyYW1l
Ci1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBj
YWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAy
LCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5
TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5LDggKzExNjIsNyBAQCBtYWNybyBwcmVwYXJlRm9y
VGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGVu
ZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAgIGFkZHAgMTYsIGNmciwgdGVtcDMKLSAgICAgICAg
dW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisgICAgICAgIGFkZHAgMTYsIGNmciwgdGVtcDQKICAg
ICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRlbXAxCkBAIC0xMTMwLDcgKzExODIsMTQgQEAgbWFj
cm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0
clRhZykKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEsIHNwCi0gICAgam1wIGNhbGxlZSwgY2Fs
bFB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBtb3ZlIHRlbXA0LCBhMgorICAgICAgICBt
b3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnRhaWxDYWxsJWNhbGxQ
dHJUYWclKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBlbHNlCisgICAgICAgIGptcCBjYWxsZWUsIGNhbGxQ
dHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNybyBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxs
KQpAQCAtMTE0NCwxNiArMTIwMywxNiBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFt
ZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAgICAg
ICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAgICAgICAgICAgIGJ0cHogY2FsbGVl
RnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIs
IHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRo
UHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxl
ZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29k
ZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0Vmly
dHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAg
ICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQo
b3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkgIyBXZSBkb24ndCByZWFjaCB0aGlzIGluIHN0cmFp
Z2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFjaCBpdCB2aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2Rl
IGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3RhY2sgZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4K
IAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcE5hbWUsIHNpemUpCisgICAgZGVmaW5l
UmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVy
Q2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tjZnJdLCBQQwpAQCAtMTM1MSw3ICsxNDEw
LDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4K
IG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93
UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hl
Y2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgcHJlc2Vy
dmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBpZiBUUkFDSU5HCkBAIC0xMzc5LDE2ICsxNDM3LDI1
IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JT
bG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgYnRweiByMCwgLnJlY292ZXIKICAgICAg
ICAgbW92ZSBjZnIsIHNwICMgcmVzdG9yZSB0aGUgcHJldmlvdXMgc3AKICAgICAgICAgIyBwb3Ag
dGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdpbGwganVtcCB0byBhIGZ1bmN0aW9uIHRoYXQgd2Fu
dHMgdG8gc2F2ZSBpdAotICAgICAgICBpZiBBUk02NCBvciBBUk02NEUKKyAgICAgICAgaWYgQVJN
NjQKKyAgICAgICAgICAgIHBvcCBsciwgY2ZyCisgICAgICAgIGVsc2lmIEFSTTY0RQorICAgICAg
ICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mgd2lsbCBiZSBwZXJmb3JtZWQgaW4gR2F0ZTo6ZW50
cnlPU1JFbnRyeS4KICAgICAgICAgICAgIHBvcCBsciwgY2ZyCi0gICAgICAgICAgICB1bnRhZ1Jl
dHVybkFkZHJlc3Mgc3AKICAgICAgICAgZWxzaWYgQVJNdjcgb3IgTUlQUwogICAgICAgICAgICAg
cG9wIGNmcgogICAgICAgICAgICAgcG9wIGxyCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBv
cCBjZnIKICAgICAgICAgZW5kCi0gICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworCisgICAg
ICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSByMCwgYTAKKyAgICAgICAgICAgIGxlYXAg
SlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNv
bnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBq
bXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBl
bHNlCisgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAg
LnJlY292ZXI6CiAgICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQogICAgIC5j
b250aW51ZToKQEAgLTE0OTQsNyArMTU2MSwxMiBAQCBlbmQKIG1hY3JvIGRvUmV0dXJuKCkKICAg
ICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5k
Q0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAgICAgICByZXQKKyAgICBlbmQKIGVuZAogCiAj
IFRoaXMgYnJlYWsgaW5zdHJ1Y3Rpb24gaXMgbmVlZGVkIHNvIHRoYXQgdGhlIHN5bnRoZXNpemVk
IGxsaW50UENSYW5nZVN0YXJ0IGxhYmVsCkBAIC0xNTI1LDYgKzE1OTcsMTkgQEAgZWxzZQogZW5k
CiAgICAgZG9WTUVudHJ5KG1ha2VIb3N0RnVuY3Rpb25DYWxsKQogCitpZiBBUk02NCBvciBBUk02
NEUKKyAgICBnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcgorZW5kCitnbG9iYWwgX3ZtRW50
cnlUb1lhcnJKSVQKK192bUVudHJ5VG9ZYXJySklUOgorICAgIGZ1bmN0aW9uUHJvbG9ndWUoKQor
aWYgQVJNNjQgb3IgQVJNNjRFCisgICAgam1wIHQ1LCBZYXJyRW50cnlQdHJUYWcKKyAgICBfdm1F
bnRyeVRvWWFyckpJVEFmdGVyOgorZW5kCisgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCisgICAgcmV0
CisKIAogaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAjIHZvaWQgc2FuaXRpemVT
dGFja0ZvclZNSW1wbChWTSogdm0pCkBAIC0xNTcwLDYgKzE2NTUsNzEgQEAgaWYgbm90IChDX0xP
T1Agb3IgQ19MT09QX1dJTikKICAgICAgICAgcmV0CiBlbmQKIAoraWYgQVJNNjRFCisgICAgIyB2
b2lkKiBqaXRDYWdlUHRyKHZvaWQqIHBvaW50ZXIsIHVpbnRwdHJfdCB0YWcpCisgICAgZW1pdCAi
Lmdsb2JsIF9qaXRDYWdlUHRyIgorICAgIGVtaXQgIl9qaXRDYWdlUHRyOiIKKyAgICAgICAgdGFn
UmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6aml0Q2FnZVB0cikg
KiBQdHJTaXplLCB0MgorICAgICAgICBqbXAgW3QyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisg
ICAgICAgIGdsb2JhbCBfaml0Q2FnZVB0ckdhdGVBZnRlcgorICAgICAgICBfaml0Q2FnZVB0ckdh
dGVBZnRlcjoKKyAgICAgICAgcmV0CisKKyAgICBnbG9iYWwgX3RhaWxDYWxsSlNFbnRyeVRyYW1w
b2xpbmUKKyAgICBfdGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZToKKyAgICAgICAgdW50YWdSZXR1
cm5BZGRyZXNzIGEyCisgICAgICAgIGptcCBhMCwgSlNFbnRyeVB0clRhZworCisgICAgZ2xvYmFs
IF90YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUKKyAgICBfdGFpbENhbGxKU0VudHJ5
U2xvd1BhdGhUcmFtcG9saW5lOgorICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3MgYTIKKyAgICAg
ICAgam1wIGEwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKworICAgIGdsb2JhbCBfZXhjZXB0aW9u
SGFuZGxlclRyYW1wb2xpbmUKKyAgICBfZXhjZXB0aW9uSGFuZGxlclRyYW1wb2xpbmU6CisgICAg
ICAgIGptcCBhMCwgRXhjZXB0aW9uSGFuZGxlclB0clRhZworCisgICAgZ2xvYmFsIF9yZXR1cm5G
cm9tTExJbnRUcmFtcG9saW5lCisgICAgX3JldHVybkZyb21MTEludFRyYW1wb2xpbmU6CisgICAg
ICAgIHJldAorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUKKyAgICBf
anNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNw
CisgICAgICAgIGptcCBfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1Ry
YW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lTW9kdWxlUHJv
Z3JhbVByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBf
bGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5l
RXZhbFByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZToKKyAgICAgICAgdGFn
UmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2V2YWxfcHJvbG9ndWUKKworICAg
IGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9ndWUKKyAgICBfanNUcmFt
cG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mg
c3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZQorCisgICAg
Z2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlCisgICAgX2pz
VHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVy
bkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJv
bG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaworCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVG
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVG
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJu
QWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2sKK2VuZAorCiBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICMgRHVtbXkgZW50
cnkgcG9pbnQgdGhlIEMgTG9vcCB1c2VzIHRvIGluaXRpYWxpemUuCiAgICAgX2xsaW50X2VudHJ5
OgpAQCAtMTcyNCwyMSArMTg3NCwzMCBAQCBlbmQpCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENv
ZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9y
X2NhbGwpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX3Ns
b3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93
X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgogICAgIGZ1bmN0
aW9uSW5pdGlhbGl6YXRpb24oMCkKICAgICBkaXNwYXRjaCgwKQogZW5kKQogCi0KIG9wKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIG1hY3JvICgpCiAgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKLSAgICBmdW5jdGlvbkFy
aXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0
X2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19w
YXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CiAg
ICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKKyMg
TmVlZCB0aGVzZSBzdHViIGxhYmVscyB0byBtYWtlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWcgZXRjLiBMTEludCBoZWxwZXIgb3Bjb2Rlcy4K
K19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFn
X3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrX3VudGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrX3RhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVja190YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRlMTY6CitfanNfdHJhbXBv
bGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnX3dpZGUz
MjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoKKyAgICBjcmFzaCgpCiAKICMgVmFsdWUtcmVwcmVz
ZW50YXRpb24tc3BlY2lmaWMgY29kZS4KIGlmIEpTVkFMVUU2NApAQCAtMjEwOSw3ICsyMjY4LDcg
QEAgZW5kKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2Fs
bCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKKyAgICAgICAgb3BfY2FsbF9ldmFsLAog
ICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRp
c3BhdGNoT3AobmFycm93LCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIxMTgsNyArMjI3Nyw3IEBA
IF9sbGludF9vcF9jYWxsX2V2YWw6CiAKIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogICAg
IHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX3dpZGUxNiwKKyAg
ICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAgICB3aWRlMTYsCiAgICAgICAgIE9wQ2FsbEV2YWws
CiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNoT3Aod2lkZTE2LCBvcF9jYWxsX2V2YWwpIGVuZCwK
QEAgLTIxMjcsNyArMjI4Niw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogCiBfbGxp
bnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKICAgICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0gICAg
ICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCisgICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAgICAg
d2lkZTMyLAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9w
KHdpZGUzMiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMjEyLDcgKzIzNzEsMTMgQEAgb3AoY2hl
Y2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQog
CiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAgICBicmFuY2hJZkV4Y2Vw
dGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKLSAgICAgICAgam1w
IHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSBy
MSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkpICogUHRy
U2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBK
U0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGptcCByMSwgSlNFbnRyeVB0
clRhZworICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1cHBvcnRlZCgpCiAgICAg
ZW5kCkBAIC0yMjI5LDEyICsyMzk0LDIzIEBAIG9wKGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBv
bGluZSwgbWFjcm8gKCkKICAgICAgICAgY0NhbGwyKF9sbGludF9zbG93X3BhdGhfY2hlY2twb2lu
dF9vc3JfZXhpdCkKICAgICAgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCiAgICAgICAgIGJy
YW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQot
ICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAg
ICAgICBtb3ZlIHIxLCBhMAorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIg
SlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BPU1JF
bnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0
ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1wIHIx
LCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgbm90U3VwcG9y
dGVkKCkKICAgICBlbmQKIGVuZCkKIAorb3Aobm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsIG1h
Y3JvICgpCisgICAgZGlzcGF0Y2goMCkKK2VuZCkKKworCiAjIExhc3RseSwgbWFrZSBzdXJlIHRo
YXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4K
ICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBl
aXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMgbXVjaC4KQEAgLTIyNzksNCArMjQ1NSwxOCBAQCBv
cCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgbWFjcm8gKCkKICAgICBjcmFzaCgpCiBl
bmQpCiAKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsOgorX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Q6Citfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF93aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lk
ZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfd2lkZTE2OgorX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUxNjoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rs
c193aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93aWRlMzI6Citf
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTMyOgorICAgIGNy
YXNoKCkKKwogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDYyNmE0NjgxN2IxNTNiM2Q1NDY0N2Mz
ZDgyYzFiNDc0OWZlNjI2ODQuLjhlNzMzN2Q3NjIyNzQ1YTA5NmYwZWYyNGVjMDQ0MDNhNjZjNmQ4
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02ODYsNyArNjg2LDcgQEAgZW5kCiAjIEVudHJ5cG9p
bnRzIGludG8gdGhlIGludGVycHJldGVyCiAKICMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBp
biB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCi1tYWNybyBmdW5j
dGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlD
aGVjayhvcGNvZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQw
LCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVT
dGF0ZUZvckNDYWxsKCkKQEAgLTc1Nyw2ICs3NTcsMTQgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNo
ZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0
aW9uc1Jhd1BvaW50ZXJbdDFdLCBQQgogICAgIG1vdmUgMCwgUEMKICAgICBqbXAgZG9uZUxhYmVs
CisKKyAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFs
IGxhYmVsIGRlZmluaXRpb25zCisgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0
ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4
ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKKyAgICAjIGNyYXNoZXMuCisgICAgX2pz
X3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgorICAgIF9qc190cmFtcG9saW5lXyVvcGNv
ZGVOYW1lJV90YWc6CisgICAgY3Jhc2goKQogZW5kCiAKICMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50
YXRpb25zCkBAIC0yMTE1LDcgKzIxMjMsNyBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUs
IHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogICAg
IHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3Qz
XQogICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgbW92ZSB0
Mywgc3AKLSAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFn
KQorICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRyVGFn
KQogICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0s
IEpTRW50cnlQdHJUYWcpCiAKIC5vcENhbGxTbG93OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBhYTE1NzIzYzY0
MGYyZDc3ZWE4YTdmZTg4YTk4YmFlYTg2ZDJiOWI5Li41MzRlMGRmM2RlMzAwMDYyZjc1ZjE1Y2Jl
NTEzNjQ5YTdkYWE3YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMzAwLDE1ICszMDAsMjUgQEAgbWFjcm8g
ZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHJldAogZW5kCiAKLQogIyBhMCwgYTIsIHQzLCB0NAog
bWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRl
bXAyKQogICAgIGFkZHAgMTYsIHNwCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAg
ICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBlbnRyeQorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBt
b3ZlIGVudHJ5LCB0MworICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6dm1FbnRyeVRvSmF2YVNj
cmlwdCkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBnbG9iYWwgX3ZtRW50cnlUb0phdmFTY3JpcHRU
cmFtcG9saW5lCisgICAgICAgIF92bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZToKKyAgICAg
ICAgY2FsbCB0MywgSlNFbnRyeVB0clRhZwogICAgIGVsc2UKICAgICAgICAgY2FsbCBlbnRyeSwg
SlNFbnRyeVB0clRhZwogICAgIGVuZAorICAgIGlmIEFSTTY0RQorICAgICAgICBnbG9iYWwgX3Zt
RW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIKKyAgICAgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRH
YXRlQWZ0ZXI6CisgICAgZW5kCiAgICAgc3VicCAxNiwgc3AKIGVuZAogCkBAIC0zMjYsOSArMzM2
LDIwIEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwg
dGVtcDEsIHRlbXAyKQogICAgICAgICBzdWJwIDMyLCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBI
b3N0RnVuY3Rpb25QdHJUYWcKICAgICAgICAgYWRkcCAzMiwgc3AKKyAgICBlbHNpZiBBUk02NEUK
KyAgICAgICAgbW92ZSB0ZW1wMSwgdDMKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50
cnlUb05hdGl2ZSkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnICMgSG9zdEZ1bmN0aW9uUHRyVGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRv
TmF0aXZlVHJhbXBvbGluZQorICAgICAgICBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZToKKyAg
ICAgICAgY2FsbCB0MywgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxs
IHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICBlbmQKKyAgICBpZiBBUk02NEUKKyAgICAg
ICAgZ2xvYmFsIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIKKyAgICAgICAgX3ZtRW50cnlUb05h
dGl2ZUdhdGVBZnRlcjoKKyAgICBlbmQKIGVuZAogCiBvcChsbGludF9oYW5kbGVfdW5jYXVnaHRf
ZXhjZXB0aW9uLCBtYWNybyAoKQpAQCAtNDMxLDggKzQ1MiwxNCBAQCBtYWNybyBjaGVja1N3aXRj
aFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBtb3ZlIFBDLCBhMQogICAgICAgICAgICAgY0Nh
bGwyKF9sbGludF9sb29wX29zcikKICAgICAgICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCisKICAg
ICAgICAgICAgIG1vdmUgcjEsIHNwCi0gICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcK
KyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsg
Y29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRl
Ojpsb29wT1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgICAgICBqbXAgW2EyXSwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAg
ICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbG9hZFBDKCkKICAgICAgICAgZW5kKQpAQCAt
NjQ1LDcgKzY3Miw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4K
IAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xv
Z3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWws
IHNsb3dQYXRoKQorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29kZU5hbWUsIGRvbmVMYWJl
bCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0
ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0NhbGwoKQpAQCAtNjgyLDkg
KzcwOSwxNSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkK
IAogLm5vRXh0cmFTbG90OgogICAgIGlmIEFSTTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyAr
IGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0
ZTo6JW9wY29kZU5hbWUlVW50YWcpICogUHRyU2l6ZSwgdDMKKyAgICAgICAgam1wIFt0M10sIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
dW50YWc6CiAgICAgICAgIGxvYWRwIDhbY2ZyXSwgbHIKICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0
MwogICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDMKKyAgICAgICAgXyVvcGNvZGVOYW1lJVVu
dGFnR2F0ZUFmdGVyOgorICAgIGVsc2UKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5h
bWUlX3VudGFnOgogICAgIGVuZAogCiAgICAgLy8gTW92ZSBmcmFtZSB1cCB0MSBzbG90cwpAQCAt
NzEyLDkgKzc0NSwxNSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93
UGF0aCkKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKIAogICAgIGlmIEFSTTY0RQorICAg
ICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0
ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVGFnKSAqIFB0clNpemUsIHQzCisg
ICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0MQogICAgICAg
ICB0YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAgICAgIHN0b3JlcCBsciwgOFtjZnJdCisgICAgICAg
IF8lb3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBv
bGluZV8lb3Bjb2RlTmFtZSVfdGFnOgogICAgIGVuZAogCiAuY29udGludWU6CkBAIC0yMTc1LDkg
KzIyMTQsMTUgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKICAgICBzdG9yZVBDKCkKICAgICBz
dG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10K
ICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpT
RW50cnlQdHJUYWcpCi0gICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9w
Y29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRj
aCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQorICAgIGlmIEFSTTY0RQorICAgICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVU
YXJnZXRbdDVdLCB0MAorICAgICAgICBwcmVwYXJlQ2FsbCh0MCwgdDIsIHQzLCB0NCwgdDEsIEpT
RW50cnlQdHJUYWcpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQwCisgICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHQwLCBKU0VudHJ5UHRyVGFnKQorICAg
IGVsc2UKKyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50
cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBv
cGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0
Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgZW5kCiAub3BDYWxsU2xvdzoKICAgICBz
bG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNh
bGwpCiBlbmQKQEAgLTIyNDUsNyArMjI5MCw3IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX3RvX3By
b3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5S2V5LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBl
bmQpCiAKIAotY29tbW9uT3AobGxpbnRfb3BfY2F0Y2gsIG1hY3JvKCkgZW5kLCBtYWNybyAoc2l6
ZSkKK2NvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQog
ICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBv
bGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxs
IGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQogICAgICMgdGhlIGludGVycHJl
dGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KQEAg
LTIzMTAsNyArMjM1NSwxMyBAQCBvcChsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lLCBtYWNybyAoKQogICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3Mg
dGhyb3dpbmcgcHJvdG9jb2wuCiAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHQxCiAgICAgY29udmVy
dENhbGxlZVRvVk0odDEpCi0gICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0s
IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgVk06
OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcg
KyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdh
dGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRyU2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisg
ICAgICAgIGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5k
bGVyUHRyVGFnCisgICAgZW5kCiBlbmQpCiAKIApAQCAtMzAxOCw0ICszMDY5LDMgQEAgb3AoZnV6
emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgbWFjcm8gKCkKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBkb1JldHVybigpCiBlbmQpCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IGI5MzIyMTM0
ODM0MmU5YWE4ODg4MzJkNWM3YmFkMTY2NDdhY2I0NWIuLmE5ZGE4YmFkZTY3N2M2MDMzNDRiYmZk
NjQyNjA5ODVhODkzNDYwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbQpAQCAtMTM5LDggKzEzOSwxMiBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9y
UHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVT
YXZlc1VzZWRCeVdhc20oKQogICAgICAgICAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAg
ICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAotICAgICAgICAgICAgam1wIHdzMCwgV2Fz
bUVudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAg
ICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFn
CisgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6CiAgICAgICAgICAgICBub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKICAgICAgICAgZW5kKQpAQCAt
MTU5LDkgKzE2MywxNCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAg
ICAgICBidHB6IHIxLCAucmVjb3ZlcgogICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNl
ZEJ5V2FzbSgpCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgICAgICAg
ICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgICAgICAgICBtb3ZlIHIwLCBhMAotICAgICAg
ICAgICAgam1wIHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAg
ICAgICAgICAgICAgIG1vdmUgcjEsIHdzMAorICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmln
ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBH
YXRlOjp3YXNtT1NSRW50cnkpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgam1wIFt3
czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjEsIFdhc21FbnRyeVB0clRhZworICAgICAgICAg
ICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICAgICAgZW5kKQpAQCAtMjUz
LDcgKzI2Miw2IEBAIGVuZAogCiBtYWNybyB3YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBj
b2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwg
ZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBz
cAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNV
c2VkQnlXYXNtKCkKICAgICBsb2FkV2FzbUluc3RhbmNlKCkKQEAgLTQ1Niw3ICs0NjQsMTIgQEAg
ZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgp
CiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAg
ICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dh
dGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCB3czAK
KyAgICAgICAgam1wIFt3czBdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICBlbHNlCisgICAg
ICAgIHJldAorICAgIGVuZAogZW5kCiAKICMgRW50cnkgcG9pbnQKQEAgLTQ5Nyw3ICs1MTAsMTMg
QEAgb3Aod2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAg
IGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFtjZnJdLCBh
MwogICAgIGNDYWxsNChfc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0aW9uKQogCi0gICAgam1w
IHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIG1vdmUg
cjAsIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZK
U0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpleGNlcHRpb25IYW5kbGVyKSAqIFB0
clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBFeGNl
cHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAgICBqbXAgcjAsIEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWcKKyAgICBlbmQKIGVuZCkKIAogIyBEaXNhYmxlIHdpZGUgdmVyc2lvbiBvZiBu
YXJyb3ctb25seSBvcGNvZGVzCkBAIC03MDUsNyArNzI0LDM4IEBAIG1hY3JvIHNsb3dQYXRoRm9y
V2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBl
bmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHNwCi0gICAgICAg
ICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJUYWcKKworICAgICAgICAgICAgY3R4KG1hY3JvKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxs
TmFycm93KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAg
ICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIHdzMQor
ICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcg
IyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAg
ICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAg
ZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyAr
IGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0
ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBfd2Fz
bV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAgICAgICAgICAgICAgIGNh
bGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQKKworICAg
ICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQorICAgICAgICAgICAgICAgICAgICBpZiBB
Uk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHBy
IEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2Rl
TmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1w
IFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAg
ICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpT
RW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAg
ICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBn
ZW4oKSBlbmQpCisgICAgICAgICAgICAgICAgZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwg
c2l6ZSkKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHdzMQogICAgICAgICAgICAgbG9hZGkgV2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om1fbnVt
Q2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm02NC5yYgppbmRleCBmOWU1NzMyZmFmMTRiMDgwOWJjMmJiNmMxOWIxYzgwMmM1OWY4MzAyLi5m
ZjU3YjZhNDhhZTk3NTViNGMxMDU0ODU0M2Q3NTlmNDQzNjI3ODcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMzcsMzggKzM3LDQ1IEBACiAjCiAjIEdQ
UiBjb252ZW50aW9ucywgdG8gbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVDoKICMKLSMgIHgwICA9PiB0
MCwgYTAsIHIwCi0jICB4MSAgPT4gdDEsIGExLCByMQotIyAgeDIgID0+IHQyLCBhMgotIyAgeDMg
ID0+IHQzLCBhMwotIyAgeDQgID0+IHQ0Ci0jICB4NSAgPT4gdDUKKyMgIHgwICA9PiB0MCwgYTAs
IHdhMCwgcjAKKyMgIHgxICA9PiB0MSwgYTEsIHdhMSwgcjEKKyMgIHgyICA9PiB0MiwgYTIsIHdh
MgorIyAgeDMgID0+IHQzLCBhMywgd2EzCisjICB4NCAgPT4gdDQsIGE0LCB3YTQKKyMgIHg1ICA9
PiB0NSwgYTUsIHdhNQorIyAgeDYgID0+IHQ2LCBhNiwgd2E2CisjICB4NyAgPT4gdDcsIGE3LCB3
YTcKKyMgIHg4ICA9PiB3czAKKyMgIHg5ICA9PiB3czEKICMgeDEzICA9PiAgICAgICAgICAgICAg
ICAgIChzY3JhdGNoKQogIyB4MTYgID0+ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAjIHgx
NyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKLSMgeDI2ICA9PiAgICAgICAgICAgICBj
c3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3IxIChudW1iZXJUYWcpCi0jIHgyOCAg
PT4gICAgICAgICAgICAgY3NyMiAobm90Q2VsbE1hc2spCisjIHgyNSAgPT4gICAgICAgICAgICAg
Y3NyNiAobWV0YWRhdGFUYWJsZSkKKyMgeDI2ICA9PiAgICAgICAgICAgICBjc3I3IChQQikKKyMg
eDI3ICA9PiAgICAgICAgICAgICBjc3I4IChudW1iZXJUYWcpCisjIHgyOCAgPT4gICAgICAgICAg
ICAgY3NyOSAobm90Q2VsbE1hc2spCiAjIHgyOSAgPT4gY2ZyCiAjICBzcCAgPT4gc3AKICMgIGxy
ICA9PiBscgogIwogIyBGUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQ6
CiAjCi0jICBxMCAgPT4gZnQwLCBmYTAsIGZyCi0jICBxMSAgPT4gZnQxLCBmYTEKLSMgIHEyICA9
PiBmdDIsIGZhMgotIyAgcTMgID0+IGZ0MywgZmEzCi0jICBxNCAgPT4gZnQ0ICAgICAgICAgICh1
bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxNSAgPT4gZnQ1ICAgICAgICAgICh1bnVzZWQgaW4gYmFz
ZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQot
IyAgcTkgID0+IGNzZnIxICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEwICA9
PiBjc2ZyMiAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMSAgPT4gY3NmcjMg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTIgID0+IGNzZnI0ICAgICAgICAo
T25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEzICA9PiBjc2ZyNSAgICAgICAgKE9ubHkgdGhl
IGxvd2VyIDY0IGJpdHMpCi0jIHExNCAgPT4gY3NmcjYgICAgICAgIChPbmx5IHRoZSBsb3dlciA2
NCBiaXRzKQotIyBxMTUgID0+IGNzZnI3ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykK
KyMgIHEwICA9PiBmdDAsIGZhMCwgd2ZhMCwgZnIKKyMgIHExICA9PiBmdDEsIGZhMSwgd2ZhMQor
IyAgcTIgID0+IGZ0MiwgZmEyLCB3ZmEyCisjICBxMyAgPT4gZnQzLCBmYTMsIHdmYTMKKyMgIHE0
ICA9PiBmdDQsICAgICAgd2ZhNCAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTUg
ID0+IGZ0NSwgICAgICB3ZmE1ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxNiAg
PT4gICAgICAgICAgIHdmYTYgICAgICAgICAgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE3ICA9
PiAgICAgICAgICAgd2ZhNyAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTggID0+
IGNzZnIwICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyAgcTkg
ID0+IGNzZnIxICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBx
MTAgID0+IGNzZnIyICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQor
IyBxMTEgID0+IGNzZnIzICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRz
KQorIyBxMTIgID0+IGNzZnI0ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBi
aXRzKQorIyBxMTMgID0+IGNzZnI1ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2
NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dl
ciA2NCBiaXRzKQorIyBxMTUgID0+IGNzZnI3ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBs
b3dlciA2NCBiaXRzKQogIyBxMzEgID0+IHNjcmF0Y2gKIAogZGVmIGFybTY0R1BSTmFtZShuYW1l
LCBraW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1ZjVh
MzJkNTEwZmM4MGMwNjM4YTM5ZWQ2NTFhZWY1YTlkMGZmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTAsMCArMSw5NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04p
CisKKyNkZWZpbmUgSlNDX1VUSUxJVFlfR0FURVModikgXAorICAgIHYoaml0Q2FnZVB0ciwgTm9Q
dHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVB0clRhZywgTm9QdHJUYWcpIFwKKyAgICB2
KHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYobG9vcE9T
UkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYoZW50cnlPU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAg
ICB2KHdhc21PU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KGV4Y2VwdGlvbkhhbmRsZXIsIE5v
UHRyVGFnKSBcCisgICAgdihyZXR1cm5Gcm9tTExJbnQsIE5vUHRyVGFnKSBcCisgICAgdihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnLCBOb1B0clRhZykgXAorICAgIHYo
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisgICAg
dihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWcsIE5vUHRyVGFn
KSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnLCBO
b1B0clRhZykgXAorICAgIHYodm1FbnRyeVRvSmF2YVNjcmlwdCwgSlNFbnRyeVB0clRhZykgXAor
ICAgIHYodm1FbnRyeVRvTmF0aXZlLCBIb3N0RnVuY3Rpb25QdHJUYWcpIFwKKworI2RlZmluZSBK
U0NfSlNfR0FURV9PUENPREVTKHYpIFwKKyAgICB2KG9wX2NhbGwsIEpTRW50cnlQdHJUYWcpIFwK
KyAgICB2KG9wX3RhaWxfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfY29uc3RydWN0
LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9uZXh0LCBKU0VudHJ5UHRyVGFn
KSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuLCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9j
YWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3Ns
b3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY29uc3RydWN0X3Nsb3csIEpT
RW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF92YXJhcmdzX3Nsb3csIEpTRW50
cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHNfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3RfdmFy
YXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfZXZhbF9z
bG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX25leHRfc2xv
dywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuX3Nsb3cs
IEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisj
ZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KSBcCisgICAgdih3YXNtX2NhbGwsIEpTRW50
cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX25vX3RscywgSlNFbnRyeVNsb3dQ
YXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfaW5kaXJlY3QsIEpTRW50cnlTbG93UGF0aFB0
clRhZykgXAorICAgIHYod2FzbV9jYWxsX2luZGlyZWN0X25vX3RscywgSlNFbnRyeVNsb3dQYXRo
UHRyVGFnKSBcCisKKyNlbHNlCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KQorI2Vu
ZGlmCisKK2VudW0gY2xhc3MgR2F0ZSA6IHVpbnQ4X3QgeworI2RlZmluZSBKU0NfREVGSU5FX0dB
VEVfRU5VTShnYXRlTmFtZSwgdGFnKSBnYXRlTmFtZSwKKyNkZWZpbmUgSlNDX0RFRklORV9PUENP
REVfR0FURV9FTlVNKGdhdGVOYW1lLCB0YWcpIGdhdGVOYW1lLCBnYXRlTmFtZSMjX3dpZGUxNiwg
Z2F0ZU5hbWUjI193aWRlMzIsCisgICAgSlNDX1VUSUxJVFlfR0FURVMoSlNDX0RFRklORV9HQVRF
X0VOVU0pCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VO
VU0pCisgICAgSlNDX1dBU01fR0FURV9PUENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5V
TSkKKyN1bmRlZiBKU0NfREVGSU5FX0dBVEVfRU5VTQorfTsKKworI2RlZmluZSBKU0NfQ09VTlQo
Z2F0ZU5hbWUsIHRhZykgKyAxCisjZGVmaW5lIEpTQ19PUENPREVfQ09VTlQoZ2F0ZU5hbWUsIHRh
ZykgKyAzCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mR2F0ZXMgPSAwIEpTQ19V
VElMSVRZX0dBVEVTKEpTQ19DT1VOVCkgSlNDX0pTX0dBVEVfT1BDT0RFUyhKU0NfT1BDT0RFX0NP
VU5UKSBKU0NfV0FTTV9HQVRFX09QQ09ERVMoSlNDX09QQ09ERV9DT1VOVCk7CisjdW5kZWYgSlND
X0NPVU5UCisjdW5kZWYgSlNDX09QQ09ERV9DT1VOVAorI2Vsc2UKKy8vIEtlZXAgaXQgbm9uLXpl
cm8gdG8gbWFrZSBKU0NDb25maWcncyBhcnJheSBub3QgWzBdLgorc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBudW1iZXJPZkdhdGVzID0gMTsKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCmluZGV4IDVhNDczMTdjNjJhNWViYTY2NjY3NTczNWY3
NzQwMzUwMGM2ODBiNDEuLjdmOTZlYzUyZWQyMWFmZGUzM2RhMTMwZGI3ZGQ0Njk0ZWM2MTk4ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR2F0ZS5oIgogI2luY2x1ZGUgIk9w
Y29kZS5oIgogI2luY2x1ZGUgIk9wdGlvbnNMaXN0LmgiCiAjaW5jbHVkZSA8d3RmL1dURkNvbmZp
Zy5oPgpAQCAtOTIsNiArOTMsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgT3Bjb2RlIG9w
Y29kZU1hcFtudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAgICAgICAgT3Bjb2Rl
IG9wY29kZU1hcFdpZGUxNltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsKICAgICAg
ICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUzMltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURz
XTsKKyAgICAgICAgY29uc3Qgdm9pZCogZ2F0ZU1hcFtudW1iZXJPZkdhdGVzXTsKICAgICB9IGxs
aW50OwogCiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0x
MTcsNiArMTE5LDcgQEAgZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSBDb25maWcgZ19qc2ND
b25maWc7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwID0gb2Zm
c2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcCk7CiBjb25zdGV4cHIgc2l6ZV90IG9m
ZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTE2ID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxs
aW50Lm9wY29kZU1hcFdpZGUxNik7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmln
T3Bjb2RlTWFwV2lkZTMyID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdp
ZGUzMik7Citjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCA9IG9mZnNl
dG9mKEpTQzo6Q29uZmlnLCBsbGludC5nYXRlTWFwKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCmluZGV4IGE5NDE2
MzRiZmZkYTdhNDYzMTU2YzQ1OTA2Zjc3NDliZWEyMjZhYzcuLmVhYjM3ZWU4Nzg0MTY0OWJiZDkx
YWM0OTQyM2U5ZTNiZDdjNTJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ1B0clRhZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUHRyVGFnLmNwcApAQCAtMjgsNiArMjgsMTIgQEAKIAogI2luY2x1ZGUgIkpTQ0NvbmZpZy5o
IgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxp
dGllcy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRS
VEFHX0RFQlVHR0lORykKQEAgLTM1LDggKzQxLDEwIEBAIG5hbWVzcGFjZSBKU0Mgewogc3RhdGlj
IGNvbnN0IGNoYXIqIHRhZ0ZvclB0cihjb25zdCB2b2lkKiBwdHIpCiB7CiAjZGVmaW5lIFJFVFVS
Tl9OQU1FX0lGX1RBR19NQVRDSEVTKHRhZywgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZSkgXAotICAg
IGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6OlB0clRhZ0FjdGlvbjo6Tm9Bc3Nl
cnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikpKSBcCi0gICAgICAgIHJldHVybiAj
dGFnOworICAgIGlmIChjYWxsZXJUeXBlICE9IFB0clRhZ0NhbGxlclR5cGU6OkpJVCB8fCBjYWxs
ZWVUeXBlICE9IFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgeyBcCisgICAgICAgIGlmIChwdHIg
PT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6OlB0clRhZ0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6
dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikpKSBcCisgICAgICAgICAgICByZXR1cm4gI3RhZzsg
XAorICAgIH0KICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9OQU1FX0lGX1RBR19NQVRD
SEVTKQogI3VuZGVmIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTCiAgICAgcmV0dXJuIG51bGxw
dHI7IC8vIE1hdGNoaW5nIHRhZyBub3QgZm91bmQuCkBAIC02MSw0ICs2OSwzMiBAQCB2b2lkIGlu
aXRpYWxpemVQdHJUYWdMb29rdXAoKQogCiAjZW5kaWYgLy8gQ1BVKEFSTTY0RSkgJiYgRU5BQkxF
KFBUUlRBR19ERUJVR0dJTkcpCiAKKyNpZiBDUFUoQVJNNjRFKQorCitQdHJUYWdDYWxsZXJUeXBl
IGNhbGxlclR5cGUoUHRyVGFnIHRhZykKK3sKKyNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90
YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2Fs
bGVyVHlwZTsKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFH
KFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUHRyVGFn
Q2FsbGVyVHlwZTo6TmF0aXZlOworICAgIH0KKyN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKKyAg
ICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworfQorCitQdHJUYWdDYWxsZWVUeXBl
IGNhbGxlZVR5cGUoUHRyVGFnIHRhZykKK3sKKyNkZWZpbmUgUkVUVVJOX1BUUlRBR19UWVBFKF90
YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBjYXNlIF90YWdOYW1lOiByZXR1cm4gY2Fs
bGVlVHlwZTsKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgICBGT1JfRUFDSF9KU0NfUFRSVEFH
KFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gUHRyVGFn
Q2FsbGVlVHlwZTo6TmF0aXZlOworICAgIH0KKyN1bmRlZiBSRVRVUk5fUFRSVEFHX1RZUEUKKyAg
ICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworfQorCisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NQdHJUYWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCmlu
ZGV4IGRmOGI0MDIyNjZlMGUwMjAxOWFmMzVmNjhlOTFmYWE3OGJlNzkzNWIuLjMzOGFhYWVhZTZh
MTI1NTM2NDRlZDU1NzNhZjViMWJjNGYwMzkwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ1B0clRhZy5oCkBAIC0yNyw0NiArMjcsNTMgQEAKIAogI2luY2x1ZGUgIkpJVE9w
ZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5k
aWYKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCogaml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3QgdGFnKTsKKyNlbmRpZgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAKICNkZWZp
bmUgRk9SX0VBQ0hfSlNDX1BUUlRBRyh2KSBcCi0gICAgLyogTmF0aXZlIE5vbmUgKi8gXAorICAg
IC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5vbmUgKi8gXAogICAgIHYoRE9NSklURnVuY3Rpb25Q
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkg
XAogICAgIHYoRGlzYXNzZW1ibHlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRy
VGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoUHV0VmFsdWVQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAotICAgIC8qIEpJVCBOb25l
ICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpOb25lICovIFwKICAgICB2KEIzQ29tcGls
YXRpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9u
ZSkgXAogICAgIHYoRXhlY3V0YWJsZU1lbW9yeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAgICAgdihMaW5rQnVmZmVyUHRyVGFnLCBQdHJU
YWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKLSAgICAvKiBOYXRp
dmUgTmF0aXZlICovIFwKKyAgICB2KFlhcnI4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpK
SVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKKyAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJy
TWF0Y2hPbmx5OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJU
eXBlOjpOb25lKSBcCisgICAgdihZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIC8qIENhbGxlZTpOYXRp
dmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAgICAgdihCeXRlY29kZVB0clRhZywgUHRyVGFnQ2FsbGVl
VHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2Jl
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2
ZSkgXAogICAgIHYoSklUUHJvYmVFeGVjdXRvclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0
aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlU3RhY2tJbml0
aWFsaXphdGlvbkZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAotICAgIHYoU2xvd1BhdGhQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyogSklUIE5h
dGl2ZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6TmF0aXZlICovIFwKICAgICB2KE5h
dGl2ZVRvSklUR2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJU
eXBlOjpOYXRpdmUpIFwKLSAgICAvKiBOYXRpdmUgSklUICovIFwKKyAgICB2KFlhcnJFbnRyeVB0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwK
KyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpKSVQgKi8gXAogICAgIHYoSG9zdEZ1bmN0aW9u
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkg
XAogICAgIHYoT3BlcmF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoSklUVG9OYXRpdmVHYXRlUHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIC8qIEpJVCBK
SVQgKi8gXAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOkpJVCAqLyBcCiAgICAgdihFeGNlcHRp
b25IYW5kbGVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6
OkpJVCkgXAogICAgIHYoSklUVGh1bmtQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRy
VGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKSVRTdHViUm91dGluZVB0clRhZywgUHRyVGFn
Q2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpTRW50cnlQ
dHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCisg
ICAgdihKU0VudHJ5U2xvd1BhdGhQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKU0ludGVybmFsUHRyVGFnLCBQdHJUYWdDYWxsZWVU
eXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNTd2l0Y2hQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihP
U1JFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKICAgICB2KE9TUkV4aXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihXYXNtRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyOEJpdFB0clRhZywg
UHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlh
cnIxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKLSAgICB2KFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpK
SVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoWWFyck1hdGNoT25seTE2Qml0UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAg
IHYoWWFyckJhY2t0cmFja1B0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKIAogI2RlZmluZSBKU0NfREVDTEFSRV9QVFJUQUcobmFtZSwgdHlwZSwg
dGFyZ2V0KSBXVEZfREVDTEFSRV9QVFJUQUcobmFtZSkKQEAgLTEwOCwxOCArMTE1LDI4IEBAIEZP
Ul9FQUNIX0pTQ19QVFJUQUcoSlNDX0RFQ0xBUkVfUFRSVEFHKQogI3ByYWdtYSB3YXJuaW5nKHBv
cCkKICNlbmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBQdHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5
cGUoUHRyVGFnKTsKK0pTX0VYUE9SVF9QUklWQVRFIFB0clRhZ0NhbGxlZVR5cGUgY2FsbGVlVHlw
ZShQdHJUYWcpOworCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCBQdHJUYWdDYWxsZWVUeXBlIGNhbGxl
ZVR5cGUsIFB0clRhZ0NhbGxlclR5cGUgY2FsbGVyVHlwZSwgdHlwZW5hbWUgUHRyVHlwZT4KIEFM
V0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUgdGFnSlNDQ29kZVB0ckltcGwoUHRyVHlwZSBwdHIp
CiB7CiAgICAgc3RhdGljX2Fzc2VydChjYWxsZXJUeXBlID09IFB0clRhZ0NhbGxlclR5cGU6OkpJ
VCk7CiAgICAgaWYgY29uc3RleHByIChjYWxsZWVUeXBlID09IFB0clRhZ0NhbGxlZVR5cGU6Ok5h
dGl2ZSkgewotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyAhPSBKSVRUb05hdGl2ZUdhdGVQdHJU
YWcpIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8
fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
dGFnID09IE9wZXJhdGlvblB0clRhZykKLSAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0
OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Ci0gICAgICAgICAgICBlbHNl
IGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgICAg
ICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7
Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFn
IHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAgICAgICBpZiBjb25zdGV4cHIgKHRh
ZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0
YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7CisgICAgICAgIGVsc2UgaWYgY29uc3Rl
eHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAgICAgICAgICAgSklUT3BlcmF0aW9u
TGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKKyAgICAgICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2Uo
KS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0cikpKTsKKyNlbmRpZgorICAgIH0gZWxz
ZSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihqaXRDYWdlUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSwgdGFnKSk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0
dXJuIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8dGFnPihwdHIpOwogfQpAQCAtMTI5LDE3ICsx
NDYsNjQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgUHRyVHlwZSB1bnRhZ0pTQ0NvZGVQdHJJbXBs
KFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2FsbGVyVHlwZSA9PSBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2FsbGVlVHlwZSA9PSBQdHJUYWdD
YWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3RleHByICh0YWcgIT0gSklUVG9O
YXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVy
YXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7Ci0gICAgICAgICAgICBp
ZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklU
T3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOwotICAg
ICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCi0g
ICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RG
dW5jdGlvbihwdHIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJU
YWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
dGFnID09IE9wZXJhdGlvblB0clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omlu
c3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKKyAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVyYXRp
b25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7CisjaWYgRU5BQkxF
KEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9uTGlz
dDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0cikpKSA9PSBwdHIp
OworICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUNvZGVQdHJUYWcocHRyKTsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChP
cHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAgIFB0clR5cGUgcmVtb3ZlZCA9IHJl
bW92ZUNvZGVQdHJUYWcocHRyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCh0YWdKU0ND
b2RlUHRySW1wbDx0YWcsIGNhbGxlZVR5cGUsIGNhbGxlclR5cGU+KHJlbW92ZWQpKSA9PSBwdHIp
OworICAgICAgICAgICAgcmV0dXJuIHJlbW92ZWQ7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0K
ICAgICByZXR1cm4gV1RGOjp1bnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRyKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KK2lubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJXaXRo
U3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2lu
dGVyKQoreworICAgIEFTU0VSVChwdHIpOworICAgIFVOVVNFRF9QQVJBTShzdGFja1BvaW50ZXIp
OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQor
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpTQ19KSVRfQ0FHRShiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHB0ciksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0YWNrUG9pbnRlcikp
KTsKKyNlbmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJuIHB0cmF1dGhfc2lnbl91bmF1
dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3
aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsK
KyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgoraW5saW5lIFB0clR5cGUg
dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0
IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURfUEFS
QU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBQdHJUeXBlIHVuY2FnZWQgPSByZW1vdmVDb2RlUHRy
VGFnKHB0cik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2lu
dGVyRm9ySklUQ2FsbCh1bmNhZ2VkLCBzdGFja1BvaW50ZXIpID09IHB0cik7CisgICAgICAgIHJl
dHVybiB1bmNhZ2VkOworICAgIH0KKyNlbmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJu
IF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVu
dF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKKyNlbHNlCisgICAg
cmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRB
R19ERUJVR0dJTkcpCiB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKTsKICNlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaAppbmRleCBhZGQyNjRlOTA5
NzViMjY1ZmQ1YmUxMGYyNjMyZmQ3NWUyODZjODFjLi5mMzA1ZTRhMTY0ZDAxZmZiMWY4MWM3OWVi
NWU0OWYwNDViODE4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRjaFJlc3VsdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNo
UmVzdWx0LmgKQEAgLTM0LDcgKzM0LDEwIEBAIHN0cnVjdCBNYXRjaFJlc3VsdDsKICNpZiBDUFUo
QUREUkVTUzMyKQogdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gdWludDY0X3Q7CiAjZWxzZQot
dXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gTWF0Y2hSZXN1bHQ7CitzdHJ1Y3QgRW5jb2RlZE1h
dGNoUmVzdWx0IHsKKyAgICBzaXplX3Qgc3RhcnQ7CisgICAgc2l6ZV90IGVuZDsKK307CiAjZW5k
aWYKIAogc3RydWN0IE1hdGNoUmVzdWx0IHsKQEAgLTU2LDYgKzU5LDEyIEBAIHN0cnVjdCBNYXRj
aFJlc3VsdCB7CiAgICAgICAgICwgZW5kKGJpdHdpc2VfY2FzdDxNYXRjaFJlc3VsdD4obWF0Y2gp
LmVuZCkKICAgICB7CiAgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0
KEVuY29kZWRNYXRjaFJlc3VsdCBtYXRjaCkKKyAgICAgICAgOiBzdGFydChtYXRjaC5zdGFydCkK
KyAgICAgICAgLCBlbmQobWF0Y2guZW5kKQorICAgIHsKKyAgICB9CiAjZW5kaWYKIAogICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDBkMmY1YWNmNzljZGY1NzQ5OGU2YTczYzA2
NzJkNmRkNGJmODg0NzguLmU3MTdkMzBlNjRkMTU5NzM0NzkyYTNmNDhiOTIxNjU3MmZiNDAzYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC01MCw2ICs1
MCwxMSBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgor
I2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxpdGllcy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzkyLDYgKzM5Nyw3IEBAIHN0YXRp
YyB2b2lkIGRpc2FibGVBbGxKSVRPcHRpb25zKCkKICAgICBPcHRpb25zOjp1c2VPTUdKSVQoKSA9
IGZhbHNlOwogICAgIE9wdGlvbnM6OnVzZURPTUpJVCgpID0gZmFsc2U7CiAgICAgT3B0aW9uczo6
dXNlUmVnRXhwSklUKCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1c2VKSVRDYWdlKCkgPSBmYWxz
ZTsKIH0KIAogdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKQEAgLTEx
MTQsNCArMTEyMCwxMCBAQCBib29sIE9wdGlvblJlYWRlcjo6T3B0aW9uOjpvcGVyYXRvcj09KGNv
bnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorYm9vbCBjYW5Vc2VKSVRDYWdlKCkgeyByZXR1cm4gSlNDX0pJVF9DQUdF
X1ZFUlNJT04oKTsgfQorI2Vsc2UKK2Jvb2wgY2FuVXNlSklUQ2FnZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBiZTg1OWVhOTFkY2FlOGMyMjcxOTAzZWEzYjAx
ZjZjZDBkNTFmNTkzLi4yMjVlMjI0ODNkMDlhYzIwM2JjYmVmZTVjYmE4ZDc1MmYwYWZlMDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQzLDYg
KzQzLDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSB0
cnVlOwogY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxz
ZTsKICNlbmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKKwog
Ly8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVmaW5lcyBh
IGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKQEAgLTUyMCw2ICs1MjIsNyBAQCBjb25z
dGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYo
VW5zaWduZWQsIHNlZWRGb3JMSUNNRnV6emVyLCA0MjQyNDIsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5LCAwLjUsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0
Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlSklU
Q2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogZW51bSBPcHRpb25F
cXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggOWM0YjU5NTQ2ZTZmOTYwYWI3NThlM2E1M2YyYjYx
ZGJiNjc0YzIxZS4uOTA2MjExMjFhODFlMzFiNTIxNzViNTk3ZDliYzQxMjY0ODY3NjMzYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgfSB3aGlsZSAo
ZmFsc2UpCiAKICNkZWZpbmUgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwgY2FsbFRh
cmdldCwgY2FsbFRhcmdldFRhZykgZG8geyBcCi0gICAgICAgIFdBU01fUkVUVVJOX1RXTygocmV0
YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFnPihjYWxsVGFyZ2V0KSksIHRh
cmdldEluc3RhbmNlKTsgXAorICAgICAgICBXQVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxj
YWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgdGFyZ2V0
SW5zdGFuY2UpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgQ09ERV9CTE9DSygp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggMjJiZjY2ZDhjODIy
ZGE5MWUwMzE4MDZhMmY2OWQzNmU0YmQ4ZjdiZC4uOTRkMzAyYWVhZmQ1MTZhNWIzZmM3ZjRiZjVm
Nzk1YTNmNTZjYTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAg
LTQwLDYgKzQwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKKyNp
ZiBDUFUoQVJNNjQpCitKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50
cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKKyNlbmRpZgorCiBNYXRj
aGluZ0NvbnRleHRIb2xkZXI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcihWTSYgdm0sIFlhcnJDb2Rl
QmxvY2sqIHlhcnJDb2RlQmxvY2ssIE1hdGNoRnJvbSBtYXRjaEZyb20pCiAgICAgOiBtX3ZtKHZt
KQogewpAQCAtMzc0Niw5ICszNzUwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHB1c2go
WDg2UmVnaXN0ZXJzOjplY3gpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIHRh
Z1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpIHsK
LSAgICAgICAgICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIp
OwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHgxMDAwMCksIHN1cHBsZW1lbnRhcnlQ
bGFuZXNCYXNlKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4ZDgwMCksIGxlYWRp
bmdTdXJyb2dhdGVUYWcpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHhkYzAwKSwg
dHJhaWxpbmdTdXJyb2dhdGVUYWcpOwpAQCAtMzgwMyw4ICszODA1LDcgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwogICAgICAgICBwb3AoWDg2
UmVnaXN0ZXJzOjplYnApOwogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBpZiAobV9kZWNvZGVT
dXJyb2dhdGVQYWlycykKLSAgICAgICAgICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIs
IGxpbmtSZWdpc3Rlcik7CisgICAgICAgIC8vIERvIG5vdGhpbmcKICNlbGlmIENQVShBUk1fVEhV
TUIyKQogICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyOCk7CiAgICAgICAgIHBvcChBUk1SZWdp
c3RlcnM6OnI2KTsKQEAgLTM4MTMsNyArMzgxNCwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbGlm
IENQVShNSVBTKQogICAgICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYKKworI2lmIENQVShBUk02
NCkKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0
aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KCZ2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpKSwgcmVn
VDApOworICAgICAgICBmYXJKdW1wKHJlZ1QwLCBPcGVyYXRpb25QdHJUYWcpOworI2Vsc2UKICAg
ICAgICAgcmV0KCk7CisjZW5kaWYKICAgICB9CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuaAppbmRleCA2NjQyOGUwNjYzZjMzMjA5MTc3ODFkYmI5ZDBjNzMwZDJiNmQ2
ODViLi4xNWI3YmQ2YTI2ZmY2ZTRiMDAxMjEyOTg5ZThmZGNlZWE1YTRiOGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC03Niw2ICs3Niw5IEBAIGNsYXNzIE1hdGNoaW5n
Q29udGV4dEhvbGRlciB7CiAjZW5kaWYKIH07CiAKK2V4dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVz
dWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNo
aW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7CitleHRlcm4gIkMiIHZvaWQgdm1FbnRy
eVRvWWFyckpJVEFmdGVyKHZvaWQpOworCiBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShZYXJyQ29kZUJs
b2NrKTsKQEAgLTEwOSwyNSArMTEyLDQxIEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgIE1h
dGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGlu
Z0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENvZGUoKSk7CisjaWYgQ1BV
KEFSTTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1
dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8
WWFycjhCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWY4LmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1
bmN0aW9uUHRyPFlhcnJKSVRDb2RlOCwgWWFycjhCaXRQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgbWF0Y2hpbmdD
b250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0
IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRw
dXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGhhczE2Qml0Q29kZSgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVy
biBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRw
dXQsICZtYXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyMTZCaXRQdHJUYWcsIFlhcnJF
bnRyeVB0clRhZz4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNl
CiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29k
ZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlm
CiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0
Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRDb2RlTWF0Y2hPbmx5
KCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZtRW50cnlU
b1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsICZtYXRjaGluZ0NvbnRleHQs
IHJldGFnQ29kZVB0cjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPiht
X21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAg
ICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9u
bHk4LCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250
ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVD
aGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250
ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZC
aXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NEUpCisgICAgICAgIHJldHVybiBNYXRj
aFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCAm
bWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBZ
YXJyRW50cnlQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8
WWFyckpJVENvZGVNYXRjaE9ubHkxNiwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFnPihtX21hdGNo
T25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwg
bnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUo
UkVHRVhQX1RSQUNJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5o
IGIvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAppbmRleCA3NzEzNjJiOTJhMmU1MjI5Mzk4
NGUxMTY1MWJkMmE5MzkzZDk4M2EyLi4yNjg4YTRlZmRmODE3ZGI3YWY2NjY5ODc1ZGYyM2E3OTg5
MzZhYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgT1NBbGxv
Y2F0b3IgewogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEg
cmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0
aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLiBy
ZXNlcnZlVW5jb21taXR0ZWQgcmV0dXJucyB0bwogICAgIC8vIHlvdSBtZW1vcnkgdGhhdCBpcyB6
ZXJvZWQuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21t
aXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUs
IGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNl
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRl
ZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9v
bCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBp
bmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24g
b2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3VsZApAQCAtNTUsMjcgKzU1LDI3IEBAIGNsYXNzIE9T
QWxsb2NhdG9yIHsKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVB
bmRDb21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNv
bW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0
ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBj
dXJyZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNh
Z2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBp
bmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdl
RW5hYmxlZCA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBz
dGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29t
bWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCiAgICAgLy8gY29tbWl0
dGluZy9kZWNvbW1pdHRpbmcgdGhlIGVudGlyZSByZWdpb24gYWRkaXRpb25hbCBwYXJhbWV0ZXJz
IGFsbG93IGEgc3VicmVnaW9uIHRvIGJlCiAgICAgLy8gc3BlY2lmaWVkLgotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNp
emUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJs
ZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXpl
X3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVl
LCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsK
IAogICAgIC8vIFJlYWxsb2NhdGUgYW4gZXhpc3RpbmcsIGNvbW1pdHRlZCBhbGxvY2F0aW9uLgog
ICAgIC8vIFRoZSBwcmlvciBhbGxvY2F0aW9uIG11c3QgYmUgZnVsbHkgY29taXR0ZWQsIGFuZCB0
aGUgbmV3IHNpemUgd2lsbCBhbHNvIGJlIGZ1bGx5IGNvbW1pdHRlZC4KICAgICAvLyBUaGlzIGlu
dGVyZmFjZSBpcyBwcm92aWRlZCBzaW5jZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gb3B0aW1pemUg
dGhpcyBvcGVyYXRpb24gb24gc29tZSBwbGF0Zm9ybXMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLSAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUs
IHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRy
dWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNv
bW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25v
d25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBi
b29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpOwogCiAgICAgLy8gSGludCB0byB0aGUgT1MgdGhh
dCBhbiBhZGRyZXNzIHJhbmdlIGlzIG5vdCBleHBlY3RlZCB0byBiZSBhY2Nlc3NlZCBhbnl0aW1l
IHNvb24uCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKHZvaWQqLCBzaXplX3QpOwogfTsKIAotaW5saW5lIHZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUs
IFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCitpbmxpbmUgdm9p
ZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXpl
X3QgY29tbWl0U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJs
ZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29t
bWl0dGVkKHJlc2VydmVTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZv
aWQqIGJhc2UgPSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJs
ZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIGNvbW1pdChiYXNlLCBjb21taXRT
aXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC04Niw5
ICs4Niw5IEBAIGlubGluZSB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2Uodm9p
ZCogcmVsZWFzZUJhc2UsIHNpemVfdCByZWxlYXNlU2l6CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1pbmxpbmUgVCogT1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQoVCogb2xkQmFz
ZSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0
YWJsZSwgYm9vbCBleGVjdXRhYmxlKQoraW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRl
Q29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5h
YmxlZCkKIHsKLSAgICB2b2lkKiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZl
QW5kQ29tbWl0KG5ld1NpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVu
YWJsZWQpOwogICAgIG1lbWNweShuZXdCYXNlLCBvbGRCYXNlLCBzdGQ6Om1pbihvbGRTaXplLCBu
ZXdTaXplKSk7CiAgICAgZGVjb21taXRBbmRSZWxlYXNlKG9sZEJhc2UsIG9sZFNpemUpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUKj4obmV3QmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5o
CmluZGV4IGEyYWVlODg0ZTk4NjRjZDkzMjFhNmI0OTRlOWU2OTg4MjQ0MzEwMzAuLjQ5NGJmMDVl
MDAxNzE1Mzg1MWViMTBhNTUzM2MyMmZjNjVjYjc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BhZ2VSZXNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlv
bi5oCkBAIC01NSwxMiArNTUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUGFnZVJlc2Vy
dmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogcHVibGljOgotICAgIFBhZ2VSZXNlcnZhdGlv
bigpCi0gICAgICAgIDogbV9jb21taXR0ZWQoMCkKLSAgICAgICAgLCBtX3dyaXRhYmxlKGZhbHNl
KQotICAgICAgICAsIG1fZXhlY3V0YWJsZShmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFBhZ2VS
ZXNlcnZhdGlvbigpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIFBhZ2VCbG9jazo6YmFzZTsKICAg
ICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CkBAIC05MywyMiArODgsMjIgQEAgY2xhc3MgUGFnZVJl
c2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgICAgICByZXR1cm4gbV9jb21taXR0
ZWQ7CiAgICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBz
aXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdl
LCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UpCisgICAgc3Rh
dGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNh
Z2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1
ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0
dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUs
IHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxl
LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJl
c2VydmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENh
Z2VFbmFibGVkLCBmYWxzZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5h
YmxlZCwgZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJl
c2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdl
ID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wg
ZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZVdp
dGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0Fs
bG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRh
YmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZh
dGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6ZSgpICog
MiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2Nh
dG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3Jp
dGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
UGFnZVJlc2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6
ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRp
YyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHNpemVfdCBz
aXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdl
LCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0
Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVk
KHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChz
aXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2Fn
ZUVuYWJsZWQsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJs
ZWQsIHRydWUpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZSgpCkBAIC0xMjcsNyArMTIy
LDcgQEAgY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNpemUs
IGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBoYXNHdWFyZFBhZ2VzKQorICAg
IFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlLCBib29sLCBib29sIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgIDogUGFn
ZUJsb2NrKGJhc2UsIHNpemUsIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgICwgbV9jb21taXR0ZWQo
MCkKICAgICAgICAgLCBtX3dyaXRhYmxlKHdyaXRhYmxlKQpAQCAtMTM1LDkgKzEzMCw5IEBAIGNs
YXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICB7CiAgICAgfQog
Ci0gICAgc2l6ZV90IG1fY29tbWl0dGVkOwotICAgIGJvb2wgbV93cml0YWJsZTsKLSAgICBib29s
IG1fZXhlY3V0YWJsZTsKKyAgICBzaXplX3QgbV9jb21taXR0ZWQgeyAwIH07CisgICAgYm9vbCBt
X3dyaXRhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhlY3V0YWJsZSB7IGZhbHNlIH07CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCAwZDY2NjQxNzg2ZWJlOTQ2N2FlMDU5
NmQ1MDc3YTE2MDU5N2U4MDdhLi43NmFkMjM1OWExYTdiMzRlZjg5OWQ0MmIyZWM2ZTRkMTBiM2Rj
MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTg4OCwxMCArODg4LDEwIEBACiAjZXJy
b3IgIkVOQUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCiAjZW5k
aWYKIAotI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKLSNkZWZpbmUgVVNFX0pVTVBf
SVNMQU5EUyAxCisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiAoKFVTRShBUFBMRV9J
TlRFUk5BTF9TREspICYmIENQVShBUk02NEUpKSkKKyNkZWZpbmUgRU5BQkxFX0pJVF9DQUdFIDEK
ICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiBBU1NFUlRfRU5BQkxF
RAorI2lmIE9TKERBUldJTikgJiYgQ1BVKEFERFJFU1M2NCkgJiYgRU5BQkxFKEpJVCkgJiYgKEVO
QUJMRShKSVRfQ0FHRSkgfHwgQVNTRVJUX0VOQUJMRUQpCiAjZGVmaW5lIEVOQUJMRV9KSVRfT1BF
UkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCAyMmY0NjJi
MmE2NGRhYmY4YzA4NDlhOTIwZGVhYmQ5YTFjMWU1YmUyLi5mY2U5ZWRhMTMzYzliYjMxNjcwZTMy
ZTlkZjNhMDdhNGEyZGMzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVz
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTMwOCwzICszMDgsNyBA
QAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogI2RlZmluZSBVU0VfQ1RGT05UR0VUQURWQU5D
RVNfV09SS0FST1VORCAxCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2
NCkKKyNkZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oIGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgKaW5kZXggNWE0MjE3
MTExZDVmYTkxMjE3NjBhMjQyMWUwMjBiNWYxZGViNzhiYy4uYWM5MmVjMzE5NGRmYWM4NGMxNTNm
YjY2ZmFmZWVhM2NlOTYwNGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUHRyVGFnLmgK
KysrIGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgKQEAgLTM0NCw2ICszNDQsNyBAQCBib29sIGlz
VGFnZ2VkV2l0aChQdHJUeXBlIHZhbHVlKQogdGVtcGxhdGU8UHRyVGFnIHRhZywgdHlwZW5hbWUg
UHRyVHlwZT4KIHZvaWQgYXNzZXJ0SXNUYWdnZWRXaXRoKFB0clR5cGUgdmFsdWUpCiB7CisgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBXVEZfUFRSVEFHX0FTU0VSVChQdHJUYWdBY3Rpb246
OkRlYnVnQXNzZXJ0LCB2YWx1ZSwgdGFnLCBpc1RhZ2dlZFdpdGg8dGFnPih2YWx1ZSkpOwogfQog
CkBAIC00NDksMjAgKzQ1MCw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6
ZV90IG9sZExlbmd0aCwgc2l6ZV90IG5ld0xlbmd0aCkKICAgICByZXR1cm4gcHRyYXV0aF9hdXRo
X2FuZF9yZXNpZ24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRM
ZW5ndGgsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRy
V2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNr
UG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gcHRyYXV0aF9zaWduX3Vu
YXV0aGVudGljYXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJp
dHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBQdHJUeXBlPgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZv
ckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBB
U1NFUlQocHRyKTsKLSAgICByZXR1cm4gX19idWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1
dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNr
UG9pbnRlcikpOwotfQotCiB0ZW1wbGF0ZSA8UHRyVGFnIHRhZywgdHlwZW5hbWUgSW50VHlwZT4K
IGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTUyMCwxMiArNTA3
LDYgQEAgaW5saW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3QsIHNpemVfdCkKICAg
ICByZXR1cm4gcHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+Ci1pbmxp
bmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBw
dHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRy
VHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBl
Pjo6dmFsdWU+PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZv
ckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQogdGVt
cGxhdGUgPFB0clRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJ
bnRUeXBlIHB0ckludCkKIHsKQEAgLTU3Miw5ICs1NTMsNyBAQCB1c2luZyBXVEY6OnJldGFnQXJy
YXlQdHI7CiB1c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOwogCiB1c2luZyBXVEY6OnRhZ0Nv
ZGVQdHI7Ci11c2luZyBXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsK
IHVzaW5nIFdURjo6dW50YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3Rh
Y2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6cmV0YWdDb2RlUHRyOwogdXNpbmcgV1RG
OjpyZW1vdmVDb2RlUHRyVGFnOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDQ0NTQwNTljNTE1ZDJhNDEyYjQz
MmQwNzE0NmNmNmYwMTFkNDc2MGIuLjZjZWZkMmVlMmQzMTA1YzJkNDA0ODVmNjk2NWZlYmE4ODQ1
YjQzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVgu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBAIC0z
MSwxNCArMzEsMjcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9QYWdlQmxvY2suaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdFKQor
I2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklUCisj
ZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisjZWxz
ZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2RlZmlu
ZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9TKERB
UldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIG5hbWVzcGFjZSBXVEYgewogCi12
b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2Ug
dXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJk
UGFnZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRl
cywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRD
YWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAjaWYgT1MoTElOVVgpCiAg
ICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKICAgICBVTlVTRURfUEFSQU0od3JpdGFibGUpOwogICAg
IFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJs
ZWQpOwogICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMpOwogCiAgICAgdm9pZCog
cmVzdWx0ID0gbW1hcCgwLCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BS
SVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwpAQCAtNDYsNyArNTksNyBAQCB2b2lkKiBPU0FsbG9j
YXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wg
d3JpdGFibGUsCiAgICAgICAgIENSQVNIKCk7CiAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBN
QURWX0RPTlRORUVEKTsKICNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1p
dChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBpbmNsdWRlc0d1YXJkUGFnZXMp
OworICAgIHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0
YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAj
aWYgSEFWRShNQURWX0ZSRUVfUkVVU0UpCiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAvLyBU
byBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1pdCIgbW9kZWwsIHdlIGhhdmUgdG8gaW5p
dGlhbGx5IGRlY29tbWl0LgpAQCAtNTksNyArNzIsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRD
b21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVj
dXRhYmxlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNl
cnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFn
ZXMpCiB7CiAgICAgLy8gQWxsIFBPU0lYIHJlc2VydmF0aW9ucyBzdGFydCBvdXQgbG9naWNhbGx5
IGNvbW1pdHRlZC4KICAgICBpbnQgcHJvdGVjdGlvbiA9IFBST1RfUkVBRDsKQEAgLTcwLDggKzgz
LDE0IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywg
VXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvCiAKICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJ
VkFURSB8IE1BUF9BTk9OOwogI2lmIE9TKERBUldJTikKLSAgICBpZiAoZXhlY3V0YWJsZSkKLSAg
ICAgICAgZmxhZ3MgfD0gTUFQX0pJVDsKKyAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICBp
ZiAoaml0Q2FnZUVuYWJsZWQpCisgICAgICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9G
T1JfSklUX1dJVEhfSklUX0NBR0U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzIHw9
IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQ7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
aml0Q2FnZUVuYWJsZWQpOwogI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2lu
L09TQWxsb2NhdG9yV2luLmNwcAppbmRleCA5ZDZjMGFhNzQxMTM2Y2M4YTg0NmQwNDEyYTkyMWJk
YTJhYzM4YjQ3Li42ZDUyYzY2MmRmMDZmOTQ4MWE5MzM1YTdlZDJiNDUxNDM2NjQ2NGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGlj
IGlubGluZSBEV09SRCBwcm90ZWN0aW9uKGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkK
ICAgICAgICAgKHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0K
IAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVz
YWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9j
YXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFi
bGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBW
aXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRh
YmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC00Niw3ICs0Niw3IEBAIHZv
aWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwg
Ym9vbCB3cml0YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NB
bGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0
YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVB
bmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRh
YmxlLCBib29sLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYyhudWxs
cHRyLCBieXRlcywgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxl
LCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412620</attachid>
            <date>2020-10-29 00:11:58 -0700</date>
            <delta_ts>2020-10-29 00:35:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201029001157.patch</filename>
            <type>text/plain</type>
            <size>172683</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODIwNjEzYTgyNzliNTMxNWY1OGEzODlmNDE3MzA3NzZkMTM4OTRhLi4yYmE5OGJkYWRlOTcxNDNm
NGQ5MjUyMWNjYTM3NjYwYzI0NTA5Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMjAtMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAgICAgKEpTQzo6aW5p
dGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGppdC9UaHVua0dlbmVy
YXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAg
ICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojppbml0aWFsaXpl
KToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRlMTYpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29kZVB0cik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMTZDb2Rl
RnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgorICAgICAgICAoSlND
OjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0
RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldEV2YWxFbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KToKKyAgICAgICAg
KiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRo
cy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpk
aXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5j
cHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQpOgorICAg
ICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZUpT
R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21HYXRlVGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRy
eU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21PU1JFbnRyeUdh
dGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5r
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVUaHVuayk6CisgICAg
ICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6dW50
YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0clRodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmspOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5l
VGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayk6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICog
bGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29u
ZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAgICAgICAoSlNDOjp0
YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAgICAgKEpTQzo6Y2Fs
bGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAgICAgICAgKEpTQzo6
dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0NvZGVQdHJJbXBsKToK
KyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAg
ICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6TWF0Y2hSZXN1bHQ6
Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNhblVzZUpJVENhZ2Up
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB3YXNtL1dhc21T
bG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorCiAyMDIwLTEwLTI4ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dW1BsYXlTdGF0aW9uXSBBZGQgaGFuZGxpbmcgZm9yIGFjY2Vw
dCBmYWlsdXJlIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggYTFiM2UwYmMxNDM5MWY4YTViMmRmOWU1ZmE2ZjEyZjM0ODkz
NTcyNi4uYjI2Nzk3M2ExN2QxNWU0ZDU3YjFmZjE0YTg0MWVmNjhmNTk1MjA1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0xMC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL09TQWxsb2NhdG9yLmg6CisgICAg
ICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KToKKyAgICAgICAgKFdURjo6
T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQpOgorICAgICAgICAqIHd0Zi9QYWdlUmVz
ZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKToKKyAg
ICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJkUGFnZXMpOgorICAg
ICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdl
cyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6UGFnZVJlc2VydmF0aW9uKToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1Vc2Uu
aDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAgICAgIChXVEY6OmFzc2VydElzVGFnZ2Vk
V2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2Fs
bCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJG
b3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJ
WC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgor
ICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgICog
d3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpy
ZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFu
ZENvbW1pdCk6CisKIDIwMjAtMTAtMjggIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgQmV0dGVyIGNhY2hlIG91ciBzZXJpYWxpemF0aW9uIG9mIHRoZSBvdXRlciBU
RFogZW52aXJvbm1lbnQgd2hlbiBjcmVhdGluZyBGdW5jdGlvbkV4ZWN1dGFibGVzIGR1cmluZyBi
eXRlY29kZSBnZW5lcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTNkOGFiMGE0NzA5NmQwZDExM2U3ODNhZGQxNTQyOGY1Nzg0YzI1YS4uZTcxNmM2MTk5ZTA5OWUx
NjYxMzQ3YjQyOWQ1YjcyYmFiZmM2ZTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtODY3LDYgKzg2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCiAgICAgcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmgKICAgICBydW50aW1lL0Z1enplckFnZW50LmgKKyAgICBydW50
aW1lL0dhdGUuaAogICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNldC5oCiAgICAgcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAzZTdlMWNiMmE5YWRjZDhk
OGZjZmRlZDY1MDRmNGE2ODYyYmFhODkuLmNiYjk4MTYxY2JjMzgxOTIwYmQ4ZjU2ZTgwYTZkYzk5
ZWI1MDEwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODUzLDYgKzE4NTMs
NyBAQAogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxh
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Qjc2
NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLzsgfTsKIAkJ
RTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJl
bmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZF
RENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAg
LyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc1MENDODI1MDJFODdFMDA2QTBBQUIgLyog
SW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGlt
ZUZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1v
ZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzgzNTAwQTIzOTBE
OTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8qIFdhc21HbG9iYWwu
aCAqLzsgfTsKQEAgLTUwNjEsNiArNTA2Miw3IEBACiAJCUUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgx
OCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21PTUdGb3JP
U1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Q0M5NDYyMDg2
MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0ZVRpbWVGb3JtYXRJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcw
MDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzI4MCw2ICs3MjgyLDcgQEAKIAkJCQlFMzNBOTQ5MjIyNTUzMjI5
MDBENDJCMDYgLyogRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRUNGQUQzNTIzNzJEQUE3MDAyOTE1
OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovLAogCQkJCUNFQ0ZBRDM0MjM3MkRBQTcwMDI5
MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkxMjUzRkE4N0UwMEJB
NjlBMCAvKiBHYXRlLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAg
LTk3MDEsNiArOTcwNCw3IEBACiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0
aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0E5NDk3MjI1NTMyMzMwMEQ0MkIw
NiAvKiBGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDRkFEMzYyMzcyREFEMDAw
MjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzcxMTk5
MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0Qx
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVKSVRTdHViUm91dGlu
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAppbmRleCBiM2NlMTc3OTJkMDE2N2Y0ZWM3YmVjY2E0
ZmRlODVjNDVjYmIxMGIwLi5lNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNhYmFjNzY1Yjc3ZDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlv
bkxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0
aW9uTGlzdC5jcHAKQEAgLTI2LDYgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSklUT3BlcmF0aW9uTGlzdC5oIgogCisjaW5jbHVkZSAiR2F0ZS5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZW5kaWYK
KwogbmFtZXNwYWNlIEpTQyB7CiAKIExhenlOZXZlckRlc3Ryb3llZDxKSVRPcGVyYXRpb25MaXN0
PiBqaXRPcGVyYXRpb25MaXN0OwpAQCAtNDUsMTggKzUzLDIyIEBAIHZvaWQgSklUT3BlcmF0aW9u
TGlzdDo6aW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikK
IHN0YXRpYyBTVVBQUkVTU19BU0FOIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQb2ludGVycyhIYXNo
TWFwPHZvaWQqLCB2b2lkKj4mIG1hcCwgY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0
IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNv
bnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBmb3IgKGNvbnN0IHVpbnRwdHJf
dCogY3VycmVudCA9IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyArK2N1cnJlbnQpIHsK
LSAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZv
aWQqPigqY3VycmVudCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8SG9z
dEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRp
b25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgSlNDX0pJVF9DQUdFRF9QT0lOVEVSX1JFR0lT
VFJBVElPTigpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAoY29uc3QgdWludHB0
cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7
ICsrY3VycmVudCkgewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3ZlQ29kZVB0clRhZyhi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChjb2RlUHRyKSB7Ci0g
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdOYXRpdmVD
b2RlUHRySW1wbDxPcGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQuaXNOZXdFbnRyeSk7CisjZW5kaWYKKyAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9F
TkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5I
b3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgeworICAgICAgICAgICAgdm9pZCog
Y29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkp
OworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAgbWFwLmFkZChjb2Rl
UHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRhZz4oY29kZVB0
cikpOworICAgICAgICB9CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJyZW50ID0g
YmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgewor
ICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0
PHZvaWQqPigqY3VycmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAg
ICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPE9wZXJhdGlv
blB0clRhZz4oY29kZVB0cikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMsNiArODUsNTYg
QEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29y
ZSgpCiAjZW5kaWYKIH0KIAordm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJz
SW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCkKK3sKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9W
QUxJREFUSU9OKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKworI2RlZmluZSBMTElOVF9PUChuYW1lKSBcCisgICAg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50Ojpn
ZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lKSksIFwKKyAgICBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obmFtZSkpLAorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9MT0NBVElPTihu
YW1lLCAuLi4pIFwKKyAgICBMTElOVF9PUChuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKQorCisgICAg
ICAgIGNvbnN0IHVpbnRwdHJfdCBvcGVyYXRpb25zW10gPSB7CisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSksCisgICAgICAgICAg
ICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
KSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSkpLAorICAgICAg
ICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxD
RnVuY3Rpb25QdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9u
UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPih3
YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscykpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PihsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKSksCisg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KSksCisK
KyAgICAgICAgICAgIExMSU5UX09QKG9wX2NhdGNoKQorICAgICAgICAgICAgTExJTlRfT1AobGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpCisKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NB
VElPTihvcF9nZXRfYnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
Z2V0X2J5X3ZhbCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlf
aWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKwor
ICAgICAgICAgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5fTE9DQVRJT04pCisg
ICAgICAgICAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJOX0xPQ0FUSU9OKQor
ICAgICAgICB9OworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBh
ZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJhdGlvbnMsIG51bGxw
dHIsIG51bGxwdHIsIG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJSQVlfTEVOR1RIKG9w
ZXJhdGlvbnMpKTsKKyN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KKyAgICB9KTsKKyNlbmRp
ZgorfQorCisKIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luRW1iZWRk
ZXIoY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwg
Y29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3Bl
cmF0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKaW5kZXggMDk4NDkz
ZjUwYjJhZDMzY2QxZDk3NTc0YTI4M2U5ZmY4Yjk2ODM2OS4uNWE0MGZmN2M4Y2ZhZDZiNDIwMzc3
M2JkMjRhZDU1N2I0Y2U0MjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKQEAgLTM5LDEyICszOSwxNSBAQCBjbGFzcyBKSVRP
cGVyYXRpb25MaXN0IHsKIAogICAgIHZvaWQqIGNvbnRhaW5zKHZvaWQqIHBvaW50ZXIpIGNvbnN0
CiAgICAgewotICAgICAgICBpZiBjb25zdGV4cHIoQVNTRVJUX0VOQUJMRUQpCi0gICAgICAgICAg
ICByZXR1cm4gbV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50
ZXIpKTsKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQorICAgICAgICByZXR1
cm4gbV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFnKHBvaW50ZXIpKTsK
KyNlbHNlCiAgICAgICAgIHJldHVybiBwb2ludGVyOworI2VuZGlmCiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKTsKKyAgICBzdGF0aWMg
dm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCk7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5FbWJlZGRlcihj
b25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBlbmRIb3N0LCBjb25z
dCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90KiBlbmRPcGVyYXRp
b25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAppbmRleCA0NWI0YjNiNDY5Njg1NTJkN2RhYzk3ODhhZmY2Y2YwYjQz
ZGIyNmM2Li40YzlhOWViYTRiNjRmNDFjMTBlOTQ0ZGYyNDM4YTZmZGVhMTdiYTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaApAQCAtMzM5Miw2ICszMzkyLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuYnIodGFyZ2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0
ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBnZXRDYWNoZWRE
YXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci5i
cihkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBh
ZGRyZXNzLCBQdHJUYWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIGdldENhY2hl
ZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgKaW5kZXggMzll
YTE1MTE0NzYxYTAwZTAwMDUwMzEwMGJlNzZiZGU0NGEyZjhjNC4uZDE4N2Q2OTMwZTZmZDlmNjY4
Mzc5OGRhMzM5YzVhMTM2ZDAzNGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMzIsNiArMzIsOSBAQAog
I2luY2x1ZGUgIkFSTTY0RUFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5j
bHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtMTEwLDIwICsxMTMsMjggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBSZWdpc3RlcklEIEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4oLTEpOwog
CiAgICAgZW51bSBjbGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAgIENGdW5jdGlvbkNh
bGwsCi0gICAgICAgIE90aGVyQ2FsbAorICAgICAgICBKSVRDYWxsLAorICAgICAgICBOYXRpdmVD
YWxsLAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEp1bXBTaWduYXR1cmVUeXBlIHsKKyAgICAg
ICAgSklUSnVtcCwKKyAgICAgICAgTmF0aXZlSnVtcCwKICAgICB9OwogCiAgICAgdGVtcGxhdGU8
Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFRydXN0
ZWRQdHIoUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBtX2Fzc2VtYmxlci5s
YWJlbCgpOwogICAgICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAg
aW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNp
Z25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHJh
YXooZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19K
SVRfQ0FHRURfQ0FMTCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIpOworI2VuZGlmCisg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIoZGF0YVRlbXBSZWdp
c3RlciwgdGFnR1BSKTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExhYmVsID0gbV9hc3Nl
bWJsZXIubGFiZWwoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVyTGFiZWwsIEFSTTY0
QXNzZW1ibGVyOjpnZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFiZWwsIHBvaW50ZXJM
YWJlbCkgPT0gUkVQQVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAgLTEzMiw1MSArMTQz
LDUzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVy
QVJNNjQgewogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFnIHRhZykKICAgICB7
Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXJBUk02NDo6Y2FsbCh0YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0
clRhZykKLSAgICAgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlw
ZTo6Q0Z1bmN0aW9uQ2FsbD4oKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcp
LCBBUk02NFJlZ2lzdGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2Fs
bFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAg
aWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAg
ICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJVENhbGw+KEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0
dXJlVHlwZTo6TmF0aXZlQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAg
IHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YWdH
UFIpOworICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5h
dGl2ZUNhbGw+KHRhZ0dQUik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5
cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFJlZ2lzdGVyKFJlZ2lzdGVySUQg
dGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAgICAgeworICAgICAg
ICBVTlVTRURfUEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BS
KTsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5
cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5ibHJhYXoodGFyZ2V0R1BSKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAg
SlNDX0pJVF9DQUdFRF9DQUxMKHR5cGUsIHRhcmdldEdQUiwgdGFnR1BSKTsKKyNlbmRpZgorICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFiKHRhcmdldEdQUiwgdGFn
R1BSKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9u
ZSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQot
ICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFyZ2V0R1BSLCB0
YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIHJl
dHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KHRhcmdl
dEdQUik7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBO
b1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3Rl
cnM6OmxyKTsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6
T3RoZXJDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIGlmIChj
YWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAgICAgICAgICAgcmV0
dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4odGFyZ2V0R1BSLCBB
Uk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWdu
YXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXRHUFIs
IFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxD
YWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgICAg
IHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChBZGRy
ZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRy
VGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwoYWRkcmVz
cywgdGFnKTsKLQorICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcg
IT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4gY2FsbChkYXRhVGVt
cFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KQEAgLTE5Nyw5MCArMjEwLDEyOSBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKIAogICAgIEFM
V0FZU19JTkxJTkUgSnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6anVt
cCgpOyB9CiAKLSAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFB0clRhZyB0YWcp
CisgICAgdGVtcGxhdGU8SnVtcFNpZ25hdHVyZVR5cGUgdHlwZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgZmFySnVtcFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRh
Z0dQUiA9IEludmFsaWRHUFIpCisgICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7Cisg
ICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIEpTQ19K
SVRfQ0FHRURfRkFSX0pVTVAodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOworI2VuZGlmCisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CisgICAgfQorCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBQdHJU
YWcgdGFnKQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwgdGFnKTsKKyAgICAg
ICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAg
ICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwog
CiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKICAgICAgICAgUmVnaXN0
ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0g
ICAgICAgIGZhckp1bXAodGFyZ2V0LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVl
VHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBS
ZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlH
UFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25h
dHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAK
LSAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVySUQgdGFnKQorICAg
IHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRhZykKICAgICB7Ci0g
ICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0
YXJnZXQsIHRhZyk7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIFJlZ2lzdGVySUQg
ZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRl
KCk7CisgICAgICAgIG1vdmUodGFyZ2V0LCB0YXJnZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0
ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcp
ID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxK
dW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6
Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lk
IGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZvaWQgZmFySnVtcChS
ZWdpc3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAgewotICAgICAgICBp
ZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJN
NjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJn
ZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1
bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAKLSAgICAgICAgQVNTRVJUKHRhZyAhPSBD
RnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgdGFnR1BSKQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIFJlZ2lzdGVy
SUQgZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9h
ZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyks
IGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZl
cnNpdHlHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJ
VEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0
YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0g
ICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAh
PSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0R1BSKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAgIGZhckp1bXBSZWdp
c3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0YWdHUFIpOwogICAg
IH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFnIHRhZykKKyAg
ICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BS
KQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisgICAgICAgIFJl
Z2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7CisgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgbG9h
ZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lz
dGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAg
fQogCi0gICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICB2b2lkIGZh
ckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNT
RVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBS
ZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1v
cnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQ
Uik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwor
ICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAg
ICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1w
UmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJz
aXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJl
Z2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRyVGFn
IHRhZykKICAgICB7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcg
IT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNo
ZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9hZDY0KGFk
ZHJlc3MsIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0
YWcpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAg
ICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0
R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVn
aXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5
R1BSKTsKICAgICB9CiAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Ms
IFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsK
LQorICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJU
YWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6
OkpJVCk7CiAgICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQ
UiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7CiAgICAgICAg
IGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQgZmFySnVtcChBYnNv
bHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewotICAgICAgICBSZWdp
c3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRh
dGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAgICAgIGxvYWQ2NChB
ZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCB0YWcpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJl
VHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+
KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmV0KCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7CisgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAg
ICAgICBKU0NfSklUX0NBR0VEX1JFVCgpOworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IDBj
NzU5N2JhZjY0MjY2NDk5NjM0YTU5ODAxN2JmYjY0YzMxNmE1NjQuLjJjOWI4ZmY4MDk1MTZlYjA3
NzQ0YmRmZjgyNjc3YTBjNmM0ZmRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzE5LDYgKzE3MTksMTIg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJnZXQpOwogICAgIH0K
IAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsK
KyAgICAgICAgbW92ZSh0YXJnZXQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICAvLyBBZGRyZXNzIGlzIGEg
bWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVtcCB0bwogICAgIHZv
aWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBl
NjNhYjQ3NTVmZjhhMWIwNjk3Y2NkNzNiNjIyMDIyZDZlYzAxOTYzLi5hZGFkNTRjYjAyNjE3ZDEx
OTcxYmIyNDVlMGEwM2Y0ZDhkYWRmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwMDQsNiArMjAwNCwxMyBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQogCisgICAg
dm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAgICAg
ICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5q
cihNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgIH0K
KwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CiAgICAg
ICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggMjhmYWUyZTcy
ZjI1NjU3ZTYxMzMwNWYyMDAzZGZjYmVhNWVlY2E5YS4uNzZkZGI1NzY5NGRhMjRmNGFlODA1YjA0
OTNiNDJhOGU2NDJmMzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1MCw2ICsyNzUwLDEy
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmptcF9yKHRhcmdldCk7
CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcp
CisgICAgeworICAgICAgICBtb3ZlKHRhcmdldCwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgLy8g
QWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNzIHRvIGp1
bXAgdG8KICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXgg
MmZlZDE4MmU0NTdmNzQ2NjI2NWY2NWIxNGM1OTQzMWYyM2U4NGFkMS4uMDU3YjMwNzhjMmI3ZTg2
OTM5MzJiOTA1ZjE5NGQzZjc3YjQ2NDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xNDAzLDYgKzE0MDMsNyBAQAogb3AgOmxsaW50
X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9v
c3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lCiBvcCA6Y2hlY2twb2ludF9vc3Jf
ZXhpdF90cmFtcG9saW5lCitvcCA6bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUKIG9wIDpmdXp6
ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6bGxpbnRfZ2V0X2hvc3RfY2FsbF9y
ZXR1cm5fdmFsdWUKIG9wIDpsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uCkBAIC0xNDE5
LDYgKzE0MjAsNDAgQEAKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2FzbV9mdW5j
dGlvbl9wcm9sb2d1ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24K
K29wIDpvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9pdGVyYXRvcl9v
cGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4dF9zbG93X3JldHVy
bl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWls
X2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93
X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVybl9sb2NhdGlvbgor
CitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsCitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2Nh
bGwKK29wIDpqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdAorb3AgOmpzX3RyYW1wb2xpbmVfb3Bf
aXRlcmF0b3JfbmV4dAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbgorb3AgOmpz
X3RyYW1wb2xpbmVfb3BfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxf
c2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29wIDpqc190cmFtcG9s
aW5lX29wX2NhbGxfdmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxf
dmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHNfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdwor
b3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29w
X2l0ZXJhdG9yX25leHRfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbl9z
bG93CitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
a191bnRhZworb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tfdGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrX3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGwK
K29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscworb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfaW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3RscworCiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwogCiBiZWdpbl9zZWN0aW9u
IDpXYXNtLApAQCAtMTQzMyw2ICsxNDY4LDExIEBACiAKIG9wIDp0aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lCiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfbm9fdGxz
X3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCitvcCA6
Y2FsbF9pbmRpcmVjdF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKICMgRklYTUU6IFdhc20gYW5k
IEpTIExMSW50IHNob3VsZCBzaGFyZSBjb21tb24gb3Bjb2RlcwogIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTUwM2JmMDM4NDdhNjQ4NTMzOTExMjc3
NjhkNzAyNTBlODlhNTM4Li5iMDYxNTBmY2NmNGM3ZGRhNWU1MWNjNWZhZDYzY2QzMTFkMTgyMzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0zMjAsNiArMzIwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIGxsaW50
X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb246CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9leGl0
X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVja3BvaW50X29zcl9l
eGl0X3RyYW1wb2xpbmU6CisgICAgY2FzZSBub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZToKICAg
ICBjYXNlIGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQ6CiAgICAgY2FzZSBvcF9p
dGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2l0ZXJhdG9yX25leHRf
cmV0dXJuX2xvY2F0aW9uOgpAQCAtMzMxLDggKzMzMiw0MCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSQogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9yZXR1
cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfaXRl
cmF0b3Jfb3Blbl9zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX25l
eHRfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2NhbGxfcmV0dXJuX2xv
Y2F0aW9uOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9u
OgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb246Cisg
ICAgY2FzZSBvcF9jYWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAgICAgY2FzZSB3YXNt
X2Z1bmN0aW9uX3Byb2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190
bHM6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGw6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX3RhaWxfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0Ogor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0OgorICAgIGNhc2UganNfdHJh
bXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxs
X3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9zbG93OgorICAgIGNh
c2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfb3BfY2FsbF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxf
Y2FsbF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50c19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1
Y3RfdmFyYXJnc19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsX2V2YWxfc2xv
dzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9zbG93OgorICAgIGNh
c2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3c6CisgICAgY2FzZSBqc190cmFt
cG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnOgorICAgIGNh
c2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWc6
CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKKyAgICBjYXNlIHdhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAK
aW5kZXggZGQ2NjZmYWE4M2U4MzUwOWU2NWIwNzU1NzYyMmYwOGE5NDk0MjFiZC4uYWM0YjhjNTcz
YjgyNmI2YTMwYzYzZmVkYjQyNThiNWFmYmViNTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMTM4LDIx
ICsxMzgsMjEgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgIGRvbmVBZGp1c3RpbmcubGluaygmaml0
KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVy
blBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXgg
Y2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtp
bmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE9T
UkV4aXRQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tG
b3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFt
ZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCiB7CiAgICAg
Y2FsbGVySXNMTEludCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBiYXNlbGlu
ZUNvZGVCbG9ja0ZvckNhbGxlci0+aml0VHlwZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1
bms7CiAKICAgICBpZiAoY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKSB7CiAgICAgICAg
IGlmICghY2FsbGVySXNMTEludCkKICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2Fs
bGVyLT5tX2hhc0xpbmtlZE9TUkV4aXQgPSB0cnVlOwotICAgICAgICByZXR1cm4gTExJbnQ6Omdl
dENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRf
Y2FsbF90cmFtcG9saW5lKTsKKyAgICAgICAgcmV0dXJuIExMSW50OjpjaGVja3BvaW50T1NSRXhp
dEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICB9CiAKLSAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldDsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4ganVtcFRhcmdldDsKIAogICAgIGNvbnN0
IEluc3RydWN0aW9uJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxs
ZXItPmluc3RydWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5wdHIoKTsKICAgICBpZiAo
Y2FsbGVySXNMTEludCkgewotI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgKGNh
bGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRy
eVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbEluc3RydWN0aW9uLmlzV2lk
ZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG5hbWUpIExM
SW50OjpyZXR1cm5Mb2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9jYXRpb24sIGNhbGxJbnN0
cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkKIAogICAgICAgICBzd2l0Y2ggKHRydWVDYWxsZXJDYWxs
S2luZCkgewogICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDogewpAQCAtMjA5LDcg
KzIwOSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1
cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgYmFzZWxp
bmVDb2RlQmxvY2tGb3JDYWxsZXItPmdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2Fs
bEJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZv
KTsKIAotICAgICAgICAgICAganVtcFRhcmdldCA9IGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxv
Y2F0aW9uKCkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIGp1bXBUYXJn
ZXQgPSBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLnJldGFnZ2VkPE9TUkV4aXRQ
dHJUYWc+KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMjYsMTMgKzIy
NiwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJu
UEMoQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jawogICAgICAgICAgICAgICAgIC8vIDYuIChC
KSBnZXRzIE9TUiBleGl0LiAoQikgYXR0ZW1wdHMgdG8gc2VhcmNoIGZvciBTdHJ1Y3R1cmVTdHVi
SW5mbyBpbiAoQSkgZm9yIFB1dEJ5SWQgKG9yaWdpbmFsbHksIHB1dF9ieV92YWwpLiBCdXQgaXQg
ZG9lcyBub3QgZXhpc3Qgc2luY2UgKEEpJ3MgSklURGF0YSBpcyBjbGVhcmVkIG9uY2UuCiAgICAg
ICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBiYXNlbGluZUNvZGVCbG9ja0ZvckNh
bGxlci0+ZmluZEJ5VmFsSW5mbyhDb2RlT3JpZ2luKGNhbGxCeXRlY29kZUluZGV4KSk7CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnlWYWxJbmZvKTsKLSAgICAgICAgICAgICAgICBq
dW1wVGFyZ2V0ID0gYnlWYWxJbmZvLT5kb25lVGFyZ2V0LnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+
KCk7CisgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGJ5VmFsSW5mby0+ZG9uZVRhcmdldC5y
ZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBiYXNl
bGluZUNvZGVCbG9ja0ZvckNhbGxlci0+ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVj
b2RlSW5kZXgpKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAg
ICAgICAgIGp1bXBUYXJnZXQgPSBzdHViSW5mby0+ZG9uZUxvY2F0aW9uLnJldGFnZ2VkPEpTRW50
cnlQdHJUYWc+KCk7CisgICAgICAgICAgICBqdW1wVGFyZ2V0ID0gc3R1YkluZm8tPmRvbmVMb2Nh
dGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFnPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyID0g
aml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCp0cnVlQ2FsbGVyKTsKICAgICAgICAgICAgIGF1dG8g
Y2FsbEJ5dGVjb2RlSW5kZXggPSB0cnVlQ2FsbGVyLT5ieXRlY29kZUluZGV4KCk7Ci0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdldCA9IGNh
bGxlclJldHVyblBDKGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBjYWxsQnl0ZWNvZGVJbmRl
eCwgdHJ1ZUNhbGxlckNhbGxLaW5kLCBjYWxsZXJJc0xMSW50KTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBqdW1wVGFyZ2V0ID0gY2FsbGVyUmV0dXJu
UEMoYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIGNhbGxCeXRlY29kZUluZGV4LCB0cnVlQ2Fs
bGVyQ2FsbEtpbmQsIGNhbGxlcklzTExJbnQpOwogCiAgICAgICAgICAgICBpZiAodHJ1ZUNhbGxl
ci0+aW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBqaXQuYWRkUHRyKApAQCAt
NDAyLDExICs0MDIsMTEgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgaWYgKGV4aXRUb0xM
SW50KSB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGVJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgoKTsKICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVj
dGlvbiA9ICpjb2RlQmxvY2tGb3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4
KS5wdHIoKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRl
c3RpbmF0aW9uOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8T1NSRXhpdFB0clRhZz4g
ZGVzdGluYXRpb247CiAgICAgICAgIGlmIChieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAg
ICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4o
Y2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAg
ICAgICBlbHNlIAotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgZGVzdGluYXRp
b24gPSBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKIAogICAg
ICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkgewogICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBHUFJJ
bmZvOjpyZWdUMik7CkBAIC00MTYsMjIgKzQxNiwyMiBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1Rh
cmdldChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkK
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9ja0Zv
ckV4aXQtPm1ldGFkYXRhVGFibGUoKSksIExMSW50OjpSZWdpc3RlcnM6Om1ldGFkYXRhVGFibGVH
UFIpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJs
b2NrRm9yRXhpdC0+aW5zdHJ1Y3Rpb25zUmF3UG9pbnRlcigpKSwgTExJbnQ6OlJlZ2lzdGVyczo6
cGJHUFIpOwogICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihieXRl
Y29kZUluZGV4Lm9mZnNldCgpKSwgTExJbnQ6OlJlZ2lzdGVyczo6cGNHUFIpOwotICAgICAgICBq
dW1wVGFyZ2V0ID0gZGVzdGluYXRpb24ucmV0YWdnZWQ8T1NSRXhpdFB0clRhZz4oKS5leGVjdXRh
YmxlQWRkcmVzcygpOworICAgICAgICBqdW1wVGFyZ2V0ID0gZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb2RlQmxvY2tGb3JFeGl0LT5tX2hh
c0xpbmtlZE9TUkV4aXQgPSB0cnVlOwogCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdEluZGV4
ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwotICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxPU1JFeGl0UHRyVGFnPiBkZXN0aW5hdGlvbjsKICAgICAgICAgaWYgKGV4
aXRJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50Ojpn
ZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSk7
CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50T1NSRXhpdFRyYW1w
b2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
Y29kZUJsb2NrRm9yRXhpdC0+Ynl0ZWNvZGVJbmRleEZvckV4aXQoZXhpdEluZGV4KSA9PSBleGl0
SW5kZXgpOwotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2RlQmxvY2tGb3JFeGl0LT5qaXRD
b2RlTWFwKCkuZmluZChleGl0SW5kZXgpOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBjb2Rl
QmxvY2tGb3JFeGl0LT5qaXRDb2RlTWFwKCkuZmluZChleGl0SW5kZXgpLnJldGFnZ2VkPE9TUkV4
aXRQdHJUYWc+KCk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoZGVzdGluYXRpb24pOwog
Ci0gICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlvbi5yZXRhZ2dlZDxPU1JFeGl0UHRyVGFn
PigpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGp1bXBUYXJnZXQgPSBkZXN0aW5hdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgIH0KIAogICAgIGppdC5hZGRQdHIoQXNzZW1ibHlI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoSklUOjpzdGFja1BvaW50ZXJPZmZzZXRGb3IoY29kZUJsb2Nr
Rm9yRXhpdCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEFzc2VtYmx5SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKaW5kZXggMzkx
MTRlYTY3NzAwMmE5ODJmMmViODFlN2QyOGY4NmYyMjhmNmQwZC4uZGJhMGZlMzIyYmY4ODFjOTVj
MjJkYjg1MDYxNjI0MjA0YTZhYWM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCkBAIC0zOSw3ICszOSw2IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHZvaWQgaGFuZGxlRXhpdENvdW50cyhWTSYsIEND
YWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIHJlaWZ5SW5saW5lZENhbGxG
cmFtZXMoQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgYWRqdXN0QW5k
SnVtcFRvVGFyZ2V0KFZNJiwgQ0NhbGxIZWxwZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxv
Y2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29k
ZUluZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQgY2FsbGVyS2luZCwgYm9vbCYgY2FsbGVySXNM
TEludCk7CiBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlU2F2ZVNsb3QoSW5saW5lQ2FsbEZy
YW1lKiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaywgR1BSUmVnIGNhbGxlZVNhdmUpOwog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSklUQ29kZVR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAppbmRleCBmZjlhOGFmZDA1OTQ1YzI5
Yjk3OGMxZmYzY2Y5N2EyMjJiYjRiOTIxLi45YmU2NGJiZGYwZjI4ZmQ1NzRhNDI1ODg0Y2Q1MzQx
ZGYxYTY2NGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKQEAgLTQ4LDYgKzQ4LDE4IEBACiAjaW5jbHVkZSA8bWFjaC9tYWNoLmg+
CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNp
bmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5B
QkxFKEpJVF9DQUdFKQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9S
X0pJVCBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FH
RSBNQVBfSklUCisjZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVQgMAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAor
I2VuZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIGV4dGVy
biAiQyIgewogICAgIC8qIFJvdXRpbmUgbWFjaF92bV9yZW1hcCAqLwogI2lmZGVmIG1pZ19leHRl
cm5hbApAQCAtMTM5LDggKzE1MSw4IEBAIHZvaWQgRXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklU
RW5hYmxlZChib29sIGVuYWJsZWQpCiAKICAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0g
MTsKICAgICAgICAgY29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9X
UklURSB8IFBST1RfRVhFQzsKLSAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklW
QVRFIHwgTUFQX0FOT04gfCBNQVBfSklUOwogICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NB
bGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzOworICAgICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFU
RSB8IE1BUF9BTk9OIHwgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSA/IE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVRfV0lUSF9KSVRfQ0FHRSA6IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQpOwogICAgICAgICB2
b2lkKiBhbGxvY2F0aW9uID0gbW1hcChudWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywg
ZmQsIDApOwogICAgICAgICBjb25zdCB2b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZh
aWx1cmUgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigtMSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRShhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1l
bW9yeUFsbG9jYXRpb25GYWlsdXJlLCAiV2Ugc2hvdWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVj
dXRhYmxlIG1lbW9yeSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBKSVQuIik7CkBAIC0zMjQsOSArMzM2
LDkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSklUUmVzZXJ2YXRpb24gaW5pdGlhbGl6ZUpJVFBh
Z2VSZXNlcnZhdGlvbigpCiAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIGZvbGxvd2luZyBKSVQg
Y29kZSBsb2dnaW5nIGJyb2tlbiBhbmQgc29tZSBvZiBKSVQgY29kZSBpcyBub3QgcmVjb3JkZWQg
Y29ycmVjdGx5LgogICAgICAgICAvLyBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHdlIHVzZSBjb21t
aXR0ZWQgcmVzZXJ2YXRpb24gaWYgd2UgbmVlZCBwZXJmIEpJVER1bXAgbG9nZ2luZy4KICAgICAg
ICAgaWYgKE9wdGlvbnM6OmxvZ0pJVENvZGVGb3JQZXJmKCkpCi0gICAgICAgICAgICByZXR1cm4g
UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRp
b25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklU
QUJMRSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZl
QW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNK
SVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgZmFsc2UpOwogI2Vu
ZGlmCi0gICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3VhcmRQYWdl
cyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJM
RV9QT09MX1dSSVRBQkxFLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6
cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklU
Q29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSk7CiAgICAgfTsKIAogICAgIHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbiA9IHRy
eUNyZWF0ZVBhZ2VSZXNlcnZhdGlvbihyZXNlcnZhdGlvbi5zaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgKaW5kZXggNzRkYWUyMjZmNTQ1YjdhYWFmMzQ3ODc0NDMzNjQyNzAwMTVi
ZDBhNC4uOGY0NWIzNzdjMTY5NmE1MTZhODQzMDBiODkyMWY2YWRkNmEzZDRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTQ2NSw2ICs0NjUsMTAgQEAgY2xhc3MgR1BSSW5m
byB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
ID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IFg4NlJl
Z2lzdGVyczo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjEgPSBYODZSZWdpc3RlcnM6
OmVheDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBYODZS
ZWdpc3RlcnM6OmVheDsKKyNpZiAhT1MoV0lORE9XUykKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyB3YXNtU2NyYXRjaEdQUjEgPSBYODZSZWdpc3RlcnM6OnIxMDsKKyNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IEkgYmVsaWV2ZSB0aGF0IGFsbCB1c2VzIG9mIHRoaXMgYXJlIGRlYWQgaW4gdGhl
IHNlbnNlIHRoYXQgaXQganVzdCBjYXVzZXMgdGhlIHNjcmF0Y2gKICAgICAvLyByZWdpc3RlciBh
bGxvY2F0b3IgdG8gc2VsZWN0IGEgZGlmZmVyZW50IHJlZ2lzdGVyIGFuZCBwb3RlbnRpYWxseSBz
cGlsbCB0aGluZ3MuIEl0IHdvdWxkIGJlIGJldHRlcgpAQCAtNjM0LDcgKzYzOCw3IEBAIGNsYXNz
IEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMyA9IEFSTTY0UmVn
aXN0ZXJzOjp4MjI7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyByZWdDUzQgPSBBUk02NFJlZ2lzdGVyczo6eDIzOyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gQVJNNjRSZWdpc3RlcnM6OngyNDsg
Ly8gVXNlZCBieSBGVEwgb25seQotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNiA9
IEFSTTY0UmVnaXN0ZXJzOjp4MjU7IC8vIFVzZWQgYnkgRlRMIG9ubHkKKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gQVJNNjRSZWdpc3RlcnM6OngyNzsgLy8gbnVtYmVy
VGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6
OngyODsgLy8gbm90Q2VsbE1hc2sKQEAgLTY1NCw2ICs2NTgsOCBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAg
PSBBUk02NFJlZ2lzdGVyczo6eDg7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJl
c2VydmVkTm9uQXJndW1lbnRHUFIxID0gQVJNNjRSZWdpc3RlcnM6Ong5OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVy
czo6aXAwOworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IEFS
TTY0UmVnaXN0ZXJzOjp4OTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRj
aEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDEwOwogCiAgICAgLy8gR1BSUmVnIG1hcHBpbmcgaXMg
ZGlyZWN0LCB0aGUgbWFjaGluZSByZWdpc3RlciBudW1iZXJzIGNhbgogICAgIC8vIGJlIHVzZWQg
ZGlyZWN0bHkgYXMgaW5kaWNlcyBpbnRvIHRoZSBHUFIgUmVnaXN0ZXJCYW5rLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
LmNwcAppbmRleCAxOGU1ZmZlZTljYTM5M2I2ZTlmY2MxNDgwZTA3Mjc1MGM0NTI4ZmQ1Li5jNDUz
NDZlOTA0YTlkMTM3ZDc5NmRmMWY1MWM2OGQ5N2Y0MGViODI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBQb2x5bW9ycGhpY0NhbGxOb2RlOjp+UG9seW1vcnBoaWNDYWxsTm9k
ZSgpCiB2b2lkIFBvbHltb3JwaGljQ2FsbE5vZGU6OnVubGluayhWTSYgdm0pCiB7CiAgICAgaWYg
KG1fY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNh
c3NlbWJseSgpLCAiVW5saW5raW5nIHBvbHltb3JwaGljIGNhbGwgYXQgIiwgbV9jYWxsTGlua0lu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAiLCAiLCBtX2NhbGxMaW5rSW5mby0+Y29kZU9yaWdp
bigpKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCksICJV
bmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uKCksICIsIGJjIyIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkuYnl0ZWNv
ZGVJbmRleCgpKTsKICAgICAgICAgbV9jYWxsTGlua0luZm8tPnVubGluayh2bSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXgg
NzFkZDk4MDI4ZjQ3ZTk5N2U1MjUzMDBiN2MwZDZhYWI5Y2JmMmE4My4uMzYyNzI1NTE0YzEwYzhh
OTIyZDVmMDMyMDVmYzkzMjNkMGU1N2JjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNDQsMTMgKzQ0LDE1IEBAIGlubGluZSB2b2lkIGVt
aXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBvaW50ZXJHUFIs
IFRhZ1R5cGUKIHsKICAgICBpZiAoIUFTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGlzTm9uWmVybyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxs
SGVscGVyczo6Tm9uWmVybywgcG9pbnRlckdQUik7Ci0gICAgaml0LmFib3J0V2l0aFJlYXNvbihU
R0ludmFsaWRQb2ludGVyKTsKLSAgICBpc05vblplcm8ubGluaygmaml0KTsKLSAgICBqaXQucHVz
aFRvU2F2ZShwb2ludGVyR1BSKTsKLSAgICBqaXQudW50YWdQdHIodGFnLCBwb2ludGVyR1BSKTsK
LSAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7Ci0gICAgaml0LnBvcFRvUmVz
dG9yZShwb2ludGVyR1BSKTsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKKyAgICAgICAgaml0LmFib3J0V2l0aFJl
YXNvbihUR0ludmFsaWRQb2ludGVyKTsKKyAgICAgICAgaXNOb25aZXJvLmxpbmsoJmppdCk7Cisg
ICAgICAgIGppdC5wdXNoVG9TYXZlKHBvaW50ZXJHUFIpOworICAgICAgICBqaXQudW50YWdQdHIo
dGFnLCBwb2ludGVyR1BSKTsKKyAgICAgICAgaml0LmxvYWQ4KHBvaW50ZXJHUFIsIHBvaW50ZXJH
UFIpOworICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHBvaW50ZXJHUFIpOworICAgIH0KIH0KIAog
Ly8gV2Ugd2lsbCBqdW1wIGhlcmUgaWYgdGhlIEpJVCBjb2RlIHRyaWVzIHRvIG1ha2UgYSBjYWxs
LCBidXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IGJmYTRmM2JjOGVlMmI4OWY0MWI5Y2I5ODYwZjZmM2IzY2M4MWU1MjMuLmIwNTFkN2I4MzZjMWRh
NmQ4Y2YwNDE1ODMxODdjMDliNGIzZGM0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCkBAIC0zMCwxMiArMzAsMTMgQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJKU0NDb25maWcuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCisjaW5j
bHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVk
ZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAKICNkZWZpbmUgU1RBVElD
X0FTU0VSVChjb25kKSBzdGF0aWNfYXNzZXJ0KGNvbmQsICJMTEludCBhc3N1bWVzICIgI2NvbmQp
CiAKLQogbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBMTEludCB7CkBAIC00OSwxMiArNTAs
MjIgQEAgZXh0ZXJuICJDIiB2b2lkIHdhc21fZW50cnkodm9pZCosIHZvaWQqLCB2b2lkKik7CiAK
ICNlbmRpZiAvLyAhRU5BQkxFKENfTE9PUCkKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVy
biAiQyIgdm9pZCB2bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAi
QyIgdm9pZCB2bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lk
IHRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFpbENh
bGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGV4Y2Vw
dGlvbkhhbmRsZXJUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIHJldHVybkZyb21M
TEludFRyYW1wb2xpbmUodm9pZCk7CisjZW5kaWYKKwogdm9pZCBpbml0aWFsaXplKCkKIHsKICNp
ZiBFTkFCTEUoQ19MT09QKQogICAgIENMb29wOjppbml0aWFsaXplKCk7CiAKICNlbHNlIC8vICFF
TkFCTEUoQ19MT09QKQorCiAgICAgbGxpbnRfZW50cnkoJmdfanNjQ29uZmlnLmxsaW50Lm9wY29k
ZU1hcCwgJmdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUxNiwgJmdfanNjQ29uZmlnLmxs
aW50Lm9wY29kZU1hcFdpZGUzMik7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCkBAIC03Miw2
ICs4MywxMzIgQEAgdm9pZCBpbml0aWFsaXplKCkKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQu
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldID0gbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJh
bXBvbGluZTsKICAgICAgICAgZ19qc2NDb25maWcubGxpbnQud2FzbUV4Y2VwdGlvbkluc3RydWN0
aW9uc1tpXSA9IHdhc21fdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZTsKICAgICB9CisK
KyAgICBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZv
ckxMSW50KCk7CisKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oR2F0ZTo6aml0Q2FnZVB0cildID0gaml0Q2FnZVB0clRodW5rKCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7CisKKyNkZWZpbmUgSU5JVElBTElaRV9KU19HQVRFKG5hbWUsIHRh
ZykgXAorICAgIGRvIHsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmODsgXAorICAg
ICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmMTY7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4g
Y29kZVJlZjMyOyBcCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAg
ICAgICBjb2RlUmVmOC5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZv
aWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5j
dGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAj
bmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMTYuY29uc3RydWN0KGNyZWF0ZUpTR2F0ZVRo
dW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+
KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNf
cmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7IFwKKyAgICAgICAgICAg
IGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQq
LCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFn
LCAjbmFtZSAiX3dpZGUzMiIpKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICBj
b2RlUmVmOC5jb25zdHJ1Y3QoTExJbnQ6OmdldENvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pihqc190cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMTYuY29uc3Ry
dWN0KExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJh
bXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjMyLmNvbnN0cnVjdChMTElu
dDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVf
IyNuYW1lKSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVN
YXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUpXSA9IGNvZGVSZWY4LmdldCgpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lmdh
dGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMTYpXSA9IGNvZGVS
ZWYxNi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0Nv
bmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lk
ZTMyKV0gPSBjb2RlUmVmMzIuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAg
ICB9IHdoaWxlICgwKTsKKworICAgIEpTQ19KU19HQVRFX09QQ09ERVMoSU5JVElBTElaRV9KU19H
QVRFKQorCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorCisjZGVmaW5lIElOSVRJQUxJWkVfV0FT
TV9HQVRFKG5hbWUsIHRhZykgXAorICAgIGRvIHsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBj
b2RlUmVmODsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmMTY7IFwKKyAgICAgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPj4gY29kZVJlZjMyOyBcCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQo
KSkgeyBcCisgICAgICAgICAgICBjb2RlUmVmOC5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVu
ayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9s
b2NhdGlvbikpLCB0YWcsICNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1
Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRh
ZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRyPENGdW5j
dGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTE2
IikpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KGNyZWF0ZVdhc21HYXRlVGh1
bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4o
TExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19y
ZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUzMiIpKTsgXAorICAgICAgICB9IGVs
c2UgeyBcCisgICAgICAgICAgICBjb2RlUmVmOC5jb25zdHJ1Y3QoTExJbnQ6OmdldENvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPih3YXNtX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAg
ICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPih3YXNtX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAg
IGNvZGVSZWYzMi5jb25zdHJ1Y3QoTExJbnQ6OmdldFdpZGUzMkNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPih3YXNtX3RyYW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgfSBcCisgICAg
ICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6
Om5hbWUpXSA9IGNvZGVSZWY4LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisg
ICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdh
dGU6Om5hbWUjI193aWRlMTYpXSA9IGNvZGVSZWYxNi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lkZTMyKV0gPSBjb2RlUmVmMzIuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxlICgwKTsKKworICAgIEpTQ19XQVNN
X0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX1dBU01fR0FURSkKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKKworICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1
Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcs
IE9wZXJhdGlvblB0clRhZz4oJnZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIpLCBKU0VudHJ5
UHRyVGFnLCAidm1FbnRyeVRvSmF2YVNjcmlwdCIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFn
Q29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZ2
bUVudHJ5VG9KYXZhU2NyaXB0VHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OnZtRW50cnlUb0phdmFTY3Jp
cHQpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRl
VGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRh
Zz4odm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVyKSwgSG9zdEZ1bmN0aW9uUHRyVGFnLCAidm1FbnRy
eVRvTmF0aXZlIikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVu
Y3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50cnlUb05hdGl2ZVRyYW1w
b2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihHYXRlOjp2bUVudHJ5VG9OYXRpdmUpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoY3JlYXRlVGFpbENhbGxHYXRlKEpTRW50cnlQdHJUYWcpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4
ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+KCZ0YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lKSkpKTsKKyAgICAg
ICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6
dGFpbENhbGxKU0VudHJ5UHRyVGFnKV09IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsK
KyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoY3JlYXRlVGFpbENhbGxHYXRlKEpTRW50cnlTbG93UGF0aFB0clRhZykpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZSkpKSk7Cisg
ICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdh
dGU6OnRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoUHRyVGFnKV0gPSBjb2RlUmVmLmdldCgpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAg
IGNvZGVSZWYuY29uc3RydWN0KGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnPigmZXhjZXB0aW9uSGFuZGxlclRyYW1wb2xpbmUpKSkpOworICAgICAgICBn
X2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpleGNl
cHRpb25IYW5kbGVyKV0gPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgIH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAg
IGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KHJl
dHVybkZyb21MTEludEdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZyZXR1cm5G
cm9tTExJbnRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1h
cFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6cmV0dXJuRnJvbUxMSW50KV0gPSBjb2RlUmVm
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKworICAgIGlmIChPcHRp
b25zOjp1c2VKSVQoKSkgeworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihHYXRlOjpsb29wT1NSRW50cnkpXSA9IGxvb3BPU1JFbnRyeUdhdGVU
aHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBnX2pzY0NvbmZpZy5s
bGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjplbnRyeU9TUkVudHJ5KV0g
PSBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cisg
ICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdh
dGU6Ondhc21PU1JFbnRyeSldID0gd2FzbU9TUkVudHJ5R2F0ZVRodW5rKCkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisjZGVmaW5lIElOSVRJQUxJWkVfVEFHX0FORF9VTlRB
R19USFVOS1MobmFtZSkgXAorICAgIGRvIHsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiB0YWdD
b2RlUmVmOyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHVudGFnQ29kZVJlZjsgXAorICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsgXAorICAgICAgICAgICAgdGFnQ29kZVJlZi5jb25z
dHJ1Y3QodGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBP
cGVyYXRpb25QdHJUYWc+KG5hbWUjI1RhZ0dhdGVBZnRlcikpKTsgXAorICAgICAgICAgICAgdW50
YWdDb2RlUmVmLmNvbnN0cnVjdCh1bnRhZ0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihuYW1lIyNVbnRhZ0dhdGVBZnRlcikpKTsg
XAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVjdChM
TEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNu
YW1lIyNfdGFnKSk7IFwKKyAgICAgICAgICAgIHVudGFnQ29kZVJlZi5jb25zdHJ1Y3QoTExJbnQ6
OmdldENvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5lXyMjbmFtZSMj
X3VudGFnKSk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVN
YXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1RhZyldID0gdGFnQ29kZVJlZi5n
ZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0NvbmZpZy5s
bGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNVbnRhZyldID0g
dW50YWdDb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgfSB3
aGlsZSAoMCk7CisKKyAgICBJTklUSUFMSVpFX1RBR19BTkRfVU5UQUdfVEhVTktTKGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKKyAgICBJTklUSUFMSVpFX1RBR19BTkRfVU5U
QUdfVEhVTktTKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworI2Vu
ZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggY2I0NDVmNWU5MmNlNTI2
NGUyNzM2NTljZDA4NzA1NDYzZTNkYzA3ZC4uMDVjMDIxYTE4ODIwZjU5MzE3OWU0NTZiMGRmNGUz
MWZlYTI4MTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAt
MjA0LDYgKzIwNCw5MyBAQCBBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMzJDb2RlRnVu
Y3Rpb25QdHIoT3Bjb2RlSUQgb3Bjb2RlSUQpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKworaW5saW5lIE9wY29kZSBnZXRPcGNvZGUoV2FzbU9wY29kZUlEIGlkKQorewor
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmln
LmxsaW50Lm9wY29kZU1hcFtudW1PcGNvZGVJRHMgKyBpZF07CisjZWxzZQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPcGNvZGU+KGlkKTsKKyNlbmRpZgorfQorCitpbmxpbmUgT3Bjb2RlIGdldE9w
Y29kZVdpZGUxNihXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2W251
bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlkKTsKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0
T3Bjb2RlV2lkZTMyKFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19PUENPREVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMzJb
bnVtT3Bjb2RlSURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8UHRyVGFn
IHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gZ2V0Q29kZVB0
cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZShvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRh
Z0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjx0YWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVz
cyk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjx0YWc+IGdldFdpZGUxNkNvZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQor
eworICAgIHZvaWQqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVX
aWRlMTYob3Bjb2RlSUQpKTsKKyAgICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRy
VGFnLCB0YWc+KGFkZHJlc3MpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFn
Pjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQ
dHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRX
aWRlMzJDb2RlUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNz
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlV2lkZTMyKG9wY29kZUlEKSk7Cisg
ICAgYWRkcmVzcyA9IHJldGFnQ29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsK
KyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhhZGRyZXNzKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19J
TkxJTkUgTExJbnRDb2RlIGdldENvZGVGdW5jdGlvblB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQp
Cit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxMTElu
dENvZGU+KGdldENvZGVQdHI8dGFnPihvcGNvZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cisj
ZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0Q29kZVB0cjx0
YWc+KG9wY29kZUlEKS50ZW1wbGF0ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQor
Cit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBMTEludENvZGUgZ2V0V2lkZTE2
Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyNpZiBDT01QSUxFUihN
U1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTE2Q29k
ZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRyPHRhZz4ob3Bj
b2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMzJDb2RlRnVu
Y3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMzJDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNvZGVJRCku
dGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKICNl
bHNlCiBBTFdBWVNfSU5MSU5FIHZvaWQqIGdldENvZGVQdHIoT3Bjb2RlSUQgaWQpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCmluZGV4IDZk
NmQyNDlmYTYzNGZkN2RlNTZiOWMxNWUzODQxYTNmMmI5ZjExZTguLmMxYTI4ZjBhNDllNTFjODU0
YWQzNjFiZTVkYjBlODE4M2U5NDRmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnQuY3BwCkBAIC0zNSw2ICszNSwyMiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAi
QyIgdm9pZCBqc1RyYW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZv
aWQganNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2
b2lkIGpzVHJhbXBvbGluZUV2YWxQcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1Ry
YW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBq
c1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJD
IiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQcm9sb2d1ZSh2b2lk
KTsKK2V4dGVybiAiQyIgdm9pZCBqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tQcm9sb2d1ZSh2b2lkKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KK3N0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZW50cnlwb2ludFRyYW1wb2xp
bmUoUHRyVHlwZSBhZGRyZXNzKQoreworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0Nv
ZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgSlNFbnRyeVB0clRhZz4oYWRkcmVzcykpKTsK
K30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY29kZUJs
b2NrLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKQEAgLTcyLDE0ICs4OCwyMiBAQCBzdGF0aWMgdm9p
ZCBzZXRGdW5jdGlvbkVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIHN0
YXRpYyBEaXJlY3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUo
ZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9ndWUp
LCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNo
ZWNrUHJvbG9ndWUpLmNvZGUoKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6
U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZWxzZQogICAgICAgICAgICAgaml0Q29kZSA9IG5l
dyBEaXJlY3RKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUpLCBnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklU
Q29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgc3RhdGljIERpcmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcg
RGlyZWN0SklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZv
ckNvbnN0cnVjdFByb2xvZ3VlKSwgZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9saW5lRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUpLmNvZGUoKSwgSklUVHlwZTo6SW50
ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZWxzZQog
ICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRy
eVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSksIGdldENvZGVQ
dHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2VuZGlmCiAgICAgICAgIH0pOwogICAgICAgICBjb2RlQmxvY2stPnNldEpJVENv
ZGUobWFrZVJlZigqaml0Q29kZSkpOwogICAgIH0KQEAgLTEwMyw3ICsxMjcsMTEgQEAgc3RhdGlj
IHZvaWQgc2V0RXZhbEVudHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGlj
IE5hdGl2ZUpJVENvZGUqIGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBv
bGluZShqc1RyYW1wb2xpbmVFdmFsUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5r
LCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVk
KTsKKyNlbHNlCiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVm
PEpTRW50cnlQdHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRl
clRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6
U2hhcmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtl
UmVmKCpqaXRDb2RlKSk7CiB9CkBAIC0xMjYsNyArMTU0LDExIEBAIHN0YXRpYyB2b2lkIHNldFBy
b2dyYW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVK
SVRDb2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAg
IHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNU
cmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50
cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7Cisj
ZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNo
YXJlZCk7CisjZW5kaWYKICAgICB9KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJl
Zigqaml0Q29kZSkpOwogfQpAQCAtMTQ5LDcgKzE4MSwxMSBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1
bGVQcm9ncmFtRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0
aXZlSklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkK
KyAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5l
KGpzVHJhbXBvbGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVy
VGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpT
aGFyZWQpOworI2Vsc2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENv
ZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRU
eXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZShtYWtlUmVmKCpqaXRDb2RlKSk7CiB9CkBAIC0xNjAsNyArMTk2LDM0IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
RW50cnlwb2ludCgpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQogICAgICAgICByZXR1cm4g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRodW5rKCk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKLSAg
ICByZXR1cm4gZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9nZXRfaG9zdF9jYWxsX3Jl
dHVybl92YWx1ZSk7CisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlw
b2ludCgpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisg
ICAgICAgIHJldHVybiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKCk7CisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0
clRhZz4oZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50
KE9wY29kZVNpemUgc2l6ZSkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1
c2VKSVQoKSkKKyAgICAgICAgcmV0dXJuIGdlbmVyaWNSZXR1cm5Qb2ludFRodW5rKHNpemUpOwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSBPcGNv
ZGVTaXplOjpOYXJyb3c6CisgICAgICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCk7CisgICAgY2FzZSBPcGNvZGVTaXpl
OjpXaWRlMTY6CisgICAgICAgIHJldHVybiBMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCk7CisgICAgY2FzZSBPcGNvZGVTaXpl
OjpXaWRlMzI6CisgICAgICAgIHJldHVybiBMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCk7CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBzZXRFbnRy
eXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludC5oCmluZGV4IDQzZWIyODY0MDg2NTc4NTZkMGI5YjFkMmRhNzYx
Yzg0ODQxZGJmZDguLjI1ZWU4MjNhZTljYmNlYWVhNWNkZDk1OGJjODJiNGU5OGI4NDdiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNDUHRyVGFnLmgiCisjaW5j
bHVkZSAiT3Bjb2RlU2l6ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDEsNSArNDIsNyBA
QCB2b2lkIHNldEVudHJ5cG9pbnQoQ29kZUJsb2NrKik7CiB1bnNpZ25lZCBmcmFtZVJlZ2lzdGVy
Q291bnRGb3IoQ29kZUJsb2NrKik7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2ludCgpOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlw
b2ludCgpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1
cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
aW5kZXggYmJhMTIwYTdjNTU4NThmMzc3ZTc5YmI0MjlmNTlkNzk4ZTE2MzRkYS4uYTM0N2M2MjM5
YWNkZmQ5ZmUzMGQ1ODRmMDAwMzhjNGI1MGI5NjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgaW5saW5l
IEpTVmFsdWUgZ2V0T3BlcmFuZChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQpIHsgcmV0dXIKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBMTElOVF9D
QUxMX0VORF9JTVBMKGNhbGxGcmFtZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgXAotICAg
IExMSU5UX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBTbG93UGF0aFB0
clRhZz4oY2FsbFRhcmdldCkpLCAoY2FsbEZyYW1lKSkKKyAgICBMTElOVF9SRVRVUk5fVFdPKChy
ZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnPihjYWxsVGFy
Z2V0KSksIChjYWxsRnJhbWUpKQogCiAjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZ2xvYmFsT2Jq
ZWN0LCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIF9fY3RfZ2xvYmFsT2JqZWN0ID0gKGdsb2JhbE9iamVjdCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChsb29wX29zcikKICAgICAgICAgdWludDY0X3QqIHB0ciA9IHZtLmdldExv
b3BIaW50RXhlY3V0aW9uQ291bnRlcihwYyk7CiAgICAgICAgICpwdHIgKz0gY29kZUJsb2NrLT5s
bGludEV4ZWN1dGVDb3VudGVyKCkubV9hY3RpdmVUaHJlc2hvbGQ7CiAgICAgICAgIGlmICgqcHRy
ID49IE9wdGlvbnM6OmVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCgpKQotICAgICAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihm
dXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KS5leGVjdXRhYmxlQWRkcmVzcygpLCBj
YWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CisgICAgICAgICAgICBMTElOVF9SRVRVUk5fVFdPKExM
SW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9pbnQoKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50b3BPZkZyYW1lKCkpOwogICAgIH0KICAgICAK
ICAgICAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICByZXR1cm4gdmFyYXJnc1NldHVwPE9wQ29uc3RydWN0
VmFyYXJncz4oY2FsbEZyYW1lLCBwYywgQ29kZUZvckNvbnN0cnVjdCwgU2V0QXJndW1lbnRzV2l0
aDo6T2JqZWN0KTsKIH0KIAotaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21tb25DYWxsRXZh
bChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCitpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0
cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Q
b2ludCkKIHsKICAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKICAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wQ2FsbEV2YWw+KCk7CkBAIC0xOTU2LDcgKzE5NTYsNyBAQCBpbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25z
dCBJbnN0cnVjdGlvbgogICAgIGNhbGxlZUZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhieXRlY29kZS5tX2FyZ2MpOwogICAgIGNhbGxlZUZyYW1lLT5zZXRDYWxsZXJGcmFtZShj
YWxsRnJhbWUpOwogICAgIGNhbGxlZUZyYW1lLT51bmNoZWNrZWRSKFZpcnR1YWxSZWdpc3RlcihD
YWxsRnJhbWVTbG90OjpjYWxsZWUpKSA9IGNhbGxlZUFzVmFsdWU7Ci0gICAgY2FsbGVlRnJhbWUt
PnNldFJldHVyblBDKHJldHVyblBvaW50LmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIGNhbGxl
ZUZyYW1lLT5zZXRSZXR1cm5QQyhyZXR1cm5Qb2ludC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENvZGVCbG9jayhudWxscHRyKTsKICAgICBjYWxsRnJh
bWUtPnNldEN1cnJlbnRWUEMocGMpOwogICAgIApAQCAtMTk3MCwxNyArMTk3MCwxNyBAQCBpbmxp
bmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBjb25zdCBJbnN0cnVjdGlvbgogICAgIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NhbGxfZXZhbCkKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywg
TExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9p
bnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6Omdl
bmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZTo6TmFycm93KSk7CiB9CiAKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWxfd2lkZTE2KQogewotICAgIHJl
dHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2V0V2lkZTE2Q29kZVB0
cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIHJldHVy
biBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJpY1JldHVyblBvaW50
RW50cnlwb2ludChPcGNvZGVTaXplOjpXaWRlMTYpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMzIpCiB7Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxF
dmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMzJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFs
KGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50KE9wY29k
ZVNpemU6OldpZGUzMikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3Ry
Y2F0KQpAQCAtMjI2NSw4ICsyMjY1LDExIEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZGlz
cGF0Y2hUb05leHRJbnN0cnVjdGlvbihUaHJvd1Njb3BlJiBzY29wZSwgQ29kZUJsb2NrCiAKICAg
ICBpZiAoT3B0aW9uczo6Zm9yY2VPU1JFeGl0VG9MTEludCgpIHx8IGNvZGVCbG9jay0+aml0VHlw
ZSgpID09IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspIHsKICAgICAgICAgY29uc3QgSW5zdHJ1
Y3Rpb24qIG5leHRQQyA9IHBjLm5leHQoKS5wdHIoKTsKLSAgICAgICAgYXV0byBuZXh0Qnl0ZWNv
ZGUgPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPigqcGMubmV4dCgpLnB0cigpKTsK
LSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIG5leHRCeXRlY29kZS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyNpZiBFTkFCTEUoSklUKQorICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KG5leHRQQywgTExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKS5yZXRhZ2dl
ZENvZGU8SlNFbnRyeVB0clRhZz4oKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQobmV4dFBDLCBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5
UHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSkuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworI2VuZGlmCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCmluZGV4IDc4NTM2MGY0ODc2MDcxYWZkNjRh
ZDFjZmUxYmE4YmVhODM4YWIzZDIuLjljYzQwZjdjZTk5MzAwNWY0YjdhMmZmMjAyYzA2MjQ3MWEz
ZjYwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApA
QCAtNDAsNiArNDAsMjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoSklUKQogCisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorCisjZGVmaW5lIEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BF
UkFUSU9OKG5hbWUpIFwKKyAgICBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0
XyMjbmFtZSwgbmFtZSkKKworI2RlZmluZSBKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElP
Tl9XSVRIX0RFQ0xBUkUobmFtZSkgXAorICAgIGV4dGVybiAiQyIgdm9pZCBuYW1lKHZvaWQpOyBc
CisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJT04oX0pJVFRhcmdldF8jI25hbWUsIG5hbWUp
CisKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGppdENhZ2VQdHJHYXRlQWZ0ZXIp
OworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdCk7
CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9OYXRpdmUpOworSlND
X0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRl
cik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5VG9OYXRpdmVHYXRl
QWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRf
SklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVB
ZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xM
SU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
a1RhZ0dhdGVBZnRlcik7CisKKyNlbmRpZgorCiBuYW1lc3BhY2UgTExJbnQgewogCiAvLyBUaGVz
ZSB0aHVua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIG9mIG5lYXJDYWxsIHVzZWQgb24gSklUZWQg
Y29kZS4KQEAgLTUyLDcgKzczLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKExMSW50Q29kZSB0YXJnZXQsIGNvbnMKIHsKICAgICBK
U0ludGVyZmFjZUpJVCBqaXQ7CiAKLSAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8SlNFbnRyeVB0clRh
Zz4odGFyZ2V0KTsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJn
ZXQpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIENDYWxsSGVscGVyczo6UmVnaXN0
ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxpbmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3Jh
dGNoR1BSc1swXTsKQEAgLTYwLDE2ICs4MSw1MyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwog
ICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwOwogI2VuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIo
dGFyZ2V0KSwgc2NyYXRjaCk7Ci0gICAgaml0LmZhckp1bXAoc2NyYXRjaCwgSlNFbnRyeVB0clRh
Zyk7CisgICAgaml0LmZhckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwotICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIs
IHRodW5rS2luZCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywg
IkxMSW50ICVzIHRodW5rIiwgdGh1bmtLaW5kKTsKIH0KIAogdGVtcGxhdGU8UHRyVGFnIHRhZz4K
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQogewotICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzx0YWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpLCB0aHVua0tpbmQpOworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbzx0YWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+
CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZShPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQorewor
ICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKworICAgIExMSW50Q29kZSB0YXJnZXQgPSBMTEludDo6
Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpOworICAgIGFzc2Vy
dElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CisKKyNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCisgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3
YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOworI2Vsc2UKKyAg
ICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2NyYXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdU
MDsKKyNlbmRpZgorICAgIGppdC50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7CisgICAgaml0LmZh
ckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBh
dGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBqdW1wIHRvIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtL
aW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50KExMSW50Q29kZSB0
YXJnZXQsIGNvbnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7
CisgICAgYXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0KTsKKyAgICBq
aXQuZmFySnVtcChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgT3BlcmF0aW9u
UHRyVGFnKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMg
cmV0dXJuIHBvaW50IHRodW5rIiwgdGh1bmtLaW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRh
Zz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb1JldHVyblBvaW50KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVua0tpbmQp
Cit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8dGFnPihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpLCB0aHVu
a0tpbmQpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVuaygpCkBAIC03Nyw3ICsxMzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpCiAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAg
IH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtODcsNyArMTQ1LDcgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVu
aygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5j
b25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKSk7
CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9n
dWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwg
ImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7
CiB9CkBAIC05Nyw3ICsxNTUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aywgImZ1bmN0aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2Fs
bCB3aXRoIGFyaXR5IGNoZWNrIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpA
QCAtMTA3LDcgKzE2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBm
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjaywgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxK
U0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAi
ZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOwogICAgIH0pOwogICAg
IHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTE3LDcgKzE3NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBldmFsRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZl
ckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7Cisg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8
SlNFbnRyeVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMjcsNyArMTg1LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29k
ZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxf
b25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJv
Z3JhbSIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJvZ3Jh
bSIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEzNyw3ICsxOTUsNyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5
VGh1bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50
X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CisgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0
clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTE0OSw5ICsyMDcsOSBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmso
KQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7CiAgICAgICAgIGlmIChXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkp
Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxK
SVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxs
IikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZTxKSVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0
aW9uIGZvciBjYWxsIikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKSVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlv
bl9wcm9sb2d1ZV9ub190bHMsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1bmtQ
dHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCAiZnVuY3Rpb24gZm9yIGNhbGwi
KSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0yMTcsNyArMjc1LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNo
VGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsK
ICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29k
ZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoIikpOworICAg
ICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
IGNvZGVSZWY7CiAgICAgfQpAQCAtMjI1LDcgKzI4Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6
ZSkKICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewotICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxK
U0VudHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaDE2IikpOworICAgICAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0
clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9w
X2NhdGNoKSwgIm9wX2NhdGNoMTYiKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29k
ZVJlZjsKICAgICB9CkBAIC0yMzMsNyArMjkxLDM5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkK
ICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
RXhjZXB0aW9uSGFuZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlS2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewot
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhj
ZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxKU0Vu
dHJ5UHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaDMyIikpOworICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2Nh
dGNoKSwgIm9wX2NhdGNoMzIiKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gY29kZVJl
ZjsKKyAgICB9CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIHsgfTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdl
bmVyaWNSZXR1cm5Qb2ludFRodW5rKE9wY29kZVNpemUgc2l6ZSkKK3sKKyAgICBzd2l0Y2ggKHNp
emUpIHsKKyAgICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzogeworICAgICAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29k
ZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50
OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVybl9wb2ludCIpKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybiBjb2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUx
NjogeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAg
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBv
aW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3Jl
dHVybl9wb2ludDE2IikpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7Cisg
ICAgfQorICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2Rl
UmVmOworICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6
OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KSwgImxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50MzIiKSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0yNDIsNiArMzMyLDI1NyBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0
Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50
VGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGZ1
enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQsICJmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zy
b21fbG9vcF9oaW50IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRl
UHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25z
dCBjaGFyKiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuY2FsbChH
UFJJbmZvOjpyZWdUMywgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQuZmFySnVtcChHUFJJbmZv
OjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCAlcyBjYWxsIGdhdGUgdGh1bmsiLCBu
YW1lKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4g
Y3JlYXRlV2FzbUdhdGVUaHVuayh2b2lkKiBwb2ludGVyLCBQdHJUYWcgdGFnLCBjb25zdCBjaGFy
KiBuYW1lKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQuY2FsbChHUFJJbmZv
Ojp3YXNtU2NyYXRjaEdQUjAsIHRhZyk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEpOworICAgIGppdC5m
YXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSwgT3BlcmF0aW9uUHRyVGFnKTsKKworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJMTElu
dCAlcyB3YXNtIGNhbGwgZ2F0ZSB0aHVuayIsIG5hbWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVUYWlsQ2FsbEdhdGUoUHRyVGFnIHRh
ZykKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LnVudGFnUHRyKEdQUkluZm86
OmFyZ3VtZW50R1BSMiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuZmFySnVtcChHUFJJ
bmZvOjpyZWdUMCwgdGFnKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcsICJMTEludCB0YWlsIGNhbGwgZ2F0ZSB0aHVuayIpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NSRW50cnlH
YXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
KyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZv
Ojphcmd1bWVudEdQUjAsIEpTRW50cnlQdHJUYWcpOworCisgICAgICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVj
dChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJsb29w
IE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gZW50cnlPU1JFbnRy
eUdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
eworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC51bnRhZ1JldHVybkFk
ZHJlc3MoKTsKKyAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU0Vu
dHJ5UHRyVGFnKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZW50cnkgT1NSIGVudHJ5IHRodW5rIikp
OworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKQoreworICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VL
ZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKKworICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAgIGpp
dC5mYXJKdW1wKEdQUkluZm86Ondhc21TY3JhdGNoR1BSMCwgV2FzbUVudHJ5UHRyVGFnKTsKKwor
ICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCAid2FzbSBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7CisgICAg
cmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKwor
ICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMCwgRXhjZXB0aW9uSGFuZGxlclB0clRh
Zyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19J
RCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
IE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImV4Y2VwdGlvbiBoYW5kbGVyIHRodW5rIikpOworICAg
IH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyVGFnPiByZXR1cm5Gcm9tTExJbnRHYXRlVGh1bmsoKQoreworICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKKworICAgICAgICBqaXQucmV0KCk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJ
TkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInJldHVybkZy
b21MTEludCB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRodW5rKHZv
aWQqIHBvaW50ZXIpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIEFSTTY0
UmVnaXN0ZXJzOjpscik7CisgICAgaml0LnN0b3JlUHRyKEFSTTY0UmVnaXN0ZXJzOjpsciwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCA4KSk7CisgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjpy
ZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7
CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFn
LCAidGFnIHRodW5rIik7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+IHVudGFnR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIpCit7CisgICAgQ0NhbGxIZWxw
ZXJzIGppdDsKKworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgOCksIEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1Qz
LCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUklu
Zm86OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hC
dWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgInVudGFnIHRodW5rIik7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGppdENhZ2VQdHJUaHVuaygp
Cit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBD
Q2FsbEhlbHBlcnMgaml0OworICAgICAgICBKU0NfSklUX0NBR0VfQ09NUElMRShqaXQpOworICAg
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnLCAiaml0Q2FnZVB0ciB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
Y29kZVJlZjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQor
eworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9T
UkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4o
bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsICJub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSB0
aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworI2lmIEVOQUJMRShE
RkdfSklUKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4gY2hlY2twb2lu
dE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
UmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5l
LCAiY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lIHRodW5rIikpOworICAgIH0pOworICAg
IHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRh
Zz4gY2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKQorewor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4
aXRQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oY2hl
Y2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lLCAiY2hlY2twb2lu
dF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lIHRodW5rIikpOworICAgIH0p
OworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhp
dFB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhPcGNvZGVJRCBvcGNvZGVJRCwgT3Bjb2RlU2l6
ZSBzaXplKQoreworI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSkgXAorICAgIGNh
c2UgbmFtZSMjX3JldHVybl9sb2NhdGlvbjogeyBcCisgICAgICAgIHN3aXRjaCAoc2l6ZSkgeyBc
CisgICAgICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7IFwKKyAgICAgICAgICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+
PiBjb2RlUmVmOyBcCisgICAgICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsg
XAorICAgICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAgICAg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9p
bnQ8T1NSRXhpdFB0clRhZz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25hbWUgIl9yZXR1cm5fbG9jYXRpb24gdGh1
bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsg
XAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsgXAorICAg
ICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
T1NSRXhpdFB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
eyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG9SZXR1cm5Qb2ludDxPU1JFeGl0UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbiksICAjbmFtZSAi
X3JldHVybl9sb2NhdGlvbjE2IHRodW5rIikpOyBcCisgICAgICAgICAgICB9KTsgXAorICAgICAg
ICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgT3Bjb2Rl
U2l6ZTo6V2lkZTMyOiB7IFwKKyAgICAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+PiBjb2RlUmVmOyBcCisgICAgICAg
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsgXAorICAgICAgICAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAgICAgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8T1NSRXhpdFB0clRhZz4oTExJ
bnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUjI19yZXR1
cm5fbG9jYXRpb24pLCAjbmFtZSAiX3JldHVybl9sb2NhdGlvbjMyIHRodW5rIikpOyBcCisgICAg
ICAgICAgICB9KTsgXAorICAgICAgICAgICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAgfSBc
CisgICAgICAgIH0gXAorICAgICAgICByZXR1cm4geyB9OyBcCisgICAgfQorCisgICAgc3dpdGNo
IChvcGNvZGVJRCkgeworICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jYWxsKQorICAgIExM
SU5UX1JFVFVSTl9MT0NBVElPTihvcF9pdGVyYXRvcl9vcGVuKQorICAgIExMSU5UX1JFVFVSTl9M
T0NBVElPTihvcF9pdGVyYXRvcl9uZXh0KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9j
b25zdHJ1Y3QpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2NhbGxfdmFyYXJnc19zbG93
KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93KQor
ICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfaWQpCisgICAgTExJTlRfUkVUVVJO
X0xPQ0FUSU9OKG9wX2dldF9ieV92YWwpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1
dF9ieV9pZCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X3ZhbCkKKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIExMSW50CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaAppbmRleCAwMzY4Y2U5YTJkYTA2MDRmNDM3MjQ1MmVlMTJmODdjNGU2MzhkYjBkLi45
ZTM1MDJkMjVmMTQzZTEzMDY4MjI2ZGI3MTFhODY1MWJkNTA5YWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNDAsNiArNDAsMTkgQEAgZXh0ZXJuICJD
IiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgdm1FbnRyeVRvTmF0aXZlKHZvaWQqLCBWTSosIFByb3Rv
Q2FsbEZyYW1lKik7CiB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMiIHsKKyAg
ICB2b2lkIGppdENhZ2VQdHJHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCB2bUVudHJ5VG9KYXZh
U2NyaXB0R2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgdm1FbnRyeVRvTmF0aXZlR2F0ZUFmdGVy
KHZvaWQpOworCisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1Vu
dGFnR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2tUYWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdHYXRlQWZ0ZXIodm9pZCk7CisgICAgdm9pZCBsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZvaWQpOwor
fQorI2VuZGlmCisKIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB2bUVudHJ5VG9XYXNtKHZvaWQqIGNv
ZGUsIFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIGZyYW1lKQogewogICAgIGF1dG8gY2xvYmJlcml6
ZVZhbGlkYXRvciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKQEAgLTU5LDExICs3MiwzMiBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZXZhbEVudHJ5VGh1bmsoKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBwcm9ncmFtRW50cnlUaHVuaygpOwogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG1vZHVsZVByb2dyYW1FbnRyeVRodW5r
KCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2Vu
ZXJpY1JldHVyblBvaW50VGh1bmsoT3Bjb2RlU2l6ZSk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpOwogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gY2FsbFRvVGhyb3dU
aHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhh
bmRsZVVuY2F1Z2h0RXhjZXB0aW9uVGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUpOwogCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBqaXRDYWdlUHRyVGh1bmso
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZUpT
R2F0ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVdhc21HYXRlVGh1bmsodm9pZCosIFB0
clRhZywgY29uc3QgY2hhciopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gY3JlYXRlVGFpbENhbGxHYXRlKFB0clRhZyk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBsb29wT1NSRW50cnlHYXRlVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGVudHJ5T1NSRW50cnlHYXRl
VGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHdh
c21PU1JFbnRyeUdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4gZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gcmV0dXJuRnJvbUxMSW50R2F0ZVRodW5rKCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB1bnRhZ0dhdGVU
aHVuayh2b2lkKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
PiB0YWdHYXRlVGh1bmsodm9pZCopOworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0
clRhZz4gbm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOworI2lmIEVOQUJMRShERkdfSklU
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE9TUkV4aXRQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0
VHJhbXBvbGluZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8T1NSRXhpdFB0clRhZz4g
Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxPU1JFeGl0UHRyVGFnPiByZXR1cm5Mb2NhdGlvblRodW5rKE9wY29k
ZUlELCBPcGNvZGVTaXplKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB3YXNtRnVuY3Rpb25FbnRyeVRodW5r
KCk7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDllM2NkZTk5MDRj
MTAyYmVlZWY0N2IxNGYzNWZmNjk1MTY5ZmE5N2YuLjE1NWQ1ZTY0NTk3NmRiZGRhYjVjYmIwMzYz
Njg1OWJlMzY1ZWNhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1Niw5ICsyNTYsMTIgQEAgY29uc3QgQXJpdGhQ
cm9maWxlTnVtYmVyTnVtYmVyID0gY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGU6Om9ic2Vy
dmVkTnVtYmVyTnUKIGNvbnN0IEJ5dGVjb2RlUHRyVGFnID0gY29uc3RleHByIEJ5dGVjb2RlUHRy
VGFnCiBjb25zdCBKU0VudHJ5UHRyVGFnID0gY29uc3RleHByIEpTRW50cnlQdHJUYWcKIGNvbnN0
IEhvc3RGdW5jdGlvblB0clRhZyA9IGNvbnN0ZXhwciBIb3N0RnVuY3Rpb25QdHJUYWcKK2NvbnN0
IEpTRW50cnlTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBKU0VudHJ5U2xvd1BhdGhQdHJUYWcK
K2NvbnN0IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyA9IGNvbnN0ZXhwciBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcKIGNvbnN0IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcgPSBjb25zdGV4cHIgRXhjZXB0aW9u
SGFuZGxlclB0clRhZworY29uc3QgWWFyckVudHJ5UHRyVGFnID0gY29uc3RleHByIFlhcnJFbnRy
eVB0clRhZwogY29uc3QgTm9QdHJUYWcgPSBjb25zdGV4cHIgTm9QdHJUYWcKLWNvbnN0IFNsb3dQ
YXRoUHRyVGFnID0gY29uc3RleHByIFNsb3dQYXRoUHRyVGFnCisgCiAKICMgU29tZSByZWdpc3Rl
ciBjb252ZW50aW9ucy4KICMgLSBXZSB1c2UgYSBwYWlyIG9mIHJlZ2lzdGVycyB0byByZXByZXNl
bnQgdGhlIFBDOiBvbmUgcmVnaXN0ZXIgZm9yIHRoZQpAQCAtMTAyNiw3ICsxMDI5LDcgQEAgbWFj
cm8gdHJhY2VFeGVjdXRpb24oKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRlZmluZU9TUkV4aXRS
ZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXplKQorbWFjcm8gZGVmaW5lUmV0dXJuTGFiZWwob3Bj
b2RlTmFtZSwgc2l6ZSkKICAgICBtYWNybyBkZWZpbmVOYXJyb3coKQogICAgICAgICBpZiBub3Qg
Q19MT09QX1dJTgogICAgICAgICAgICAgXyVvcGNvZGVOYW1lJV9yZXR1cm5fbG9jYXRpb246CkBA
IC0xMDQ4LDMyICsxMDUxLDgyIEBAIG1hY3JvIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNv
ZGVOYW1lLCBzaXplKQogICAgIHNpemUoZGVmaW5lTmFycm93LCBkZWZpbmVXaWRlMTYsIGRlZmlu
ZVdpZGUzMiwgbWFjcm8gKGYpIGYoKSBlbmQpCiBlbmQKIAoraWYgQVJNNjRFCisgICAgZ2xvYmFs
IF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyCisgICAg
Z2xvYmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcgor
ICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFn
R2F0ZUFmdGVyCisgICAgZ2xvYmFsIF9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrVGFnR2F0ZUFmdGVyCitlbmQKKwogbWFjcm8gY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBjYWxsUHRyVGFnKQogICAgIGlmIENfTE9PUCBvciBD
X0xPT1BfV0lOCiAgICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gY2FsbGVlCisgICAgZWxzaWYg
QVJNNjRFCisgICAgICAgIG1hY3JvIGNhbGxOYXJyb3coKQorICAgICAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OiVvcGNvZGVOYW1lJSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFth
Ml0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAgICAgICAgICAgIF9qc190
cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAgICAgIGNhbGwgdDMsIGNhbGxQdHJUYWcK
KyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gY2FsbFdpZGUxNigpCisgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCBhMgorICAg
ICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIGNhbGxQdHJUYWcKKyAg
ICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAgICAg
ICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGNhbGxX
aWRlMzIoKQorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRl
MzIpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFt
ZSVfd2lkZTMyOgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0clRhZworICAgICAgICBlbmQK
KworICAgICAgICBtb3ZlIGNhbGxlZSwgdDMKKyAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxs
V2lkZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCiAgICAgZWxzZQogICAg
ICAgICBjYWxsIGNhbGxlZSwgY2FsbFB0clRhZworICAgICAgICBpZiBBUk12NyBvciBNSVBTCisg
ICAgICAgICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xv
YmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgICAgICAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1
cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVjdGlvbnMKKyAgICAgICAgICAgICMgdGhhdCBj
YW4gY2xvYmJlciBMTEludCBleGVjdXRpb24sIHJlc3VsdGluZyBpbiB1bmV4cGVjdGVkCisgICAg
ICAgICAgICAjIGNyYXNoZXMuCisgICAgICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJD
YWxsKCkKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKKyAgICAgICAg
ZW5kCiAgICAgZW5kCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAg
ICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxsKCkKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gpCiAKLSAgICBpZiBBUk12NyBvciBNSVBTCisgICAgaWYgbm90IEFSTTY0RQogICAg
ICAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxh
YmVsIGRlZmluaXRpb25zCiAgICAgICAgICMgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgZ2VuZXJh
dGVzIGEgc2V0IG9mIGluc3RydWN0aW9ucwogICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJ
bnQgZXhlY3V0aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAogICAgICAgICAjIGNyYXNoZXMu
Ci0gICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgICAgICBkaXNwYXRj
aEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgZGlzcGF0Y2gpCisgICAgICAgIG1hY3JvIGxhYmVsTmFycm93KCkKKyAgICAg
ICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJToKKyAgICAgICAgZW5kCisKKyAgICAg
ICAgbWFjcm8gbGFiZWxXaWRlMTYoKQorICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29k
ZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgZW5kCisKKyAgICAgICAgbWFjcm8gbGFiZWxXaWRlMzIo
KQorICAgICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAg
ICAgZW5kCisgICAgICAgIHNpemUobGFiZWxOYXJyb3csIGxhYmVsV2lkZTE2LCBsYWJlbFdpZGUz
MiwgbWFjcm8gKGdlbikgZ2VuKCkgZW5kKQorICAgICAgICBjcmFzaCgpCiAgICAgZW5kCi0gICAg
ZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCi0gICAgcmVzdG9yZVN0
YWNrUG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQog
ZW5kCiAKLW1hY3JvIHByZXBhcmVGb3JSZWd1bGFyQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwg
dGVtcDMsIGNhbGxQdHJUYWcpCittYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2FsbGVlLCB0
ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgY2FsbFB0clRhZykKICAgICBhZGRwIENhbGxlckZy
YW1lQW5kUENTaXplLCBzcAogZW5kCiAKICMgc3AgcG9pbnRzIHRvIHRoZSBuZXcgZnJhbWUKLW1h
Y3JvIHByZXBhcmVGb3JUYWlsQ2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQ
dHJUYWcpCittYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRl
bXAzLCB0ZW1wNCwgY2FsbFB0clRhZykKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTElu
dCgpCiAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNbY2ZyXSwgdGVtcDIKQEAgLTExMDksOCArMTE2Miw3IEBAIG1hY3JvIHByZXBhcmVGb3JUYWls
Q2FsbChjYWxsZWUsIHRlbXAxLCB0ZW1wMiwgdGVtcDMsIGNhbGxQdHJUYWcpCiAgICAgZW5kCiAK
ICAgICBpZiBBUk02NEUKLSAgICAgICAgYWRkcCAxNiwgY2ZyLCB0ZW1wMwotICAgICAgICB1bnRh
Z1JldHVybkFkZHJlc3MgdGVtcDMKKyAgICAgICAgYWRkcCAxNiwgY2ZyLCB0ZW1wNAogICAgIGVu
ZAogCiAgICAgc3VicCB0ZW1wMiwgdGVtcDEKQEAgLTExMzAsNyArMTE4MiwxNCBAQCBtYWNybyBw
cmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFn
KQogICAgIGVuZAogCiAgICAgbW92ZSB0ZW1wMSwgc3AKLSAgICBqbXAgY2FsbGVlLCBjYWxsUHRy
VGFnCisgICAgaWYgQVJNNjRFCisgICAgICAgIG1vdmUgdGVtcDQsIGEyCisgICAgICAgIG1vdmUg
Y2FsbGVlLCBhMAorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNl
dE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6dGFpbENhbGwlY2FsbFB0clRh
ZyUpICogUHRyU2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRh
ZyAjICVjYWxsUHRyVGFnJQorICAgIGVsc2UKKyAgICAgICAgam1wIGNhbGxlZSwgY2FsbFB0clRh
ZworICAgIGVuZAogZW5kCiAKIG1hY3JvIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCkBA
IC0xMTQ0LDE2ICsxMjAzLDE2IEBAIG1hY3JvIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1CiAgICAgICAgIG1h
Y3JvIChjYWxsZWUsIGNhbGxlZUZyYW1lUHRyKQogICAgICAgICAgICAgYnRweiBjYWxsZWVGcmFt
ZVB0ciwgLmRvbnRVcGRhdGVTUAogICAgICAgICAgICAgbW92ZSBjYWxsZWVGcmFtZVB0ciwgc3AK
LSAgICAgICAgICAgIHByZXBhcmVDYWxsKGNhbGxlZSwgdDIsIHQzLCB0NCwgU2xvd1BhdGhQdHJU
YWcpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0MywgdDQsIHQxLCBKU0Vu
dHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIC5kb250VXBkYXRlU1A6Ci0gICAgICAgICAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBT
bG93UGF0aFB0clRhZykKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbiglb3Bjb2RlTmFt
ZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFs
UmVnaXN0ZXIsIGRpc3BhdGNoLCBjYWxsZWUsIEpTRW50cnlTbG93UGF0aFB0clRhZykKICAgICAg
ICAgZW5kKQogZW5kCiAKIG1hY3JvIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcE5h
bWUsIHNpemUpCiAgICAgY3Jhc2goKSAjIFdlIGRvbid0IHJlYWNoIHRoaXMgaW4gc3RyYWlnaHQg
bGluZSBjb2RlLiBXZSBvbmx5IHJlYWNoIGl0IHZpYSByZXR1cm5pbmcgdG8gdGhlIGNvZGUgYmVs
b3cgd2hlbiByZWNvbnN0cnVjdGluZyBzdGFjayBmcmFtZXMgZHVyaW5nIE9TUiBleGl0LgogCi0g
ICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wTmFtZSwgc2l6ZSkKKyAgICBkZWZpbmVSZXR1
cm5MYWJlbChvcE5hbWUsIHNpemUpCiAKICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxs
KCkKICAgICBsb2FkaSBMTEludFJldHVyblBDW2Nmcl0sIFBDCkBAIC0xMzUxLDcgKzE0MTAsNiBA
QCBlbmQKICMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgogbWFj
cm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRo
LCB0cmFjZVNsb3dQYXRoKQogICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBp
ZiB3ZSBzaG91bGQgT1NSLgotICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICBwcmVzZXJ2ZUNh
bGxlclBDQW5kQ0ZSKCkKIAogICAgIGlmIFRSQUNJTkcKQEAgLTEzNzksMTYgKzE0MzcsMjUgQEAg
bWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQ
YXRoLCB0cmFjZVNsb3dQYXRoKQogICAgICAgICBidHB6IHIwLCAucmVjb3ZlcgogICAgICAgICBt
b3ZlIGNmciwgc3AgIyByZXN0b3JlIHRoZSBwcmV2aW91cyBzcAogICAgICAgICAjIHBvcCB0aGUg
Y2FsbGVyRnJhbWUgc2luY2Ugd2Ugd2lsbCBqdW1wIHRvIGEgZnVuY3Rpb24gdGhhdCB3YW50cyB0
byBzYXZlIGl0Ci0gICAgICAgIGlmIEFSTTY0IG9yIEFSTTY0RQorICAgICAgICBpZiBBUk02NAor
ICAgICAgICAgICAgcG9wIGxyLCBjZnIKKyAgICAgICAgZWxzaWYgQVJNNjRFCisgICAgICAgICAg
ICAjIHVudGFnUmV0dXJuQWRkcmVzcyB3aWxsIGJlIHBlcmZvcm1lZCBpbiBHYXRlOjplbnRyeU9T
UkVudHJ5LgogICAgICAgICAgICAgcG9wIGxyLCBjZnIKLSAgICAgICAgICAgIHVudGFnUmV0dXJu
QWRkcmVzcyBzcAogICAgICAgICBlbHNpZiBBUk12NyBvciBNSVBTCiAgICAgICAgICAgICBwb3Ag
Y2ZyCiAgICAgICAgICAgICBwb3AgbHIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9wIGNm
cgogICAgICAgICBlbmQKLSAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCisKKyAgICAgICAg
aWYgQVJNNjRFCisgICAgICAgICAgICBtb3ZlIHIwLCBhMAorICAgICAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OmVudHJ5T1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBb
YTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworICAgICAgICBlbmQKICAgICAucmVj
b3ZlcjoKICAgICAgICAgbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodDEpCiAgICAgLmNvbnRp
bnVlOgpAQCAtMTQ5NCw3ICsxNTYxLDEyIEBAIGVuZAogbWFjcm8gZG9SZXR1cm4oKQogICAgIHJl
c3RvcmVDYWxsZWVTYXZlc1VzZWRCeUxMSW50KCkKICAgICByZXN0b3JlQ2FsbGVyUENBbmRDRlIo
KQotICAgIHJldAorICAgIGlmIEFSTTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0
ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6cmV0
dXJuRnJvbUxMSW50KSAqIFB0clNpemUsIGEyCisgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIHJldAorICAgIGVuZAogZW5kCiAKICMgVGhp
cyBicmVhayBpbnN0cnVjdGlvbiBpcyBuZWVkZWQgc28gdGhhdCB0aGUgc3ludGhlc2l6ZWQgbGxp
bnRQQ1JhbmdlU3RhcnQgbGFiZWwKQEAgLTE1MjUsNiArMTU5NywxOSBAQCBlbHNlCiBlbmQKICAg
ICBkb1ZNRW50cnkobWFrZUhvc3RGdW5jdGlvbkNhbGwpCiAKK2lmIEFSTTY0IG9yIEFSTTY0RQor
ICAgIGdsb2JhbCBfdm1FbnRyeVRvWWFyckpJVEFmdGVyCitlbmQKK2dsb2JhbCBfdm1FbnRyeVRv
WWFyckpJVAorX3ZtRW50cnlUb1lhcnJKSVQ6CisgICAgZnVuY3Rpb25Qcm9sb2d1ZSgpCitpZiBB
Uk02NCBvciBBUk02NEUKKyAgICBqbXAgdDUsIFlhcnJFbnRyeVB0clRhZworICAgIF92bUVudHJ5
VG9ZYXJySklUQWZ0ZXI6CitlbmQKKyAgICBmdW5jdGlvbkVwaWxvZ3VlKCkKKyAgICByZXQKKwog
CiBpZiBub3QgKENfTE9PUCBvciBDX0xPT1BfV0lOKQogICAgICMgdm9pZCBzYW5pdGl6ZVN0YWNr
Rm9yVk1JbXBsKFZNKiB2bSkKQEAgLTE1NzAsNiArMTY1NSw3MSBAQCBpZiBub3QgKENfTE9PUCBv
ciBDX0xPT1BfV0lOKQogICAgICAgICByZXQKIGVuZAogCitpZiBBUk02NEUKKyAgICAjIHZvaWQq
IGppdENhZ2VQdHIodm9pZCogcG9pbnRlciwgdWludHB0cl90IHRhZykKKyAgICBlbWl0ICIuZ2xv
YmwgX2ppdENhZ2VQdHIiCisgICAgZW1pdCAiX2ppdENhZ2VQdHI6IgorICAgICAgICB0YWdSZXR1
cm5BZGRyZXNzIHNwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zm
c2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpqaXRDYWdlUHRyKSAqIFB0
clNpemUsIHQyCisgICAgICAgIGptcCBbdDJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAgICAg
ICAgZ2xvYmFsIF9qaXRDYWdlUHRyR2F0ZUFmdGVyCisgICAgICAgIF9qaXRDYWdlUHRyR2F0ZUFm
dGVyOgorICAgICAgICByZXQKKworICAgIGdsb2JhbCBfdGFpbENhbGxKU0VudHJ5VHJhbXBvbGlu
ZQorICAgIF90YWlsQ2FsbEpTRW50cnlUcmFtcG9saW5lOgorICAgICAgICB1bnRhZ1JldHVybkFk
ZHJlc3MgYTIKKyAgICAgICAgam1wIGEwLCBKU0VudHJ5UHRyVGFnCisKKyAgICBnbG9iYWwgX3Rh
aWxDYWxsSlNFbnRyeVNsb3dQYXRoVHJhbXBvbGluZQorICAgIF90YWlsQ2FsbEpTRW50cnlTbG93
UGF0aFRyYW1wb2xpbmU6CisgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBhMgorICAgICAgICBq
bXAgYTAsIEpTRW50cnlTbG93UGF0aFB0clRhZworCisgICAgZ2xvYmFsIF9leGNlcHRpb25IYW5k
bGVyVHJhbXBvbGluZQorICAgIF9leGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZToKKyAgICAgICAg
am1wIGEwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisKKyAgICBnbG9iYWwgX3JldHVybkZyb21M
TEludFRyYW1wb2xpbmUKKyAgICBfcmV0dXJuRnJvbUxMSW50VHJhbXBvbGluZToKKyAgICAgICAg
cmV0CisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZQorICAgIF9qc1Ry
YW1wb2xpbmVQcm9ncmFtUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAg
ICAgICAgam1wIF9sbGludF9wcm9ncmFtX3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBv
bGluZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFt
UHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGlu
dF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVFdmFs
UHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRXZhbFByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1
cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZXZhbF9wcm9sb2d1ZQorCisgICAgZ2xv
YmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xp
bmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAor
ICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlCisKKyAgICBnbG9i
YWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUKKyAgICBfanNUcmFt
cG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRk
cmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1By
b2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQcm9sb2d1
ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0
aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0
aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Byb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRy
ZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVjaworZW5kCisKIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCiAgICAgIyBEdW1teSBlbnRyeSBw
b2ludCB0aGUgQyBMb29wIHVzZXMgdG8gaW5pdGlhbGl6ZS4KICAgICBfbGxpbnRfZW50cnk6CkBA
IC0xNzI0LDIxICsxODc0LDMwIEBAIGVuZCkKIAogb3AobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2ssIG1hY3JvICgpCiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJs
b2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2Fs
bCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfc2xvd19w
YXRoX2NhbGxfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX3Nsb3dfcGF0
aF9jYWxsX2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CiAgICAgZnVuY3Rpb25J
bml0aWFsaXphdGlvbigwKQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKLQogb3AobGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgbWFjcm8gKCkKICAgICBwcm9sb2d1ZShm
dW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0
ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBf
bGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQotICAgIGZ1bmN0aW9uQXJpdHlD
aGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX3Nsb3dfcGF0aF9jb25zdHJ1Y3RfYXJp
dHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2sobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVjaywgLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9zbG93X3BhdGhf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCiAuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKICAgICBm
dW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCiAgICAgZGlzcGF0Y2goMCkKIGVuZCkKIAorIyBOZWVk
IHRoZXNlIHN0dWIgbGFiZWxzIHRvIG1ha2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVja191bnRhZyBldGMuIExMSW50IGhlbHBlciBvcGNvZGVzLgorX2pz
X3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWdfd2lk
ZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tf
dW50YWdfd2lkZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrX3RhZ193aWRlMzI6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5l
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWdfd2lkZTMyOgor
X2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja190
YWdfd2lkZTE2OgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVja190YWdfd2lkZTMyOgorICAgIGNyYXNoKCkKIAogIyBWYWx1ZS1yZXByZXNlbnRh
dGlvbi1zcGVjaWZpYyBjb2RlLgogaWYgSlNWQUxVRTY0CkBAIC0yMTA5LDcgKzIyNjgsNyBAQCBl
bmQpCiAKIF9sbGludF9vcF9jYWxsX2V2YWw6CiAgICAgc2xvd1BhdGhGb3JDb21tb25DYWxsKAot
ICAgICAgICBvcF9jYWxsX2V2YWxfbmFycm93LAorICAgICAgICBvcF9jYWxsX2V2YWwsCiAgICAg
ICAgIG5hcnJvdywKICAgICAgICAgT3BDYWxsRXZhbCwKICAgICAgICAgbWFjcm8gKCkgZGlzcGF0
Y2hPcChuYXJyb3csIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAtMjExOCw3ICsyMjc3LDcgQEAgX2xs
aW50X29wX2NhbGxfZXZhbDoKIAogX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAgICAgc2xv
d1BhdGhGb3JDb21tb25DYWxsKAotICAgICAgICBvcF9jYWxsX2V2YWxfd2lkZTE2LAorICAgICAg
ICBvcF9jYWxsX2V2YWwsCiAgICAgICAgIHdpZGUxNiwKICAgICAgICAgT3BDYWxsRXZhbCwKICAg
ICAgICAgbWFjcm8gKCkgZGlzcGF0Y2hPcCh3aWRlMTYsIG9wX2NhbGxfZXZhbCkgZW5kLApAQCAt
MjEyNyw3ICsyMjg2LDcgQEAgX2xsaW50X29wX2NhbGxfZXZhbF93aWRlMTY6CiAKIF9sbGludF9v
cF9jYWxsX2V2YWxfd2lkZTMyOgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAg
b3BfY2FsbF9ldmFsX3dpZGUzMiwKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAgICB3aWRl
MzIsCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNoT3Aod2lk
ZTMyLCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIyMTIsNyArMjM3MSwxMyBAQCBvcChjaGVja3Bv
aW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCiAKICAg
ICAgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2FsbCgpCiAgICAgICAgIGJyYW5jaElmRXhjZXB0aW9u
KF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQotICAgICAgICBqbXAgcjEs
IEpTRW50cnlQdHJUYWcKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICBtb3ZlIHIxLCBh
MAorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQdHJTaXpl
LCBhMgorICAgICAgICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50
cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFn
CisgICAgICAgIGVuZAogICAgIGVsc2UKICAgICAgICAgbm90U3VwcG9ydGVkKCkKICAgICBlbmQK
QEAgLTIyMjksMTIgKzIzOTQsMjMgQEAgb3AoY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5l
LCBtYWNybyAoKQogICAgICAgICBjQ2FsbDIoX2xsaW50X3Nsb3dfcGF0aF9jaGVja3BvaW50X29z
cl9leGl0KQogICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNDYWxsKCkKICAgICAgICAgYnJhbmNo
SWZFeGNlcHRpb24oX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpCi0gICAg
ICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAg
IG1vdmUgcjEsIGEwCisgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6bG9vcE9TUkVudHJ5
KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjEsIEpT
RW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgZWxzZQogICAgICAgICBub3RTdXBwb3J0ZWQo
KQogICAgIGVuZAogZW5kKQogCitvcChub3JtYWxfb3NyX2V4aXRfdHJhbXBvbGluZSwgbWFjcm8g
KCkKKyAgICBkaXNwYXRjaCgwKQorZW5kKQorCisKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3
ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBU
aGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhl
ciBKSVQuIFdlIGFzc2VydAogIyBhcyBtdWNoLgpAQCAtMjI3OSw0ICsyNDU1LDE4IEBAIG9wKHdh
c21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzLCBtYWNybyAoKQogICAgIGNyYXNoKCkKIGVuZCkK
IAorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKK193YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rsc193aWRlMTY6
Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93aWRlMTY6Citfd2FzbV90cmFt
cG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dp
ZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUzMjoKK193YXNt
X3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6CisgICAgY3Jhc2go
KQorCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNjI2YTQ2ODE3YjE1M2IzZDU0NjQ3YzNkODJj
MWI0NzQ5ZmU2MjY4NC4uOGU3MzM3ZDc2MjI3NDVhMDk2ZjBlZjI0ZWMwNDQwM2E2NmM2ZDhlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTY4Niw3ICs2ODYsNyBAQCBlbmQKICMgRW50cnlwb2ludHMg
aW50byB0aGUgaW50ZXJwcmV0ZXIKIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQx
LCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3JvIGZ1bmN0aW9u
QXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNr
KG9wY29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENv
ZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRl
Rm9yQ0NhbGwoKQpAQCAtNzU3LDYgKzc1NywxNCBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2so
ZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25z
UmF3UG9pbnRlclt0MV0sIFBCCiAgICAgbW92ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKKwor
ICAgICMgSXQgaXMgcmVxdWlyZWQgaW4gQVJNdjcgYW5kIE1JUHMgYmVjYXVzZSBnbG9iYWwgbGFi
ZWwgZGVmaW5pdGlvbnMKKyAgICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBh
IHNldCBvZiBpbnN0cnVjdGlvbnMKKyAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0
aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAorICAgICMgY3Jhc2hlcy4KKyAgICBfanNfdHJh
bXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CisgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5h
bWUlX3RhZzoKKyAgICBjcmFzaCgpCiBlbmQKIAogIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlv
bnMKQEAgLTIxMTUsNyArMjEyMyw3IEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xv
d1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhCiAgICAgc3Rv
cmVpIHQyLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFBheWxvYWRPZmZzZXRbdDNdCiAg
ICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KICAgICBtb3ZlIHQzLCBz
cAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisg
ICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCiAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFs
dWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNF
bnRyeVB0clRhZykKIAogLm9wQ2FsbFNsb3c6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGFhMTU3MjNjNjQwZjJk
NzdlYThhN2ZlODhhOThiYWVhODZkMmI5YjkuLjUzNGUwZGYzZGUzMDAwNjJmNzVmMTVjYmU1MTM2
NDlhN2RhYTdhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0zMDAsMTUgKzMwMCwyNSBAQCBtYWNybyBkb1ZN
RW50cnkobWFrZUNhbGwpCiAgICAgcmV0CiBlbmQKIAotCiAjIGEwLCBhMiwgdDMsIHQ0CiBtYWNy
byBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgdGVtcDIp
CiAgICAgYWRkcCAxNiwgc3AKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBj
bG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CisgICAgZWxzaWYgQVJNNjRFCisgICAgICAgIG1vdmUg
ZW50cnksIHQzCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0
T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0
KSAqIFB0clNpemUsIGEyCisgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcg
IyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvSmF2YVNjcmlwdFRyYW1w
b2xpbmUKKyAgICAgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lOgorICAgICAgICBj
YWxsIHQzLCBKU0VudHJ5UHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIGVudHJ5LCBKU0Vu
dHJ5UHRyVGFnCiAgICAgZW5kCisgICAgaWYgQVJNNjRFCisgICAgICAgIGdsb2JhbCBfdm1FbnRy
eVRvSmF2YVNjcmlwdEdhdGVBZnRlcgorICAgICAgICBfdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVB
ZnRlcjoKKyAgICBlbmQKICAgICBzdWJwIDE2LCBzcAogZW5kCiAKQEAgLTMyNiw5ICszMzYsMjAg
QEAgbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHByb3RvQ2FsbEZyYW1lLCB0ZW1w
MSwgdGVtcDIpCiAgICAgICAgIHN1YnAgMzIsIHNwCiAgICAgICAgIGNhbGwgdGVtcDEsIEhvc3RG
dW5jdGlvblB0clRhZwogICAgICAgICBhZGRwIDMyLCBzcAorICAgIGVsc2lmIEFSTTY0RQorICAg
ICAgICBtb3ZlIHRlbXAxLCB0MworICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBK
U0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6dm1FbnRyeVRv
TmF0aXZlKSAqIFB0clNpemUsIGEyCisgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBIb3N0RnVuY3Rpb25QdHJUYWcKKyAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9OYXRp
dmVUcmFtcG9saW5lCisgICAgICAgIF92bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lOgorICAgICAg
ICBjYWxsIHQzLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICBlbHNlCiAgICAgICAgIGNhbGwgdGVt
cDEsIEhvc3RGdW5jdGlvblB0clRhZwogICAgIGVuZAorICAgIGlmIEFSTTY0RQorICAgICAgICBn
bG9iYWwgX3ZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcgorICAgICAgICBfdm1FbnRyeVRvTmF0aXZl
R2F0ZUFmdGVyOgorICAgIGVuZAogZW5kCiAKIG9wKGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNl
cHRpb24sIG1hY3JvICgpCkBAIC00MzEsOCArNDUyLDE0IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9K
SVRGb3JMb29wKCkKICAgICAgICAgICAgIG1vdmUgUEMsIGExCiAgICAgICAgICAgICBjQ2FsbDIo
X2xsaW50X2xvb3Bfb3NyKQogICAgICAgICAgICAgYnRweiByMCwgLnJlY292ZXIKKwogICAgICAg
ICAgICAgbW92ZSByMSwgc3AKLSAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworICAg
ICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25z
dGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6Omxv
b3BPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgICAgIGptcCBbYTJdLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgam1wIHIwLCBKU0VudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAg
ICAgLnJlY292ZXI6CiAgICAgICAgICAgICBsb2FkUEMoKQogICAgICAgICBlbmQpCkBAIC02NDUs
NyArNjcyLDcgQEAgZW5kCiAjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyLgogCiAj
IEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUo
KSBsZWF2ZXMgYmVoaW5kLgotbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xv
d1BhdGgpCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2sob3Bjb2RlTmFtZSwgZG9uZUxhYmVsLCBz
bG93UGF0aCkKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXNbY2ZyXSwgdDAKICAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNb
dDFdLCBkb25lTGFiZWwKICAgICBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCkBAIC02ODIsOSArNzA5
LDE1IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQogCiAu
bm9FeHRyYVNsb3Q6CiAgICAgaWYgQVJNNjRFCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29u
c3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjol
b3Bjb2RlTmFtZSVVbnRhZykgKiBQdHJTaXplLCB0MworICAgICAgICBqbXAgW3QzXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnCisgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV91bnRh
ZzoKICAgICAgICAgbG9hZHAgOFtjZnJdLCBscgogICAgICAgICBhZGRwIDE2LCBjZnIsIHQzCiAg
ICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0MworICAgICAgICBfJW9wY29kZU5hbWUlVW50YWdH
YXRlQWZ0ZXI6CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
dW50YWc6CiAgICAgZW5kCiAKICAgICAvLyBNb3ZlIGZyYW1lIHVwIHQxIHNsb3RzCkBAIC03MTIs
OSArNzQ1LDE1IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRo
KQogICAgIGJhZGRpbnogMSwgdDIsIC5maWxsTG9vcAogCiAgICAgaWYgQVJNNjRFCisgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVUYWcpICogUHRyU2l6ZSwgdDMKKyAgICAg
ICAgam1wIFt0M10sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAgICBfanNfdHJhbXBvbGlu
ZV8lb3Bjb2RlTmFtZSVfdGFnOgogICAgICAgICBhZGRwIDE2LCBjZnIsIHQxCiAgICAgICAgIHRh
Z1JldHVybkFkZHJlc3MgdDEKICAgICAgICAgc3RvcmVwIGxyLCA4W2Nmcl0KKyAgICAgICAgXyVv
cGNvZGVOYW1lJVRhZ0dhdGVBZnRlcjoKKyAgICBlbHNlCisgICAgICAgIF9qc190cmFtcG9saW5l
XyVvcGNvZGVOYW1lJV90YWc6CiAgICAgZW5kCiAKIC5jb250aW51ZToKQEAgLTIxNzUsOSArMjIx
NCwxNSBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogICAgIHN0b3JlUEMoKQogICAgIHN0b3Jl
aSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAg
IG1vdmUgdDMsIHNwCi0gICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRy
eVB0clRhZykKLSAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQotCisgICAgaWYgQVJNNjRFCisgICAgICAgIGxvYWRwICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIHQwCisgICAgICAgIHByZXBhcmVDYWxsKHQwLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRy
eVB0clRhZykKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDAKKyAgICAgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgdDAsIEpTRW50cnlQdHJUYWcpCisgICAgZWxz
ZQorICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVB0
clRhZykKKyAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFy
Z2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICBlbmQKIC5vcENhbGxTbG93OgogICAgIHNsb3dQ
YXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkK
IGVuZApAQCAtMjI0NSw3ICsyMjkwLDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfdG9fcHJvcGVy
dHlfa2V5LCBPcFRvUHJvcGVydHlLZXksIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIGVuZCkK
IAogCi1jb21tb25PcChsbGludF9vcF9jYXRjaCwgbWFjcm8oKSBlbmQsIG1hY3JvIChzaXplKQor
Y29tbW9uT3AobGxpbnRfb3BfY2F0Y2gsIG1hY3JvICgpIGVuZCwgbWFjcm8gKHNpemUpCiAgICAg
IyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5l
IChiZWNhdXNlIHRoZQogICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUg
c2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCiAgICAgIyB0aGUgaW50ZXJwcmV0ZXIn
cyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgpAQCAtMjMx
MCw3ICsyMzU1LDEzIEBAIG9wKGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUs
IG1hY3JvICgpCiAgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJv
d2luZyBwcm90b2NvbC4KICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKICAgICBjb252ZXJ0Q2Fs
bGVlVG9WTSh0MSkKLSAgICBqbXAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgRXhj
ZXB0aW9uSGFuZGxlclB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBsb2FkcCBWTTo6dGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdLCBhMAorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
ZXhjZXB0aW9uSGFuZGxlcikgKiBQdHJTaXplLCBhMQorICAgICAgICBqbXAgW2ExXSwgTmF0aXZl
VG9KSVRHYXRlUHRyVGFnICMgRXhjZXB0aW9uSGFuZGxlclB0clRhZworICAgIGVsc2UKKyAgICAg
ICAgam1wIFZNOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWcKKyAgICBlbmQKIGVuZCkKIAogCkBAIC0zMDE4LDQgKzMwNjksMyBAQCBvcChmdXp6ZXJf
cmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCBtYWNybyAoKQogICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAogICAgIGRvUmV0dXJuKCkKIGVuZCkKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5kZXggYjkzMjIxMzQ4MzQy
ZTlhYTg4ODgzMmQ1YzdiYWQxNjY0N2FjYjQ1Yi4uYTlkYThiYWRlNjc3YzYwMzM0NGJiZmQ2NDI2
MDk4NWE4OTM0NjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dl
YkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCkBAIC0xMzksOCArMTM5LDEyIEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9s
b2d1ZShjb2RlQmxvY2tSZWdpc3RlcikKIAogICAgICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVz
VXNlZEJ5V2FzbSgpCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgICAg
ICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCi0gICAgICAgICAgICBqbXAgd3MwLCBXYXNtRW50
cnlQdHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIGxlYXAgSlND
Q29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0
ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAg
am1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBXYXNtRW50cnlQdHJUYWcKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgd3MwLCBXYXNtRW50cnlQdHJUYWcKKyAg
ICAgICAgICAgIGVuZAogICAgICAgICAucmVjb3ZlcjoKICAgICAgICAgICAgIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyKGNvZGVCbG9ja1JlZ2lzdGVyKQogICAgICAgICBlbmQpCkBAIC0xNTks
OSArMTYzLDE0IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAgICAgICAg
IGJ0cHogcjEsIC5yZWNvdmVyCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlX
YXNtKCkKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZXJQQ0FuZENGUigpCi0gICAgICAgICAgICB1
bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAgICAgICAgIG1vdmUgcjAsIGEwCi0gICAgICAgICAg
ICBqbXAgcjEsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAg
ICAgICAgICAgbW92ZSByMSwgd3MwCisgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
Ondhc21PU1JFbnRyeSkgKiBQdHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICBqbXAgW3dzMV0s
IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGptcCByMSwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBl
bmQKICAgICAgICAgLnJlY292ZXI6CiAgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgICAgICBlbmQpCkBAIC0yNTMsNyAr
MjYyLDYgQEAgZW5kCiAKIG1hY3JvIHdhc21Qcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9ja1NldHRlciwgbG9hZFdhc21JbnN0YW5jZSkKICAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFt
ZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCiAg
ICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAgICAgcHJlc2VydmVDYWxsZWVTYXZlc1VzZWRC
eVdhc20oKQogICAgIGxvYWRXYXNtSW5zdGFuY2UoKQpAQCAtNDU2LDcgKzQ2NCwxMiBAQCBlbmQK
IG1hY3JvIGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAg
ICByZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgIHJldAorICAgIGlmIEFSTTY0RQorICAgICAg
ICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1h
cCArIChjb25zdGV4cHIgR2F0ZTo6cmV0dXJuRnJvbUxMSW50KSAqIFB0clNpemUsIHdzMAorICAg
ICAgICBqbXAgW3dzMF0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgIGVsc2UKKyAgICAgICAg
cmV0CisgICAgZW5kCiBlbmQKIAogIyBFbnRyeSBwb2ludApAQCAtNDk3LDcgKzUxMCwxMyBAQCBv
cCh3YXNtX3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUsIG1hY3JvICgpCiAgICAgbG9h
ZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIGEzCiAg
ICAgY0NhbGw0KF9zbG93X3BhdGhfd2FzbV90aHJvd19leGNlcHRpb24pCiAKLSAgICBqbXAgcjAs
IEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbW92ZSByMCwg
YTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0Nv
bmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRyU2l6
ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2VwdGlv
bkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCByMCwgRXhjZXB0aW9uSGFuZGxl
clB0clRhZworICAgIGVuZAogZW5kKQogCiAjIERpc2FibGUgd2lkZSB2ZXJzaW9uIG9mIG5hcnJv
dy1vbmx5IG9wY29kZXMKQEAgLTcwNSw3ICs3MjQsMzggQEAgbWFjcm8gc2xvd1BhdGhGb3JXYXNt
Q2FsbChjdHgsIHNsb3dQYXRoLCBzdG9yZVdhc21JbnN0YW5jZSkKICAgICAgICAgICAgIGVuZCkK
IAogICAgICAgICAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKLSAgICAgICAgICAg
IGNhbGwgd3MwLCBTbG93UGF0aFB0clRhZworCisgICAgICAgICAgICBjdHgobWFjcm8ob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBzaXplKQorICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxOYXJy
b3coKQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRl
TWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUpICogUHRyU2l6ZSwgd3MxCisgICAg
ICAgICAgICAgICAgICAgICAgICBqbXAgW3dzMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpT
RW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgICAgICAgICAgICAg
ICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICBlbmQK
KworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMTYoKQorICAgICAgICAgICAgICAgICAg
ICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29u
c3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjol
b3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAg
ICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3Ry
YW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoKKyAgICAgICAgICAgICAgICAgICAgY2FsbCB3
czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAg
ICAgICAgICAgbWFjcm8gY2FsbFdpZGUzMigpCisgICAgICAgICAgICAgICAgICAgIGlmIEFSTTY0
RQorICAgICAgICAgICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlND
OjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1l
JV93aWRlMzIpICogUHRyU2l6ZSwgd3MxCisgICAgICAgICAgICAgICAgICAgICAgICBqbXAgW3dz
MV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgX3dhc21fdHJhbXBvbGluZV8l
b3Bjb2RlTmFtZSVfd2lkZTMyOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRy
eVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBz
aXplKGNhbGxOYXJyb3csIGNhbGxXaWRlMTYsIGNhbGxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigp
IGVuZCkKKyAgICAgICAgICAgICAgICBkZWZpbmVSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBzaXpl
KQorICAgICAgICAgICAgZW5kKQogCiAgICAgICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
d3MxCiAgICAgICAgICAgICBsb2FkaSBXYXNtOjpGdW5jdGlvbkNvZGVCbG9jazo6bV9udW1DYWxs
ZWVMb2NhbHNbd3MxXSwgd3MxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hcm02NC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0
LnJiCmluZGV4IGY5ZTU3MzJmYWYxNGIwODA5YmMyYmI2YzE5YjFjODAyYzU5ZjgzMDIuLmZmNTdi
NmE0OGFlOTc1NWI0YzEwNTQ4NTQzZDc1OWY0NDM2Mjc4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCkBAIC0zNywzOCArMzcsNDUgQEAKICMKICMgR1BSIGNv
bnZlbnRpb25zLCB0byBtYXRjaCB0aGUgYmFzZWxpbmUgSklUOgogIwotIyAgeDAgID0+IHQwLCBh
MCwgcjAKLSMgIHgxICA9PiB0MSwgYTEsIHIxCi0jICB4MiAgPT4gdDIsIGEyCi0jICB4MyAgPT4g
dDMsIGEzCi0jICB4NCAgPT4gdDQKLSMgIHg1ICA9PiB0NQorIyAgeDAgID0+IHQwLCBhMCwgd2Ew
LCByMAorIyAgeDEgID0+IHQxLCBhMSwgd2ExLCByMQorIyAgeDIgID0+IHQyLCBhMiwgd2EyCisj
ICB4MyAgPT4gdDMsIGEzLCB3YTMKKyMgIHg0ICA9PiB0NCwgYTQsIHdhNAorIyAgeDUgID0+IHQ1
LCBhNSwgd2E1CisjICB4NiAgPT4gdDYsIGE2LCB3YTYKKyMgIHg3ICA9PiB0NywgYTcsIHdhNwor
IyAgeDggID0+IHdzMAorIyAgeDkgID0+IHdzMQogIyB4MTMgID0+ICAgICAgICAgICAgICAgICAg
KHNjcmF0Y2gpCiAjIHgxNiAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDE3ICA9
PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQotIyB4MjYgID0+ICAgICAgICAgICAgIGNzcjAg
KFBCKQotIyB4MjcgID0+ICAgICAgICAgICAgIGNzcjEgKG51bWJlclRhZykKLSMgeDI4ICA9PiAg
ICAgICAgICAgICBjc3IyIChub3RDZWxsTWFzaykKKyMgeDI1ICA9PiAgICAgICAgICAgICBjc3I2
IChtZXRhZGF0YVRhYmxlKQorIyB4MjYgID0+ICAgICAgICAgICAgIGNzcjcgKFBCKQorIyB4Mjcg
ID0+ICAgICAgICAgICAgIGNzcjggKG51bWJlclRhZykKKyMgeDI4ICA9PiAgICAgICAgICAgICBj
c3I5IChub3RDZWxsTWFzaykKICMgeDI5ICA9PiBjZnIKICMgIHNwICA9PiBzcAogIyAgbHIgID0+
IGxyCiAjCiAjIEZQUiBjb252ZW50aW9ucywgdG8gbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVDoKICMK
LSMgIHEwICA9PiBmdDAsIGZhMCwgZnIKLSMgIHExICA9PiBmdDEsIGZhMQotIyAgcTIgID0+IGZ0
MiwgZmEyCi0jICBxMyAgPT4gZnQzLCBmYTMKLSMgIHE0ICA9PiBmdDQgICAgICAgICAgKHVudXNl
ZCBpbiBiYXNlbGluZSkKLSMgIHE1ICA9PiBmdDUgICAgICAgICAgKHVudXNlZCBpbiBiYXNlbGlu
ZSkKLSMgIHE4ICA9PiBjc2ZyMCAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jICBx
OSAgPT4gY3NmcjEgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTAgID0+IGNz
ZnIyICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTExICA9PiBjc2ZyMyAgICAg
ICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExMiAgPT4gY3NmcjQgICAgICAgIChPbmx5
IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTMgID0+IGNzZnI1ICAgICAgICAoT25seSB0aGUgbG93
ZXIgNjQgYml0cykKLSMgcTE0ICA9PiBjc2ZyNiAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJp
dHMpCi0jIHExNSAgPT4gY3NmcjcgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyAg
cTAgID0+IGZ0MCwgZmEwLCB3ZmEwLCBmcgorIyAgcTEgID0+IGZ0MSwgZmExLCB3ZmExCisjICBx
MiAgPT4gZnQyLCBmYTIsIHdmYTIKKyMgIHEzICA9PiBmdDMsIGZhMywgd2ZhMworIyAgcTQgID0+
IGZ0NCwgICAgICB3ZmE0ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxNSAgPT4g
ZnQ1LCAgICAgIHdmYTUgICAgICAgICAgKHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE2ICA9PiAg
ICAgICAgICAgd2ZhNiAgICAgICAgICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTcgID0+ICAg
ICAgICAgICB3ZmE3ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxOCAgPT4gY3Nm
cjAgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjICBxOSAgPT4g
Y3NmcjEgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjIHExMCAg
PT4gY3NmcjIgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisjIHEx
MSAgPT4gY3NmcjMgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCisj
IHExMiAgPT4gY3NmcjQgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMp
CisjIHExMyAgPT4gY3NmcjUgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJp
dHMpCisjIHExNCAgPT4gY3NmcjYgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0
IGJpdHMpCisjIHExNSAgPT4gY3NmcjcgICAgICAgICAgICAgICAgICAgKE9ubHkgdGhlIGxvd2Vy
IDY0IGJpdHMpCiAjIHEzMSAgPT4gc2NyYXRjaAogCiBkZWYgYXJtNjRHUFJOYW1lKG5hbWUsIGtp
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVmNWEzMmQ1
MTBmYzgwYzA2MzhhMzllZDY1MWFlZjVhOWQwZmZmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaApAQCAtMCwwICsxLDk2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBKU0MgeworCisjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKwor
I2RlZmluZSBKU0NfVVRJTElUWV9HQVRFUyh2KSBcCisgICAgdihqaXRDYWdlUHRyLCBOb1B0clRh
ZykgXAorICAgIHYodGFpbENhbGxKU0VudHJ5UHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYodGFp
bENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcsIE5vUHRyVGFnKSBcCisgICAgdihsb29wT1NSRW50
cnksIE5vUHRyVGFnKSBcCisgICAgdihlbnRyeU9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYo
d2FzbU9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYoZXhjZXB0aW9uSGFuZGxlciwgTm9QdHJU
YWcpIFwKKyAgICB2KHJldHVybkZyb21MTEludCwgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1RhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZywgTm9QdHJUYWcpIFwK
KyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWcsIE5vUHRy
VGFnKSBcCisgICAgdih2bUVudHJ5VG9KYXZhU2NyaXB0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAg
dih2bUVudHJ5VG9OYXRpdmUsIEhvc3RGdW5jdGlvblB0clRhZykgXAorCisjZGVmaW5lIEpTQ19K
U19HQVRFX09QQ09ERVModikgXAorICAgIHYob3BfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAg
IHYob3BfdGFpbF9jYWxsLCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3QsIEpT
RW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX25leHQsIEpTRW50cnlQdHJUYWcpIFwK
KyAgICB2KG9wX2l0ZXJhdG9yX29wZW4sIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxf
c2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfc2xvdywg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3Rfc2xvdywgSlNFbnRy
eVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5
U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19z
bG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2NvbnN0cnVjdF92YXJhcmdz
X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF9ldmFsX3Nsb3cs
IEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfaXRlcmF0b3JfbmV4dF9zbG93LCBK
U0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX29wZW5fc2xvdywgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnKSBcCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZp
bmUgSlNDX1dBU01fR0FURV9PUENPREVTKHYpIFwKKyAgICB2KHdhc21fY2FsbCwgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcpIFwKKyAgICB2KHdhc21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisgICAgdih3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKKworI2Vsc2UKKyNkZWZpbmUgSlNDX1dBU01fR0FURV9PUENPREVTKHYpCisjZW5kaWYK
KworZW51bSBjbGFzcyBHYXRlIDogdWludDhfdCB7CisjZGVmaW5lIEpTQ19ERUZJTkVfR0FURV9F
TlVNKGdhdGVOYW1lLCB0YWcpIGdhdGVOYW1lLAorI2RlZmluZSBKU0NfREVGSU5FX09QQ09ERV9H
QVRFX0VOVU0oZ2F0ZU5hbWUsIHRhZykgZ2F0ZU5hbWUsIGdhdGVOYW1lIyNfd2lkZTE2LCBnYXRl
TmFtZSMjX3dpZGUzMiwKKyAgICBKU0NfVVRJTElUWV9HQVRFUyhKU0NfREVGSU5FX0dBVEVfRU5V
TSkKKyAgICBKU0NfSlNfR0FURV9PUENPREVTKEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkK
KyAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMoSlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQor
I3VuZGVmIEpTQ19ERUZJTkVfR0FURV9FTlVNCit9OworCisjZGVmaW5lIEpTQ19DT1VOVChnYXRl
TmFtZSwgdGFnKSArIDEKKyNkZWZpbmUgSlNDX09QQ09ERV9DT1VOVChnYXRlTmFtZSwgdGFnKSAr
IDMKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9IDAgSlNDX1VUSUxJ
VFlfR0FURVMoSlNDX0NPVU5UKSBKU0NfSlNfR0FURV9PUENPREVTKEpTQ19PUENPREVfQ09VTlQp
IEpTQ19XQVNNX0dBVEVfT1BDT0RFUyhKU0NfT1BDT0RFX0NPVU5UKTsKKyN1bmRlZiBKU0NfQ09V
TlQKKyN1bmRlZiBKU0NfT1BDT0RFX0NPVU5UCisjZWxzZQorLy8gS2VlcCBpdCBub24temVybyB0
byBtYWtlIEpTQ0NvbmZpZydzIGFycmF5IG5vdCBbMF0uCitzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mR2F0ZXMgPSAxOworI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDQ29uZmlnLmgKaW5kZXggNWE0NzMxN2M2MmE1ZWJhNjY2Njc1NzM1Zjc3NDAz
NTAwYzY4MGI0MS4uN2Y5NmVjNTJlZDIxYWZkZTMzZGExMzBkYjdkZDQ2OTRlYzYxOThkNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJHYXRlLmgiCiAjaW5jbHVkZSAiT3Bjb2Rl
LmgiCiAjaW5jbHVkZSAiT3B0aW9uc0xpc3QuaCIKICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+
CkBAIC05Miw2ICs5Myw3IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICBPcGNvZGUgb3Bjb2Rl
TWFwW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBPcGNvZGUgb3Bj
b2RlTWFwV2lkZTE2W251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwogICAgICAgICBP
cGNvZGUgb3Bjb2RlTWFwV2lkZTMyW251bU9wY29kZUlEcyArIG51bVdhc21PcGNvZGVJRHNdOwor
ICAgICAgICBjb25zdCB2b2lkKiBnYXRlTWFwW251bWJlck9mR2F0ZXNdOwogICAgIH0gbGxpbnQ7
CiAKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTExNyw2
ICsxMTksNyBAQCBleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX2pzY0NvbmZp
ZzsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNvZGVNYXAgPSBvZmZzZXRv
ZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwKTsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0
T2ZKU0NDb25maWdPcGNvZGVNYXBXaWRlMTYgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQu
b3Bjb2RlTWFwV2lkZTE2KTsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdPcGNv
ZGVNYXBXaWRlMzIgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQub3Bjb2RlTWFwV2lkZTMy
KTsKK2NvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwID0gb2Zmc2V0b2Yo
SlNDOjpDb25maWcsIGxsaW50LmdhdGVNYXApOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKaW5kZXggYTk0MTYzNGJm
ZmRhN2E0NjMxNTZjNDU5MDZmNzc0OWJlYTIyNmFjNy4uZWFiMzdlZTg3ODQxNjQ5YmJkOTFhYzQ5
NDIzZTllM2JkN2M1MmVkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUHRyVGFnLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQ
dHJUYWcuY3BwCkBAIC0yOCw2ICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8bWFjaGluZS9jcHVfY2FwYWJpbGl0aWVz
Lmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRp
ZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdf
REVCVUdHSU5HKQpAQCAtMzUsOCArNDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgY29u
c3QgY2hhciogdGFnRm9yUHRyKGNvbnN0IHZvaWQqIHB0cikKIHsKICNkZWZpbmUgUkVUVVJOX05B
TUVfSUZfVEFHX01BVENIRVModGFnLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBcCi0gICAgaWYg
KHB0ciA9PSBXVEY6OnRhZ0NvZGVQdHJJbXBsPFdURjo6UHRyVGFnQWN0aW9uOjpOb0Fzc2VydCwg
SlNDOjp0YWc+KHJlbW92ZUNvZGVQdHJUYWcocHRyKSkpIFwKLSAgICAgICAgcmV0dXJuICN0YWc7
CisgICAgaWYgKGNhbGxlclR5cGUgIT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUIHx8IGNhbGxlZVR5
cGUgIT0gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSB7IFwKKyAgICAgICAgaWYgKHB0ciA9PSBX
VEY6OnRhZ0NvZGVQdHJJbXBsPFdURjo6UHRyVGFnQWN0aW9uOjpOb0Fzc2VydCwgSlNDOjp0YWc+
KHJlbW92ZUNvZGVQdHJUYWcocHRyKSkpIFwKKyAgICAgICAgICAgIHJldHVybiAjdGFnOyBcCisg
ICAgfQogICAgIEZPUl9FQUNIX0pTQ19QVFJUQUcoUkVUVVJOX05BTUVfSUZfVEFHX01BVENIRVMp
CiAjdW5kZWYgUkVUVVJOX05BTUVfSUZfVEFHX01BVENIRVMKICAgICByZXR1cm4gbnVsbHB0cjsg
Ly8gTWF0Y2hpbmcgdGFnIG5vdCBmb3VuZC4KQEAgLTYxLDQgKzY5LDMyIEBAIHZvaWQgaW5pdGlh
bGl6ZVB0clRhZ0xvb2t1cCgpCiAKICNlbmRpZiAvLyBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRS
VEFHX0RFQlVHR0lORykKIAorI2lmIENQVShBUk02NEUpCisKK1B0clRhZ0NhbGxlclR5cGUgY2Fs
bGVyVHlwZShQdHJUYWcgdGFnKQoreworI2RlZmluZSBSRVRVUk5fUFRSVEFHX1RZUEUoX3RhZ05h
bWUsIGNhbGxlZVR5cGUsIGNhbGxlclR5cGUpIGNhc2UgX3RhZ05hbWU6IHJldHVybiBjYWxsZXJU
eXBlOworICAgIHN3aXRjaCAodGFnKSB7CisgICAgICAgIEZPUl9FQUNIX0pTQ19QVFJUQUcoUkVU
VVJOX1BUUlRBR19UWVBFKQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBQdHJUYWdDYWxs
ZXJUeXBlOjpOYXRpdmU7CisgICAgfQorI3VuZGVmIFJFVFVSTl9QVFJUQUdfVFlQRQorICAgIHJl
dHVybiBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmU7Cit9CisKK1B0clRhZ0NhbGxlZVR5cGUgY2Fs
bGVlVHlwZShQdHJUYWcgdGFnKQoreworI2RlZmluZSBSRVRVUk5fUFRSVEFHX1RZUEUoX3RhZ05h
bWUsIGNhbGxlZVR5cGUsIGNhbGxlclR5cGUpIGNhc2UgX3RhZ05hbWU6IHJldHVybiBjYWxsZWVU
eXBlOworICAgIHN3aXRjaCAodGFnKSB7CisgICAgICAgIEZPUl9FQUNIX0pTQ19QVFJUQUcoUkVU
VVJOX1BUUlRBR19UWVBFKQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBQdHJUYWdDYWxs
ZWVUeXBlOjpOYXRpdmU7CisgICAgfQorI3VuZGVmIFJFVFVSTl9QVFJUQUdfVFlQRQorICAgIHJl
dHVybiBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmU7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0
clRhZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgKaW5kZXgg
ZGY4YjQwMjI2NmUwZTAyMDE5YWYzNWY2OGU5MWZhYTc4YmU3OTM1Yi4uMzM4YWFhZWFlNmExMjU1
MzY0NGVkNTU3M2FmNWIxYmM0ZjAzOTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDUHRyVGFnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUHRyVGFnLmgKQEAgLTI3LDQ2ICsyNyw1MyBAQAogCiAjaW5jbHVkZSAiSklUT3BlcmF0
aW9uTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9QdHJUYWcuaD4KKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbmRpZgor
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFURSB2b2lk
KiBqaXRDYWdlUHRyKHZvaWQqIHBvaW50ZXIsIHVpbnRwdHJfdCB0YWcpOworI2VuZGlmCiAKIG5h
bWVzcGFjZSBKU0MgewogCiB1c2luZyBQdHJUYWcgPSBXVEY6OlB0clRhZzsKIAogI2RlZmluZSBG
T1JfRUFDSF9KU0NfUFRSVEFHKHYpIFwKLSAgICAvKiBOYXRpdmUgTm9uZSAqLyBcCisgICAgLyog
Q2FsbGVlOk5hdGl2ZSBDYWxsZXI6Tm9uZSAqLyBcCiAgICAgdihET01KSVRGdW5jdGlvblB0clRh
ZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAg
ICAgdihEaXNhc3NlbWJseVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdD
YWxsZXJUeXBlOjpOb25lKSBcCiAgICAgdihQdXRWYWx1ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCi0gICAgLyogSklUIE5vbmUgKi8g
XAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOk5vbmUgKi8gXAogICAgIHYoQjNDb21waWxhdGlv
blB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBc
CiAgICAgdihFeGVjdXRhYmxlTWVtb3J5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KExpbmtCdWZmZXJQdHJUYWcsIFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAotICAgIC8qIE5hdGl2ZSBO
YXRpdmUgKi8gXAorICAgIHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFycjE2Qml0UHRyVGFnLCBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKKyAgICB2KFlhcnJNYXRj
aE9ubHk4Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6
Ok5vbmUpIFwKKyAgICB2KFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2ZSBD
YWxsZXI6TmF0aXZlICovIFwKICAgICB2KEJ5dGVjb2RlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBc
CiAgICAgdihKSVRQcm9iZUV4ZWN1dG9yUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUs
IFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVTdGFja0luaXRpYWxp
emF0aW9uRnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgdihTbG93UGF0aFB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICAvKiBKSVQgTmF0aXZl
ICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpOYXRpdmUgKi8gXAogICAgIHYoTmF0aXZl
VG9KSVRHYXRlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6
Ok5hdGl2ZSkgXAotICAgIC8qIE5hdGl2ZSBKSVQgKi8gXAorICAgIHYoWWFyckVudHJ5UHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAorICAg
IC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOkpJVCAqLyBcCiAgICAgdihIb3N0RnVuY3Rpb25QdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAg
ICAgdihPcGVyYXRpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6SklUKSBcCi0gICAgdihKSVRUb05hdGl2ZUdhdGVQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgLyogSklUIEpJVCAq
LyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6SklUICovIFwKICAgICB2KEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklU
KSBcCiAgICAgdihKSVRUaHVua1B0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdD
YWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFN0dWJSb3V0aW5lUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSlNFbnRyeVB0clRh
ZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKKyAgICB2
KEpTRW50cnlTbG93UGF0aFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKICAgICB2KEpTSW50ZXJuYWxQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKU1N3aXRjaFB0clRhZywgUHRy
VGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9TUkVu
dHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkg
XAogICAgIHYoT1NSRXhpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxs
ZXJUeXBlOjpKSVQpIFwKICAgICB2KFdhc21FbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnI4Qml0UHRyVGFnLCBQdHJU
YWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoWWFycjE2
Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkg
XAotICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihZ
YXJyQmFja3RyYWNrUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogCiAjZGVmaW5lIEpTQ19ERUNMQVJFX1BUUlRBRyhuYW1lLCB0eXBlLCB0YXJn
ZXQpIFdURl9ERUNMQVJFX1BUUlRBRyhuYW1lKQpAQCAtMTA4LDE4ICsxMTUsMjggQEAgRk9SX0VB
Q0hfSlNDX1BUUlRBRyhKU0NfREVDTEFSRV9QVFJUQUcpCiAjcHJhZ21hIHdhcm5pbmcocG9wKQog
I2VuZGlmCiAKK0pTX0VYUE9SVF9QUklWQVRFIFB0clRhZ0NhbGxlclR5cGUgY2FsbGVyVHlwZShQ
dHJUYWcpOworSlNfRVhQT1JUX1BSSVZBVEUgUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0
clRhZyk7CisKIHRlbXBsYXRlPFB0clRhZyB0YWcsIFB0clRhZ0NhbGxlZVR5cGUgY2FsbGVlVHlw
ZSwgUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlLCB0eXBlbmFtZSBQdHJUeXBlPgogQUxXQVlT
X0lOTElORSBzdGF0aWMgUHRyVHlwZSB0YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsK
ICAgICBzdGF0aWNfYXNzZXJ0KGNhbGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsK
ICAgICBpZiBjb25zdGV4cHIgKGNhbGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZl
KSB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykg
ewotICAgICAgICAgICAgc3RhdGljX2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRh
ZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcg
PT0gT3BlcmF0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omlu
c3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
Y29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJ
VE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKLSAg
ICAgICAgfQorICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwg
dGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAodGFnID09
IE9wZXJhdGlvblB0clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNl
KCkuYXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIg
KHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0
OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0cik7CisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmNv
bnRhaW5zKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSkpOworI2VuZGlmCisgICAgfSBlbHNlIHsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkp
CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KGppdENhZ2VQdHIoYml0
d2lzZV9jYXN0PHZvaWQqPihwdHIpLCB0YWcpKTsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4g
V1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDx0YWc+KHB0cik7CiB9CkBAIC0xMjksMTcgKzE0Niw2
NCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQdHJUeXBlIHVudGFnSlNDQ29kZVB0ckltcGwoUHRy
VHlwZSBwdHIpCiB7CiAgICAgc3RhdGljX2Fzc2VydChjYWxsZXJUeXBlID09IFB0clRhZ0NhbGxl
clR5cGU6OkpJVCk7CiAgICAgaWYgY29uc3RleHByIChjYWxsZWVUeXBlID09IFB0clRhZ0NhbGxl
ZVR5cGU6Ok5hdGl2ZSkgewotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyAhPSBKSVRUb05hdGl2
ZUdhdGVQdHJUYWcpIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlv
blB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKLSAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykKLSAgICAgICAgICAgICAgICBKSVRPcGVy
YXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Ci0gICAgICAg
ICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKLSAgICAg
ICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0
aW9uKHB0cik7CisgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8
fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKKyAgICAgICAgaWYgY29uc3RleHByICh0YWcg
PT0gT3BlcmF0aW9uUHRyVGFnKQorICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFu
Y2UoKS5hc3NlcnRJc0pJVE9wZXJhdGlvbihwdHIpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhw
ciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxp
c3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGJpdHdpc2VfY2FzdDxQdHJUeXBlPihKSVRPcGVyYXRpb25MaXN0Ojpp
bnN0YW5jZSgpLmNvbnRhaW5zKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSkpID09IHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gcmVtb3ZlQ29kZVB0clRhZyhwdHIpOworICAgICAgICB9CisjZW5k
aWYKKyAgICB9IGVsc2UgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICAgICAgUHRyVHlwZSByZW1vdmVkID0gcmVtb3Zl
Q29kZVB0clRhZyhwdHIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHRhZ0pTQ0NvZGVQ
dHJJbXBsPHRhZywgY2FsbGVlVHlwZSwgY2FsbGVyVHlwZT4ocmVtb3ZlZCkpID09IHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gcmVtb3ZlZDsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAg
IHJldHVybiBXVEY6OnVudGFnTmF0aXZlQ29kZVB0ckltcGw8dGFnPihwdHIpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgoraW5saW5lIFB0clR5cGUgdGFnQ29kZVB0cldpdGhTdGFj
a1BvaW50ZXJGb3JKSVRDYWxsKFB0clR5cGUgcHRyLCBjb25zdCB2b2lkKiBzdGFja1BvaW50ZXIp
Cit7CisgICAgQVNTRVJUKHB0cik7CisgICAgVU5VU0VEX1BBUkFNKHN0YWNrUG9pbnRlcik7Cisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCisgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSlNDX0pJVF9DQUdFKGJpdHdpc2VfY2Fz
dDx2b2lkKj4ocHRyKSwgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RhY2tQb2ludGVyKSkpOwor
I2VuZGlmCisjaWYgQ1BVKEFSTTY0RSkKKyAgICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVu
dGljYXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2Vf
Y2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOworI2Vsc2UKKyAgICByZXR1cm4gcHRyOworI2Vu
ZGlmCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+CitpbmxpbmUgUHRyVHlwZSB1bnRh
Z0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9p
ZCogc3RhY2tQb2ludGVyKQoreworICAgIEFTU0VSVChwdHIpOworICAgIFVOVVNFRF9QQVJBTShz
dGFja1BvaW50ZXIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNl
SklUQ2FnZSgpKSB7CisgICAgICAgIFB0clR5cGUgdW5jYWdlZCA9IHJlbW92ZUNvZGVQdHJUYWco
cHRyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJG
b3JKSVRDYWxsKHVuY2FnZWQsIHN0YWNrUG9pbnRlcikgPT0gcHRyKTsKKyAgICAgICAgcmV0dXJu
IHVuY2FnZWQ7CisgICAgfQorI2VuZGlmCisjaWYgQ1BVKEFSTTY0RSkKKyAgICByZXR1cm4gX19i
dWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2Nv
ZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOworI2Vsc2UKKyAgICByZXR1
cm4gcHRyOworI2VuZGlmCit9CisKICNpZiBDUFUoQVJNNjRFKSAmJiBFTkFCTEUoUFRSVEFHX0RF
QlVHR0lORykKIHZvaWQgaW5pdGlhbGl6ZVB0clRhZ0xvb2t1cCgpOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCmluZGV4IGFkZDI2NGU5MDk3NWIy
NjVmZDViZTEwZjI2MzJmZDc1ZTI4NmM4MWMuLmYzMDVlNGExNjRkMDFmZmIxZjgxYzc5ZWI1ZTQ5
ZjA0NWI4MTg1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGNoUmVzdWx0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1
bHQuaApAQCAtMzQsNyArMzQsMTAgQEAgc3RydWN0IE1hdGNoUmVzdWx0OwogI2lmIENQVShBRERS
RVNTMzIpCiB1c2luZyBFbmNvZGVkTWF0Y2hSZXN1bHQgPSB1aW50NjRfdDsKICNlbHNlCi11c2lu
ZyBFbmNvZGVkTWF0Y2hSZXN1bHQgPSBNYXRjaFJlc3VsdDsKK3N0cnVjdCBFbmNvZGVkTWF0Y2hS
ZXN1bHQgeworICAgIHNpemVfdCBzdGFydDsKKyAgICBzaXplX3QgZW5kOworfTsKICNlbmRpZgog
CiBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewpAQCAtNTYsNiArNTksMTIgQEAgc3RydWN0IE1hdGNoUmVz
dWx0IHsKICAgICAgICAgLCBlbmQoYml0d2lzZV9jYXN0PE1hdGNoUmVzdWx0PihtYXRjaCkuZW5k
KQogICAgIHsKICAgICB9CisjZWxzZQorICAgIEFMV0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQoRW5j
b2RlZE1hdGNoUmVzdWx0IG1hdGNoKQorICAgICAgICA6IHN0YXJ0KG1hdGNoLnN0YXJ0KQorICAg
ICAgICAsIGVuZChtYXRjaC5lbmQpCisgICAgeworICAgIH0KICNlbmRpZgogCiAgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgTWF0Y2hSZXN1bHQgZmFpbGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggMGQyZjVhY2Y3OWNkZjU3NDk4ZTZhNzNjMDY3MmQ2
ZGQ0YmY4ODQ3OC4uZTcxN2QzMGU2NGQxNTk3MzQ3OTJhM2Y0OGI5MjE2NTcyZmI0MDNiYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTUwLDYgKzUwLDEx
IEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEpJVF9D
QUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjaW5j
bHVkZSA8bWFjaGluZS9jcHVfY2FwYWJpbGl0aWVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpT
QyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0zOTIsNiArMzk3LDcgQEAgc3RhdGljIHZv
aWQgZGlzYWJsZUFsbEpJVE9wdGlvbnMoKQogICAgIE9wdGlvbnM6OnVzZU9NR0pJVCgpID0gZmFs
c2U7CiAgICAgT3B0aW9uczo6dXNlRE9NSklUKCkgPSBmYWxzZTsKICAgICBPcHRpb25zOjp1c2VS
ZWdFeHBKSVQoKSA9IGZhbHNlOworICAgIE9wdGlvbnM6OnVzZUpJVENhZ2UoKSA9IGZhbHNlOwog
fQogCiB2b2lkIE9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQpAQCAtMTExNCw0
ICsxMTIwLDEwIEBAIGJvb2wgT3B0aW9uUmVhZGVyOjpPcHRpb246Om9wZXJhdG9yPT0oY29uc3Qg
T3B0aW9uJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZiBFTkFCTEUo
SklUX0NBR0UpCitib29sIGNhblVzZUpJVENhZ2UoKSB7IHJldHVybiBKU0NfSklUX0NBR0VfVkVS
U0lPTigpOyB9CisjZWxzZQorYm9vbCBjYW5Vc2VKSVRDYWdlKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGJlODU5ZWE5MWRjYWU4YzIyNzE5MDNlYTNiMDFmNmNk
MGQ1MWY1OTMuLjIyNWUyMjQ4M2QwOWFjMjAzYmNiZWZlNWNiYThkNzUyZjBhZmUwNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDMsNiArNDMs
OCBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IHRydWU7
CiBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwog
I2VuZGlmCiAKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOworCiAvLyBI
b3cgZG8gSlNDIFZNIG9wdGlvbnMgd29yaz8KIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09
PQogLy8gVGhlIEZPUl9FQUNIX0pTQ19PUFRJT04oKSBtYWNybyBiZWxvdyBkZWZpbmVzIGEgbGlz
dCBvZiBhbGwgSlNDIG9wdGlvbnMgaW4gdXNlLApAQCAtNTIwLDYgKzUyMiw3IEBAIGNvbnN0ZXhw
ciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihVbnNp
Z25lZCwgc2VlZEZvckxJQ01GdXp6ZXIsIDQyNDI0MiwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dihEb3VibGUsIGFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHksIDAuNSwgTm9ybWFsLCBudWxs
cHRyKSBcCiAgICAgdihCb29sLCBleHBvc2VDdXN0b21TZXR0ZXJzT25HbG9iYWxPYmplY3RGb3JU
ZXN0aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1c2VKSVRDYWdl
LCBjYW5Vc2VKSVRDYWdlKCksIE5vcm1hbCwgbnVsbHB0cikgXAogCiBlbnVtIE9wdGlvbkVxdWl2
YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2xvd1BhdGhzLmNwcAppbmRleCA5YzRiNTk1NDZlNmY5NjBhYjc1OGUzYTUzZjJiNjFkYmI2
NzRjMjFlLi45MDYyMTEyMWE4MWUzMWI1MjE3NWI1OTdkOWJjNDEyNjQ4Njc2MzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICB9IHdoaWxlIChmYWxz
ZSkKIAogI2RlZmluZSBXQVNNX0NBTExfUkVUVVJOKHRhcmdldEluc3RhbmNlLCBjYWxsVGFyZ2V0
LCBjYWxsVGFyZ2V0VGFnKSBkbyB7IFwKLSAgICAgICAgV0FTTV9SRVRVUk5fVFdPKChyZXRhZ0Nv
ZGVQdHI8Y2FsbFRhcmdldFRhZywgU2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgdGFyZ2V0
SW5zdGFuY2UpOyBcCisgICAgICAgIFdBU01fUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxU
YXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0clRhZz4oY2FsbFRhcmdldCkpLCB0YXJnZXRJbnN0
YW5jZSk7IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAogI2RlZmluZSBDT0RFX0JMT0NLKCkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCAyMmJmNjZkOGM4MjJkYTkx
ZTAzMTgwNmEyZjY5ZDM2ZTRiZDhmN2JkLi45NGQzMDJhZWFmZDUxNmE1YjNmYzdmNGJmNWY3OTVh
M2Y1NmNhNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtNDAs
NiArNDAsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBZYXJyIHsKIAorI2lmIENQ
VShBUk02NCkKK0pTQ19BTk5PVEFURV9KSVRfT1BFUkFUSU9OKF9KSVRUYXJnZXRfdm1FbnRyeVRv
WWFyckpJVEFmdGVyLCB2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpOworI2VuZGlmCisKIE1hdGNoaW5n
Q29udGV4dEhvbGRlcjo6TWF0Y2hpbmdDb250ZXh0SG9sZGVyKFZNJiB2bSwgWWFyckNvZGVCbG9j
ayogeWFyckNvZGVCbG9jaywgTWF0Y2hGcm9tIG1hdGNoRnJvbSkKICAgICA6IG1fdm0odm0pCiB7
CkBAIC0zNzQ2LDkgKzM3NTAsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgcHVzaChYODZS
ZWdpc3RlcnM6OmVjeCk7CiAjZW5kaWYKICNlbGlmIENQVShBUk02NCkKLSAgICAgICAgdGFnUmV0
dXJuQWRkcmVzcygpOwogICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykgewotICAg
ICAgICAgICAgcHVzaFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CiAg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigweDEwMDAwKSwgc3VwcGxlbWVudGFyeVBsYW5l
c0Jhc2UpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHhkODAwKSwgbGVhZGluZ1N1
cnJvZ2F0ZVRhZyk7CiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigweGRjMDApLCB0cmFp
bGluZ1N1cnJvZ2F0ZVRhZyk7CkBAIC0zODAzLDggKzM4MDUsNyBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgICAgIHBvcChYODZSZWdpc3RlcnM6OmVieCk7CiAgICAgICAgIHBvcChYODZSZWdp
c3RlcnM6OmVicCk7CiAjZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIGlmIChtX2RlY29kZVN1cnJv
Z2F0ZVBhaXJzKQotICAgICAgICAgICAgcG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlu
a1JlZ2lzdGVyKTsKKyAgICAgICAgLy8gRG8gbm90aGluZwogI2VsaWYgQ1BVKEFSTV9USFVNQjIp
CiAgICAgICAgIHBvcChBUk1SZWdpc3RlcnM6OnI4KTsKICAgICAgICAgcG9wKEFSTVJlZ2lzdGVy
czo6cjYpOwpAQCAtMzgxMyw3ICszODE0LDEzIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogI2VsaWYgQ1BV
KE1JUFMpCiAgICAgICAgIC8vIERvIG5vdGhpbmcKICNlbmRpZgorCisjaWYgQ1BVKEFSTTY0KQor
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25Q
dHJUYWcsIE9wZXJhdGlvblB0clRhZz4oJnZtRW50cnlUb1lhcnJKSVRBZnRlcikpLCByZWdUMCk7
CisgICAgICAgIGZhckp1bXAocmVnVDAsIE9wZXJhdGlvblB0clRhZyk7CisjZWxzZQogICAgICAg
ICByZXQoKTsKKyNlbmRpZgogICAgIH0KIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5oCmluZGV4IDY2NDI4ZTA2NjNmMzMyMDkxNzc4MWRiYjlkMGM3MzBkMmI2ZDY4NWIu
LjE1YjdiZDZhMjZmZjZlNGIwMDEyMTI5ODllOGZkY2VlYTVhNGI4YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmgKQEAgLTc2LDYgKzc2LDkgQEAgY2xhc3MgTWF0Y2hpbmdDb250
ZXh0SG9sZGVyIHsKICNlbmRpZgogfTsKIAorZXh0ZXJuICJDIiBFbmNvZGVkTWF0Y2hSZXN1bHQg
dm1FbnRyeVRvWWFyckpJVChjb25zdCB2b2lkKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciogbWF0Y2hpbmdD
b250ZXh0LCBjb25zdCB2b2lkKiBjb2RlUHRyKTsKK2V4dGVybiAiQyIgdm9pZCB2bUVudHJ5VG9Z
YXJySklUQWZ0ZXIodm9pZCk7CisKIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFlhcnJDb2RlQmxvY2sp
OwpAQCAtMTA5LDI1ICsxMTIsNDEgQEAgY2xhc3MgWWFyckNvZGVCbG9jayB7CiAgICAgTWF0Y2hS
ZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29u
dGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZSgpKTsKKyNpZiBDUFUoQVJN
NjQpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBz
dGFydCwgbGVuZ3RoLCBvdXRwdXQsICZtYXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJy
OEJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX3JlZjguY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rp
b25QdHI8WWFyckpJVENvZGU4LCBZYXJyOEJpdFB0clRhZz4obV9yZWY4LmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCBtYXRjaGluZ0NvbnRl
eHQpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgVUNo
YXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwg
TWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBB
U1NFUlQoaGFzMTZCaXRDb2RlKCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1h
dGNoUmVzdWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwg
Jm1hdGNoaW5nQ29udGV4dCwgcmV0YWdDb2RlUHRyPFlhcnIxNkJpdFB0clRhZywgWWFyckVudHJ5
UHRyVGFnPihtX3JlZjE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAg
ICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlMTYs
IFlhcnIxNkJpdFB0clRhZz4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5w
dXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAg
ICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGlu
Z0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENvZGVNYXRjaE9ubHkoKSk7
CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFy
ckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgJm1hdGNoaW5nQ29udGV4dCwgcmV0
YWdDb2RlUHRyPFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fbWF0
Y2hPbmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJl
dHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZU1hdGNoT25seTgs
IFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCBtYXRjaGluZ0NvbnRleHQp
KTsKKyNlbmRpZgogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgVUNoYXIq
IGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBNYXRjaGluZ0NvbnRleHRI
b2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXMxNkJpdENv
ZGVNYXRjaE9ubHkoKSk7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVz
dWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsICZtYXRj
aGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWcsIFlhcnJF
bnRyeVB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsK
KyNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJy
SklUQ29kZU1hdGNoT25seTE2LCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KG1fbWF0Y2hPbmx5
MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxs
cHRyLCBtYXRjaGluZ0NvbnRleHQpKTsKKyNlbmRpZgogICAgIH0KIAogI2lmIEVOQUJMRShSRUdF
WFBfVFJBQ0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCmluZGV4IDc3MTM2MmI5MmEyZTUyMjkzOTg0ZTEx
NjUxYmQyYTkzOTNkOTgzYTIuLjI2ODhhNGVmZGY4MTdkYjdhZjY2Njk4NzVkZjIzYTc5ODkzNmFh
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKKysrIGIvU291cmNl
L1dURi93dGYvT1NBbGxvY2F0b3IuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBPU0FsbG9jYXRv
ciB7CiAgICAgLy8gcmVsZWFzZURlY29tbWl0dGVkIHNob3VsZCBiZSBjYWxsZWQgb24gYSByZWdp
b24gb2YgVk0gYWxsb2NhdGVkIGJ5IGEgc2luZ2xlIHJlc2VydmF0aW9uLAogICAgIC8vIHRoZSBt
ZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEgZGVjb21taXR0ZWQgc3RhdGUuIHJlc2Vy
dmVVbmNvbW1pdHRlZCByZXR1cm5zIHRvCiAgICAgLy8geW91IG1lbW9yeSB0aGF0IGlzIHplcm9l
ZC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRl
ZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9v
bCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZVVuY29tbWl0dGVkKHNp
emVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4
ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGluY2x1
ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcmVsZWFzZURlY29tbWl0dGVkKHZvaWQqLCBzaXplX3QpOwogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgc3ltbWV0cmljOyB0aGV5IGNvbW1pdCBvciBkZWNvbW1pdCBhIHJlZ2lvbiBvZiBW
TSAodW5jb21taXR0ZWQgVk0gc2hvdWxkCkBAIC01NSwyNyArNTUsMjcgQEAgY2xhc3MgT1NBbGxv
Y2F0b3IgewogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgcmVzZXJ2ZUFuZENv
bW1pdCBhbGxvY2F0ZXMgVk0gaW4gYW4gY29tbWl0dGVkIHN0YXRlLAogICAgIC8vIGRlY29tbWl0
QW5kUmVsZWFzZSBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBi
eSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJl
bnRseSBiZSBpbiBhIGNvbW1pdHRlZCBzdGF0ZS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1
ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFi
bGVkID0gZmFsc2UsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIHN0YXRp
YyB2b2lkIGRlY29tbWl0QW5kUmVsZWFzZSh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSk7CiAKICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBha2luIHRvIHJlc2VydmVBbmRDb21taXQvZGVjb21taXRB
bmRSZWxlYXNlLCBhYm92ZSAtIGhvd2V2ZXIgcmF0aGVyIHRoYW4KICAgICAvLyBjb21taXR0aW5n
L2RlY29tbWl0dGluZyB0aGUgZW50aXJlIHJlZ2lvbiBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgYWxs
b3cgYSBzdWJyZWdpb24gdG8gYmUKICAgICAvLyBzcGVjaWZpZWQuCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwg
c2l6ZV90IGNvbW1pdFNpemUsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0g
dHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBj
b21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpOwogCiAg
ICAgLy8gUmVhbGxvY2F0ZSBhbiBleGlzdGluZywgY29tbWl0dGVkIGFsbG9jYXRpb24uCiAgICAg
Ly8gVGhlIHByaW9yIGFsbG9jYXRpb24gbXVzdCBiZSBmdWxseSBjb21pdHRlZCwgYW5kIHRoZSBu
ZXcgc2l6ZSB3aWxsIGFsc28gYmUgZnVsbHkgY29tbWl0dGVkLgogICAgIC8vIFRoaXMgaW50ZXJm
YWNlIGlzIHByb3ZpZGVkIHNpbmNlIGl0IG1heSBiZSBwb3NzaWJsZSB0byBvcHRpbWl6ZSB0aGlz
IG9wZXJhdGlvbiBvbiBzb21lIHBsYXRmb3Jtcy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIHN0YXRpYyBUKiByZWFsbG9jYXRlQ29tbWl0dGVkKFQqLCBzaXplX3Qgb2xkU2l6ZSwgc2l6
ZV90IG5ld1NpemUsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwg
Ym9vbCBleGVjdXRhYmxlID0gZmFsc2UpOworICAgIHN0YXRpYyBUKiByZWFsbG9jYXRlQ29tbWl0
dGVkKFQqLCBzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUsIFVzYWdlID0gVW5rbm93blVz
YWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wg
aml0Q2FnZUVuYWJsZWQgPSBmYWxzZSk7CiAKICAgICAvLyBIaW50IHRvIHRoZSBPUyB0aGF0IGFu
IGFkZHJlc3MgcmFuZ2UgaXMgbm90IGV4cGVjdGVkIHRvIGJlIGFjY2Vzc2VkIGFueXRpbWUgc29v
bi4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaGludE1lbW9yeU5vdE5lZWRl
ZFNvb24odm9pZCosIHNpemVfdCk7CiB9OwogCi1pbmxpbmUgdm9pZCogT1NBbGxvY2F0b3I6OnJl
c2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKK2lubGluZSB2b2lkKiBP
U0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBj
b21taXRTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sIGppdENhZ2VFbmFibGVkKQogewotICAgIHZvaWQqIGJhc2UgPSByZXNlcnZlVW5jb21taXR0
ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CisgICAgdm9pZCog
YmFzZSA9IHJlc2VydmVVbmNvbW1pdHRlZChyZXNlcnZlU2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBl
eGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCk7CiAgICAgY29tbWl0KGJhc2UsIGNvbW1pdFNpemUs
IHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKICAgICByZXR1cm4gYmFzZTsKIH0KQEAgLTg2LDkgKzg2
LDkgQEAgaW5saW5lIHZvaWQgT1NBbGxvY2F0b3I6OmRlY29tbWl0QW5kUmVsZWFzZSh2b2lkKiBy
ZWxlYXNlQmFzZSwgc2l6ZV90IHJlbGVhc2VTaXoKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LWlubGluZSBUKiBPU0FsbG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZChUKiBvbGRCYXNlLCBz
aXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxl
LCBib29sIGV4ZWN1dGFibGUpCitpbmxpbmUgVCogT1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21t
aXR0ZWQoVCogb2xkQmFzZSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSB1
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVk
KQogewotICAgIHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZlQW5kQ29tbWl0KG5ld1NpemUsIHVzYWdl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CisgICAgdm9pZCogbmV3QmFzZSA9IHJlc2VydmVBbmRD
b21taXQobmV3U2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxl
ZCk7CiAgICAgbWVtY3B5KG5ld0Jhc2UsIG9sZEJhc2UsIHN0ZDo6bWluKG9sZFNpemUsIG5ld1Np
emUpKTsKICAgICBkZWNvbW1pdEFuZFJlbGVhc2Uob2xkQmFzZSwgb2xkU2l6ZSk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQqPihuZXdCYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1BhZ2VSZXNlcnZhdGlvbi5oIGIvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmgKaW5k
ZXggYTJhZWU4ODRlOTg2NGNkOTMyMWE2YjQ5NGU5ZTY5ODgyNDQzMTAzMC4uNDk0YmYwNWUwMDE3
MTUzODUxZWIxMGE1NTMzYzIyZmM2NWNiNzcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGFnZVJlc2VydmF0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFnZVJlc2VydmF0aW9uLmgK
QEAgLTU1LDEyICs1NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBQYWdlUmVzZXJ2YXRp
b24gOiBwcml2YXRlIFBhZ2VCbG9jayB7CiBwdWJsaWM6Ci0gICAgUGFnZVJlc2VydmF0aW9uKCkK
LSAgICAgICAgOiBtX2NvbW1pdHRlZCgwKQotICAgICAgICAsIG1fd3JpdGFibGUoZmFsc2UpCi0g
ICAgICAgICwgbV9leGVjdXRhYmxlKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgUGFnZVJlc2Vy
dmF0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgdXNpbmcgUGFnZUJsb2NrOjpiYXNlOwogICAgIHVz
aW5nIFBhZ2VCbG9jazo6c2l6ZTsKQEAgLTkzLDIyICs4OCwyMiBAQCBjbGFzcyBQYWdlUmVzZXJ2
YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9jayB7CiAgICAgICAgIHJldHVybiBtX2NvbW1pdHRlZDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmUoc2l6ZV90IHNpemUs
IE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSkKKyAgICBzdGF0aWMg
UGFnZVJlc2VydmF0aW9uIHJlc2VydmUoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1
c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBi
b29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAgICByZXR1cm4g
UGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSwgdXNh
Z2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2
ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVu
YWJsZWQsIGZhbHNlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVk
LCBmYWxzZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2
ZVdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBP
U0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVj
dXRhYmxlID0gZmFsc2UpCisgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlV2l0aEd1
YXJkUGFnZXMoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2Nh
dG9yOjpVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9u
KE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1
c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6
OnJlc2VydmVVbmNvbW1pdHRlZChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJs
ZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYWdl
UmVzZXJ2YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBP
U0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29s
IHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UpCisgICAgc3RhdGljIFBh
Z2VSZXNlcnZhdGlvbiByZXNlcnZlQW5kQ29tbWl0V2l0aEd1YXJkUGFnZXMoc2l6ZV90IHNpemUs
IE9TQWxsb2NhdG9yOjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdl
RW5hYmxlZCA9IGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6
ZSkpOwotICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZl
QW5kQ29tbWl0KHNpemUgKyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRh
YmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpOworICAgICAgICBy
ZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUg
KyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5h
YmxlZCwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwg
dHJ1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBkZWFsbG9jYXRlKCkKQEAgLTEyNyw3ICsxMjIsNyBA
QCBjbGFzcyBQYWdlUmVzZXJ2YXRpb24gOiBwcml2YXRlIFBhZ2VCbG9jayB7CiAgICAgfQogCiBw
cml2YXRlOgotICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9v
bCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGhhc0d1YXJkUGFnZXMpCisgICAgUGFn
ZVJlc2VydmF0aW9uKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29s
IGV4ZWN1dGFibGUsIGJvb2wsIGJvb2wgaGFzR3VhcmRQYWdlcykKICAgICAgICAgOiBQYWdlQmxv
Y2soYmFzZSwgc2l6ZSwgaGFzR3VhcmRQYWdlcykKICAgICAgICAgLCBtX2NvbW1pdHRlZCgwKQog
ICAgICAgICAsIG1fd3JpdGFibGUod3JpdGFibGUpCkBAIC0xMzUsOSArMTMwLDkgQEAgY2xhc3Mg
UGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgIHsKICAgICB9CiAKLSAg
ICBzaXplX3QgbV9jb21taXR0ZWQ7Ci0gICAgYm9vbCBtX3dyaXRhYmxlOwotICAgIGJvb2wgbV9l
eGVjdXRhYmxlOworICAgIHNpemVfdCBtX2NvbW1pdHRlZCB7IDAgfTsKKyAgICBib29sIG1fd3Jp
dGFibGUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9leGVjdXRhYmxlIHsgZmFsc2UgfTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IDBkNjY2NDE3ODZlYmU5NDY3YWUwNTk2ZDUw
NzdhMTYwNTk3ZTgwN2EuLjc2YWQyMzU5YTFhN2IzNGVmODk5ZDQyYjJlYzZlNGQxMGIzZGMyOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtODg4LDEwICs4ODgsMTAgQEAKICNlcnJvciAi
RU5BQkxFKFdITFNMX0NPTVBJTEVSKSByZXF1aXJlcyBFTkFCTEUoV0VCR1BVKSIKICNlbmRpZgog
Ci0jaWYgQ1BVKEFSTTY0KSAmJiBDUFUoQUREUkVTUzY0KQotI2RlZmluZSBVU0VfSlVNUF9JU0xB
TkRTIDEKKyNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShKSVQpICYmICgoVVNFKEFQUExFX0lOVEVS
TkFMX1NESykgJiYgQ1BVKEFSTTY0RSkpKQorI2RlZmluZSBFTkFCTEVfSklUX0NBR0UgMQogI2Vu
ZGlmCiAKLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShKSVQpICYmIEFTU0VSVF9FTkFCTEVECisj
aWYgT1MoREFSV0lOKSAmJiBDUFUoQUREUkVTUzY0KSAmJiBFTkFCTEUoSklUKSAmJiAoRU5BQkxF
KEpJVF9DQUdFKSB8fCBBU1NFUlRfRU5BQkxFRCkKICNkZWZpbmUgRU5BQkxFX0pJVF9PUEVSQVRJ
T05fVkFMSURBVElPTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtVXNlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCmluZGV4IDIyZjQ2MmIyYTY0
ZGFiZjhjMDg0OWE5MjBkZWFiZDlhMWMxZTViZTIuLmZjZTllZGExMzNjOWJiMzE2NzBlMzJlOWRm
M2EwN2E0YTJkYzM4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaApAQCAtMzA4LDMgKzMwOCw3IEBACiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPCAxMTAwMDApCiAjZGVmaW5lIFVTRV9DVEZPTlRHRVRBRFZBTkNFU19X
T1JLQVJPVU5EIDEKICNlbmRpZgorCisjaWYgQ1BVKEFSTTY0KSAmJiBDUFUoQUREUkVTUzY0KQor
I2RlZmluZSBVU0VfSlVNUF9JU0xBTkRTIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUHRyVGFnLmggYi9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaAppbmRleCA1YTQyMTcxMTFk
NWZhOTEyMTc2MGEyNDIxZTAyMGI1ZjFkZWI3OGJjLi5hYzkyZWMzMTk0ZGZhYzg0YzE1M2ZiNjZm
YWZlZWEzY2U5NjA0ZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaApAQCAtMzQ0LDYgKzM0NCw3IEBAIGJvb2wgaXNUYWdn
ZWRXaXRoKFB0clR5cGUgdmFsdWUpCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCB0eXBlbmFtZSBQdHJU
eXBlPgogdm9pZCBhc3NlcnRJc1RhZ2dlZFdpdGgoUHRyVHlwZSB2YWx1ZSkKIHsKKyAgICBVTlVT
RURfUEFSQU0odmFsdWUpOwogICAgIFdURl9QVFJUQUdfQVNTRVJUKFB0clRhZ0FjdGlvbjo6RGVi
dWdBc3NlcnQsIHZhbHVlLCB0YWcsIGlzVGFnZ2VkV2l0aDx0YWc+KHZhbHVlKSk7CiB9CiAKQEAg
LTQ0OSwyMCArNDUwLDYgQEAgaW5saW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3Qg
b2xkTGVuZ3RoLCBzaXplX3QgbmV3TGVuZ3RoKQogICAgIHJldHVybiBwdHJhdXRoX2F1dGhfYW5k
X3Jlc2lnbihwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG9sZExlbmd0
aCwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfZGF0YSwgbmV3TGVuZ3RoKTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KLWlubGluZSBQdHJUeXBlIHRhZ0NvZGVQdHJXaXRo
U3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2lu
dGVyKQotewotICAgIEFTU0VSVChwdHIpOwotICAgIHJldHVybiBwdHJhdXRoX3NpZ25fdW5hdXRo
ZW50aWNhdGVkKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lz
ZV9jYXN0PFB0clRhZz4oc3RhY2tQb2ludGVyKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFB0
clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklU
Q2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCogc3RhY2tQb2ludGVyKQotewotICAgIEFTU0VS
VChwdHIpOwotICAgIHJldHVybiBfX2J1aWx0aW5fcHRyYXV0aF9hdXRoKHB0ciwgcHRyYXV0aF9r
ZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwgYml0d2lzZV9jYXN0PFB0clRhZz4oc3RhY2tQb2lu
dGVyKSk7Ci19Ci0KIHRlbXBsYXRlIDxQdHJUYWcgdGFnLCB0eXBlbmFtZSBJbnRUeXBlPgogaW5s
aW5lIEludFR5cGUgdGFnSW50KEludFR5cGUgcHRySW50KQogewpAQCAtNTIwLDEyICs1MDcsNiBA
QCBpbmxpbmUgVCogcmV0YWdBcnJheVB0cihUKiBwdHIsIHNpemVfdCwgc2l6ZV90KQogICAgIHJl
dHVybiBwdHI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPj4KLWlubGluZSBQ
dHJUeXBlIHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwg
Y29uc3Qgdm9pZCopIHsgcmV0dXJuIHB0cjsgfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBl
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2
YWx1ZT4+Ci1pbmxpbmUgUHRyVHlwZSB1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklU
Q2FsbChQdHJUeXBlIHB0ciwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIHB0cjsgfQotCiB0ZW1wbGF0
ZSA8UHRyVGFnLCB0eXBlbmFtZSBJbnRUeXBlPgogaW5saW5lIEludFR5cGUgdGFnSW50KEludFR5
cGUgcHRySW50KQogewpAQCAtNTcyLDkgKzU1Myw3IEBAIHVzaW5nIFdURjo6cmV0YWdBcnJheVB0
cjsKIHVzaW5nIFdURjo6cmVtb3ZlQXJyYXlQdHJUYWc7CiAKIHVzaW5nIFdURjo6dGFnQ29kZVB0
cjsKLXVzaW5nIFdURjo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsOwogdXNp
bmcgV1RGOjp1bnRhZ0NvZGVQdHI7Ci11c2luZyBXVEY6OnVudGFnQ29kZVB0cldpdGhTdGFja1Bv
aW50ZXJGb3JKSVRDYWxsOwogdXNpbmcgV1RGOjpyZXRhZ0NvZGVQdHI7CiB1c2luZyBXVEY6OnJl
bW92ZUNvZGVQdHJUYWc7CiB1c2luZyBXVEY6OnRhZ0NGdW5jdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYv
cG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKaW5kZXggNDQ1NDA1OWM1MTVkMmE0MTJiNDMyZDA3
MTQ2Y2Y2ZjAxMWQ0NzYwYi4uNmNlZmQyZWUyZDMxMDVjMmQ0MDQ4NWY2OTY1ZmViYTg4NDViNDMz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvT1NBbGxvY2F0b3JQT1NJWC5jcHAKQEAgLTMxLDE0
ICszMSwyNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
Z2VCbG9jay5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0
aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUoSklUX0NBR0UpCisjaWYg
T1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUIE1BUF9KSVQKKyNkZWZp
bmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1BUF9KSVQKKyNlbHNlIC8v
IE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCAwCisjZGVmaW5lIE1B
UF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCisjZW5kaWYgLy8gT1MoREFSV0lO
KQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKwogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQq
IE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2Fn
ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdl
cykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBV
c2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGppdENhZ2VF
bmFibGVkLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKIHsKICNpZiBPUyhMSU5VWCkKICAgICBV
TlVTRURfUEFSQU0odXNhZ2UpOwogICAgIFVOVVNFRF9QQVJBTSh3cml0YWJsZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWN1dGFibGUpOworICAgIFVOVVNFRF9QQVJBTShqaXRDYWdlRW5hYmxlZCk7
CiAgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAKICAgICB2b2lkKiByZXN1
bHQgPSBtbWFwKDAsIGJ5dGVzLCBQUk9UX05PTkUsIE1BUF9OT1JFU0VSVkUgfCBNQVBfUFJJVkFU
RSB8IE1BUF9BTk9OLCAtMSwgMCk7CkBAIC00Niw3ICs1OSw3IEBAIHZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0
YWJsZSwKICAgICAgICAgQ1JBU0goKTsKICAgICBtYWR2aXNlKHJlc3VsdCwgYnl0ZXMsIE1BRFZf
RE9OVE5FRUQpOwogI2Vsc2UKLSAgICB2b2lkKiByZXN1bHQgPSByZXNlcnZlQW5kQ29tbWl0KGJ5
dGVzLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGluY2x1ZGVzR3VhcmRQYWdlcyk7Cisg
ICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxl
LCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwgaW5jbHVkZXNHdWFyZFBhZ2VzKTsKICNpZiBI
QVZFKE1BRFZfRlJFRV9SRVVTRSkKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIC8vIFRvIHN1
cHBvcnQgdGhlICJyZXNlcnZlIHRoZW4gY29tbWl0IiBtb2RlbCwgd2UgaGF2ZSB0byBpbml0aWFs
bHkgZGVjb21taXQuCkBAIC01OSw3ICs3Miw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZl
VW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1p
dChzaXplX3QgYnl0ZXMsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFi
bGUsIGJvb2wgaW5jbHVkZXNHdWFyZFBhZ2VzKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVB
bmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBl
eGVjdXRhYmxlLCBib29sIGppdENhZ2VFbmFibGVkLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykK
IHsKICAgICAvLyBBbGwgUE9TSVggcmVzZXJ2YXRpb25zIHN0YXJ0IG91dCBsb2dpY2FsbHkgY29t
bWl0dGVkLgogICAgIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEOwpAQCAtNzAsOCArODMsMTQg
QEAgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2Fn
ZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm8KIAogICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRF
IHwgTUFQX0FOT047CiAjaWYgT1MoREFSV0lOKQotICAgIGlmIChleGVjdXRhYmxlKQotICAgICAg
ICBmbGFncyB8PSBNQVBfSklUOworICAgIGlmIChleGVjdXRhYmxlKSB7CisgICAgICAgIGlmIChq
aXRDYWdlRW5hYmxlZCkKKyAgICAgICAgICAgIGZsYWdzIHw9IE1BUF9FWEVDVVRBQkxFX0ZPUl9K
SVRfV0lUSF9KSVRfQ0FHRTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmxhZ3MgfD0gTUFQ
X0VYRUNVVEFCTEVfRk9SX0pJVDsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShqaXRD
YWdlRW5hYmxlZCk7CiAjZW5kaWYKIAogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NB
bGxvY2F0b3JXaW4uY3BwCmluZGV4IDlkNmMwYWE3NDExMzZjYzhhODQ2ZDA0MTJhOTIxYmRhMmFj
MzhiNDcuLjZkNTJjNjYyZGYwNmY5NDgxYTkzMzVhN2VkMmI0NTE0MzY2NDY0ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgaW5s
aW5lIERXT1JEIHByb3RlY3Rpb24oYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQogICAg
ICAgICAod3JpdGFibGUgPyBQQUdFX1JFQURXUklURSA6IFBBR0VfUkVBRE9OTFkpOwogfQogCi12
b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2Us
IGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCkKK3ZvaWQqIE9TQWxsb2NhdG9y
OjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlLCBib29sLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1
YWxBbGxvYyhudWxscHRyLCBieXRlcywgTUVNX1JFU0VSVkUsIHByb3RlY3Rpb24od3JpdGFibGUs
IGV4ZWN1dGFibGUpKTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCog
T1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29s
IHdyaXRhYmxlLCBib29sIGUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkKiBPU0FsbG9j
YXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxl
LCBib29sIGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENv
bW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUs
IGJvb2wsIGJvb2wpCiB7CiAgICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKG51bGxwdHIs
IGJ5dGVzLCBNRU1fUkVTRVJWRSB8IE1FTV9DT01NSVQsIHByb3RlY3Rpb24od3JpdGFibGUsIGV4
ZWN1dGFibGUpKTsKICAgICBpZiAoIXJlc3VsdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412621</attachid>
            <date>2020-10-29 00:35:13 -0700</date>
            <delta_ts>2020-11-02 12:32:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218143-20201029003512.patch</filename>
            <type>text/plain</type>
            <size>169225</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODIwNjEzYTgyNzliNTMxNWY1OGEzODlmNDE3MzA3NzZkMTM4OTRhLi41ODZlYmU3MmRjYzY0OWI3
YjQxMTYzOGM5NGJlMmNiZDY5MTNjZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzYgQEAKKzIwMjAtMTAtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6Y29udGFpbnMgY29uc3QpOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0RS5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6
Y2FsbFRydXN0ZWRQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpjYWxsUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6ZmFySnVtcFJlZ2lzdGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXApOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6cmV0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpmYXJK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6ZmFySnVtcCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpmYXJKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYWxsZXJSZXR1cm5QQyk6CisgICAgICAgIChKU0M6
OkRGRzo6YWRqdXN0QW5kSnVtcFRvVGFyZ2V0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmg6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6CisgICAgICAgICogaml0L0dQ
UkluZm8uaDoKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgor
ICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmspOgorICAgICAgICAqIGpp
dC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRp
b24pOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldE9wY29kZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRPcGNvZGVXaWRl
MTYpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTMyKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldENvZGVQdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTE2Q29k
ZVB0cik6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRXaWRlMzJDb2RlUHRyKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmdldENvZGVGdW5jdGlvblB0cik6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMy
Q29kZUZ1bmN0aW9uUHRyKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlwb2ludFRyYW1wb2xpbmUpOgorICAgICAgICAoSlND
OjpMTEludDo6c2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNl
dEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFByb2dyYW1FbnRyeXBv
aW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldE1vZHVsZVByb2dyYW1FbnRyeXBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlw
b2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBvaW50
KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnQuaDoKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpjb21tb25DYWxsRXZhbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpkaXNwYXRjaFRvTmV4dEluc3RydWN0aW9uKToKKyAgICAgICAgKiBsbGludC9M
TEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xv
Z3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJu
UG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnByb2dyYW1FbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dy
YW1FbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1
bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmNyZWF0ZUpTR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21H
YXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6
OkxMSW50OjplbnRyeU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondh
c21PU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5k
bGVyR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6dW50YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0
clRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1
bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1
bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENh
bGxUcmFtcG9saW5lVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25U
aHVuayk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20v
YXJtNjQucmI6CisgICAgICAgICogcnVudGltZS9HYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNDQ29uZmlnLmg6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuY3BwOgorICAg
ICAgICAoSlNDOjp0YWdGb3JQdHIpOgorICAgICAgICAoSlNDOjpjYWxsZXJUeXBlKToKKyAgICAg
ICAgKEpTQzo6Y2FsbGVlVHlwZSk6CisgICAgICAgICogcnVudGltZS9KU0NQdHJUYWcuaDoKKyAg
ICAgICAgKEpTQzo6dGFnSlNDQ29kZVB0ckltcGwpOgorICAgICAgICAoSlNDOjp1bnRhZ0pTQ0Nv
ZGVQdHJJbXBsKToKKyAgICAgICAgKEpTQzo6dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JK
SVRDYWxsKToKKyAgICAgICAgKEpTQzo6dW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJ
VENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvTWF0Y2hSZXN1bHQuaDoKKyAgICAgICAgKEpTQzo6
TWF0Y2hSZXN1bHQ6Ok1hdGNoUmVzdWx0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpkaXNhYmxlQWxsSklUT3B0aW9ucyk6CisgICAgICAgIChKU0M6OmNh
blVzZUpJVENhZ2UpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAg
KiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6Cisg
ICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxv
Y2s6OmV4ZWN1dGUpOgorCiAyMDIwLTEwLTI4ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVr
aUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dW1BsYXlTdGF0aW9uXSBBZGQgaGFuZGxp
bmcgZm9yIGFjY2VwdCBmYWlsdXJlIGNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTFiM2UwYmMxNDM5MWY4YTViMmRmOWU1
ZmE2ZjEyZjM0ODkzNTcyNi4uYjI2Nzk3M2ExN2QxNWU0ZDU3YjFmZjE0YTg0MWVmNjhmNTk1MjA1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0xMC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBKSVRDYWdlIHN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL09TQWxsb2Nh
dG9yLmg6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KToKKyAg
ICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQpOgorICAgICAgICAq
IHd0Zi9QYWdlUmVzZXJ2YXRpb24uaDoKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpy
ZXNlcnZlKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJk
UGFnZXMpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRX
aXRoR3VhcmRQYWdlcyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6UGFnZVJlc2Vy
dmF0aW9uKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm1Vc2UuaDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAgICAgIChXVEY6OmFz
c2VydElzVGFnZ2VkV2l0aCk6CisgICAgICAgIChXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2lu
dGVyRm9ySklUQ2FsbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnVudGFnQ29kZVB0cldpdGhT
dGFja1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvcG9zaXgvT1NB
bGxvY2F0b3JQT1NJWC5jcHA6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlVW5j
b21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdCk6
CisgICAgICAgICogd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHA6CisgICAgICAgIChXVEY6Ok9T
QWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRv
cjo6cmVzZXJ2ZUFuZENvbW1pdCk6CisKIDIwMjAtMTAtMjggIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgQmV0dGVyIGNhY2hlIG91ciBzZXJpYWxpemF0aW9uIG9m
IHRoZSBvdXRlciBURFogZW52aXJvbm1lbnQgd2hlbiBjcmVhdGluZyBGdW5jdGlvbkV4ZWN1dGFi
bGVzIGR1cmluZyBieXRlY29kZSBnZW5lcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggZTNkOGFiMGE0NzA5NmQwZDExM2U3ODNhZGQxNTQyOGY1Nzg0YzI1YS4uZTcx
NmM2MTk5ZTA5OWUxNjYxMzQ3YjQyOWQ1YjcyYmFiZmM2ZTM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtODY3LDYgKzg2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
CiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKICAgICBydW50aW1lL0Z1enplckFnZW50
LmgKKyAgICBydW50aW1lL0dhdGUuaAogICAgIHJ1bnRpbWUvR2VuZXJpY09mZnNldC5oCiAgICAg
cnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAzZTdl
MWNiMmE5YWRjZDhkOGZjZmRlZDY1MDRmNGE2ODYyYmFhODkuLmNiYjk4MTYxY2JjMzgxOTIwYmQ4
ZjU2ZTgwYTZkYzk5ZWI1MDEwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
ODUzLDYgKzE4NTMsNyBAQAogCQlFMzZCNzY3MDIyRjhENjE5MDBEMDk4MTggLyogV2FzbU9NR0Zv
ck9TUkVudHJ5UGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM2Qjc2NkYyMkY4RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4u
aCAqLzsgfTsKIAkJRTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2
MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM2RURDRTUyNEYwOTc1NzAwRTYwREEy
IC8qIENvbmN1cnJlbmN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzcxMTk5MjI1M0ZB
ODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc1MENDODI1MDJFODdF
MDA2QTBBQUIgLyogSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3NTBDQzcyNTAyRTg3RTAwNkEwQUFCIC8q
IEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYzMTZEIC8q
IFdhc21HbG9iYWwuaCAqLzsgfTsKQEAgLTUwNjEsNiArNTA2Miw3IEBACiAJCUUzNkI3NjZGMjJG
OEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM2Q0M5NDYyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNyZWF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzZFRENFNDI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uY3VycmVuY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3MTE5OTEyNTNGQTg3RTAwQkE2OUEwIC8qIEdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzc1MENDNzI1MDJFODdFMDA2QTBBQUIgLyogSW50bERhdGVUaW1l
Rm9ybWF0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsRGF0
ZVRpbWVGb3JtYXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0
RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI4MCw2ICs3MjgyLDcgQEAKIAkJCQlFMzNB
OTQ5MjIyNTUzMjI5MDBENDJCMDYgLyogRnV6emVyQWdlbnQuaCAqLywKIAkJCQlDRUNGQUQzNTIz
NzJEQUE3MDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMuY3BwICovLAogCQkJCUNFQ0ZBRDM0
MjM3MkRBQTcwMDI5MTU5OSAvKiBGdXp6ZXJQcmVkaWN0aW9ucy5oICovLAorCQkJCUUzNzExOTkx
MjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRlLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJ
CQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcCAqLywKQEAgLTk3MDEsNiArOTcwNCw3IEBACiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0E5NDk3MjI1
NTMyMzMwMEQ0MkIwNiAvKiBGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDRkFE
MzYyMzcyREFEMDAwMjkxNTk5IC8qIEZ1enplclByZWRpY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzcxMTk5MjI1M0ZBODdGMDBCQTY5QTAgLyogR2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdhcmVK
SVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAppbmRleCBiM2NlMTc3OTJkMDE2
N2Y0ZWM3YmVjY2E0ZmRlODVjNDVjYmIxMGIwLi5lNGYyNmFiNDY2ZTJmYjUwNTY3MDI4OTJlZTNh
YmFjNzY1Yjc3ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0pJVE9wZXJhdGlvbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvSklUT3BlcmF0aW9uTGlzdC5jcHAKQEAgLTI2LDYgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9uTGlzdC5oIgogCisjaW5jbHVkZSAiR2F0ZS5o
IgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25z
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIExhenlOZXZlckRlc3Ryb3llZDxKSVRP
cGVyYXRpb25MaXN0PiBqaXRPcGVyYXRpb25MaXN0OwpAQCAtNDUsMTggKzUzLDIyIEBAIHZvaWQg
SklUT3BlcmF0aW9uTGlzdDo6aW5pdGlhbGl6ZSgpCiAjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05f
VkFMSURBVElPTikKIHN0YXRpYyBTVVBQUkVTU19BU0FOIEFMV0FZU19JTkxJTkUgdm9pZCBhZGRQ
b2ludGVycyhIYXNoTWFwPHZvaWQqLCB2b2lkKj4mIG1hcCwgY29uc3QgdWludHB0cl90KiBiZWdp
bkhvc3QsIGNvbnN0IHVpbnRwdHJfdCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9w
ZXJhdGlvbnMsIGNvbnN0IHVpbnRwdHJfdCogZW5kT3BlcmF0aW9ucykKIHsKLSAgICBmb3IgKGNv
bnN0IHVpbnRwdHJfdCogY3VycmVudCA9IGJlZ2luSG9zdDsgY3VycmVudCAhPSBlbmRIb3N0OyAr
K2N1cnJlbnQpIHsKLSAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0
d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAg
ICAgICAgICAgYXV0byByZXN1bHQgPSBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29k
ZVB0ckltcGw8SG9zdEZ1bmN0aW9uUHRyVGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NF
UlQocmVzdWx0LmlzTmV3RW50cnkpOwotICAgICAgICB9CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgSlNDX0pJVF9DQUdFRF9Q
T0lOVEVSX1JFR0lTVFJBVElPTigpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGZvciAo
Y29uc3QgdWludHB0cl90KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVu
ZE9wZXJhdGlvbnM7ICsrY3VycmVudCkgewotICAgICAgICB2b2lkKiBjb2RlUHRyID0gcmVtb3Zl
Q29kZVB0clRhZyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCpjdXJyZW50KSk7Ci0gICAgICAgIGlmIChj
b2RlUHRyKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1hcC5hZGQoY29kZVB0ciwgV1RG
Ojp0YWdOYXRpdmVDb2RlUHRySW1wbDxPcGVyYXRpb25QdHJUYWc+KGNvZGVQdHIpKTsKLSAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisjZW5kaWYKKyAgICBpZiBjb25zdGV4
cHIgKEFTU0VSVF9FTkFCTEVEKSB7CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90KiBjdXJy
ZW50ID0gYmVnaW5Ib3N0OyBjdXJyZW50ICE9IGVuZEhvc3Q7ICsrY3VycmVudCkgeworICAgICAg
ICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZvaWQq
PigqY3VycmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIpCisgICAgICAgICAgICAgICAg
bWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0
clRhZz4oY29kZVB0cikpOworICAgICAgICB9CisgICAgICAgIGZvciAoY29uc3QgdWludHB0cl90
KiBjdXJyZW50ID0gYmVnaW5PcGVyYXRpb25zOyBjdXJyZW50ICE9IGVuZE9wZXJhdGlvbnM7ICsr
Y3VycmVudCkgeworICAgICAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWco
Yml0d2lzZV9jYXN0PHZvaWQqPigqY3VycmVudCkpOworICAgICAgICAgICAgaWYgKGNvZGVQdHIp
CisgICAgICAgICAgICAgICAgbWFwLmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJ
bXBsPE9wZXJhdGlvblB0clRhZz4oY29kZVB0cikpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
NzMsNiArODUsNTYgQEAgdm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1bGF0ZVBvaW50ZXJzSW5K
YXZhU2NyaXB0Q29yZSgpCiAjZW5kaWYKIH0KIAordm9pZCBKSVRPcGVyYXRpb25MaXN0Ojpwb3B1
bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50KCkKK3sKKyNpZiBFTkFCTEUoSklU
X09QRVJBVElPTl9WQUxJREFUSU9OKQorICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5
OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFtdIHsKKworI2RlZmluZSBMTElOVF9PUChu
YW1lKSBcCisgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlv
blB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUpKSwgXAorICAgIGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1l
KSksIFwKKyAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSkpLAorCisjZGVmaW5lIExMSU5UX1JFVFVS
Tl9MT0NBVElPTihuYW1lLCAuLi4pIFwKKyAgICBMTElOVF9PUChuYW1lIyNfcmV0dXJuX2xvY2F0
aW9uKQorCisgICAgICAgIGNvbnN0IHVpbnRwdHJfdCBvcGVyYXRpb25zW10gPSB7CisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSwKKyAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8
Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSks
CisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2spKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTElu
dDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1
ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAg
ICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25Q
dHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSkpLAorICAg
ICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0
cjxDRnVuY3Rpb25QdHJUYWc+KHdhc21fZnVuY3Rpb25fcHJvbG9ndWUpKSwKKyAgICAgICAgICAg
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscykpLAorICAgICAgICAgICAg
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rp
b25QdHJUYWc+KGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpKSwKKyAgICAgICAg
ICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPihsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uKSksCisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENG
dW5jdGlvblB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFt
cG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0
Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xp
bmUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2Rl
RnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9v
cF9oaW50KSksCisKKyAgICAgICAgICAgIExMSU5UX09QKG9wX2NhdGNoKQorICAgICAgICAgICAg
TExJTlRfT1AobGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpCisKKyAgICAgICAgICAgIExMSU5U
X1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5f
TE9DQVRJT04ob3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9MT0NBVElP
TihvcF9wdXRfYnlfaWQpCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0
X2J5X3ZhbCkKKworICAgICAgICAgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhMTElOVF9SRVRVUk5f
TE9DQVRJT04pCisgICAgICAgICAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJO
X0xPQ0FUSU9OKQorICAgICAgICB9OworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisg
ICAgICAgICAgICBhZGRQb2ludGVycyhqaXRPcGVyYXRpb25MaXN0LT5tX3ZhbGlkYXRlZE9wZXJh
dGlvbnMsIG51bGxwdHIsIG51bGxwdHIsIG9wZXJhdGlvbnMsIG9wZXJhdGlvbnMgKyBXVEZfQVJS
QVlfTEVOR1RIKG9wZXJhdGlvbnMpKTsKKyN1bmRlZiBMTElOVF9SRVRVUk5fTE9DQVRJT04KKyAg
ICB9KTsKKyNlbmRpZgorfQorCisKIHZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2lu
dGVyc0luRW1iZWRkZXIoY29uc3QgdWludHB0cl90KiBiZWdpbkhvc3QsIGNvbnN0IHVpbnRwdHJf
dCogZW5kSG9zdCwgY29uc3QgdWludHB0cl90KiBiZWdpbk9wZXJhdGlvbnMsIGNvbnN0IHVpbnRw
dHJfdCogZW5kT3BlcmF0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oYmVnaW5Ib3N0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgK
aW5kZXggMDk4NDkzZjUwYjJhZDMzY2QxZDk3NTc0YTI4M2U5ZmY4Yjk2ODM2OS4uNWE0MGZmN2M4
Y2ZhZDZiNDIwMzc3M2JkMjRhZDU1N2I0Y2U0MjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmgKQEAgLTM5LDEyICszOSwxNSBA
QCBjbGFzcyBKSVRPcGVyYXRpb25MaXN0IHsKIAogICAgIHZvaWQqIGNvbnRhaW5zKHZvaWQqIHBv
aW50ZXIpIGNvbnN0CiAgICAgewotICAgICAgICBpZiBjb25zdGV4cHIoQVNTRVJUX0VOQUJMRUQp
Ci0gICAgICAgICAgICByZXR1cm4gbV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2Rl
UHRyVGFnKHBvaW50ZXIpKTsKKyNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQor
ICAgICAgICByZXR1cm4gbV92YWxpZGF0ZWRPcGVyYXRpb25zLmdldChyZW1vdmVDb2RlUHRyVGFn
KHBvaW50ZXIpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBwb2ludGVyOworI2VuZGlmCiAgICAg
fQogCiAgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKTsK
KyAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJzSW5KYXZhU2NyaXB0Q29yZUZvckxMSW50
KCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBvaW50ZXJz
SW5FbWJlZGRlcihjb25zdCB1aW50cHRyX3QqIGJlZ2luSG9zdCwgY29uc3QgdWludHB0cl90KiBl
bmRIb3N0LCBjb25zdCB1aW50cHRyX3QqIGJlZ2luT3BlcmF0aW9ucywgY29uc3QgdWludHB0cl90
KiBlbmRPcGVyYXRpb25zKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA0NWI0YjNiNDY5Njg1NTJkN2RhYzk3
ODhhZmY2Y2YwYjQzZGIyNmM2Li40YzlhOWViYTRiNjRmNDFjMTBlOTQ0ZGYyNDM4YTZmZGVhMTdi
YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaApAQCAtMzM5Miw2ICszMzkyLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuYnIodGFyZ2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAo
VHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0
LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICBt
X2Fzc2VtYmxlci5icihkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1
bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJl
c3MsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRF
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRF
LmgKaW5kZXggMzllYTE1MTE0NzYxYTAwZTAwMDUwMzEwMGJlNzZiZGU0NGEyZjhjNC4uZDE4N2Q2
OTMwZTZmZDlmNjY4Mzc5OGRhMzM5YzVhMTM2ZDAzNGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0RS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaApAQCAtMzIs
NiArMzIsOSBAQAogI2luY2x1ZGUgIkFSTTY0RUFzc2VtYmxlci5oIgogI2luY2x1ZGUgIkpTQ1B0
clRhZy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQVJNNjQuaCIKKyNpZiBFTkFCTEUoSklU
X0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNl
bmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTEwLDIwICsxMTMsMjggQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJBUk02NCB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBSZWdpc3RlcklEIEludmFsaWRHUFIgID0gc3RhdGljX2Nhc3Q8UmVnaXN0
ZXJJRD4oLTEpOwogCiAgICAgZW51bSBjbGFzcyBDYWxsU2lnbmF0dXJlVHlwZSB7Ci0gICAgICAg
IENGdW5jdGlvbkNhbGwsCi0gICAgICAgIE90aGVyQ2FsbAorICAgICAgICBKSVRDYWxsLAorICAg
ICAgICBOYXRpdmVDYWxsLAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEp1bXBTaWduYXR1cmVU
eXBlIHsKKyAgICAgICAgSklUSnVtcCwKKyAgICAgICAgTmF0aXZlSnVtcCwKICAgICB9OwogCiAg
ICAgdGVtcGxhdGU8Q2FsbFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENh
bGwgY2FsbFRydXN0ZWRQdHIoUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQogICAgIHsK
KyAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwogICAgICAgICBBU1NFUlQodGFnR1BSICE9IGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBBc3NlbWJsZXJMYWJlbCBwb2ludGVyTGFiZWwgPSBt
X2Fzc2VtYmxlci5sYWJlbCgpOwogICAgICAgICBtb3ZlV2l0aEZpeGVkV2lkdGgoVHJ1c3RlZElt
bVB0cihudWxscHRyKSwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
KTsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAgICAgICAgaWYgKHR5
cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5ibHJhYXooZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAg
ICAgICAgIEpTQ19KSVRfQ0FHRURfQ0FMTCh0eXBlLCBkYXRhVGVtcFJlZ2lzdGVyLCB0YWdHUFIp
OworI2VuZGlmCisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWIo
ZGF0YVRlbXBSZWdpc3RlciwgdGFnR1BSKTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgY2FsbExh
YmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwb2ludGVy
TGFiZWwsIEFSTTY0QXNzZW1ibGVyOjpnZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhjYWxsTGFi
ZWwsIHBvaW50ZXJMYWJlbCkgPT0gUkVQQVRDSF9PRkZTRVRfQ0FMTF9UT19QT0lOVEVSKTsKQEAg
LTEzMiw1MSArMTQzLDUzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1h
Y3JvQXNzZW1ibGVyQVJNNjQgewogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUHRyVGFn
IHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcpCi0gICAgICAgICAgICBy
ZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FsbCh0YWcpOwotICAgICAgICBpZiAodGFnID09
IENGdW5jdGlvblB0clRhZykKLSAgICAgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxs
U2lnbmF0dXJlVHlwZTo6Q0Z1bmN0aW9uQ2FsbD4oKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBD
RnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxl
clR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBtb3ZlKFRydXN0
ZWRJbW02NCh0YWcpLCBBUk02NFJlZ2lzdGVyczo6bHIpOwotICAgICAgICByZXR1cm4gY2FsbFRy
dXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4oQVJNNjRSZWdpc3RlcnM6Omxy
KTsKKyAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQp
CisgICAgICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJ
VENhbGw+KEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0
cjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4oQVJNNjRSZWdpc3RlcnM6OmxyKTsKICAg
ICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChSZWdpc3RlcklEIHRhZ0dQUikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBjYWxsVHJ1c3RlZFB0cjxDYWxsU2lnbmF0dXJlVHlwZTo6T3Ro
ZXJDYWxsPih0YWdHUFIpOworICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25h
dHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KHRhZ0dQUik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8Q2Fs
bFNpZ25hdHVyZVR5cGUgdHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbFJlZ2lzdGVy
KFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCiAg
ICAgeworICAgICAgICBVTlVTRURfUEFSQU0odHlwZSk7CiAgICAgICAgIEFTU0VSVCh0YWdHUFIg
IT0gdGFyZ2V0R1BSKTsKICAgICAgICAgaW52YWxpZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKLSAg
ICAgICAgaWYgKHR5cGUgPT0gQ2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGwpCi0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5ibHJhYXoodGFyZ2V0R1BSKTsKLSAgICAgICAgZWxzZQorICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQor
ICAgICAgICAgICAgSlNDX0pJVF9DQUdFRF9DQUxMKHR5cGUsIHRhcmdldEdQUiwgdGFnR1BSKTsK
KyNlbmRpZgorICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJscmFiKHRh
cmdldEdQUiwgdGFnR1BSKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwo
KSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVn
aXN0ZXJJRCB0YXJnZXRHUFIsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09
IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwo
dGFyZ2V0R1BSLCB0YWcpOwotICAgICAgICBpZiAodGFnID09IENGdW5jdGlvblB0clRhZykKLSAg
ICAgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlv
bkNhbGw+KHRhcmdldEdQUik7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFn
ICYmIHRhZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0g
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwg
QVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2ln
bmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0ZXJzOjpscik7Cisg
ICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6SklUKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6SklUQ2FsbD4o
dGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lz
dGVyPENhbGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIEFSTTY0UmVnaXN0
ZXJzOjpscik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJ
RCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNh
bGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6T3RoZXJDYWxsPih0YXJnZXRHUFIsIHRhZ0dQ
Uik7CisgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2
ZUNhbGw+KHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIENh
bGwgY2FsbChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAo
dGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6
OmNhbGwoYWRkcmVzcywgdGFnKTsKLQorICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0
clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcp
ID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwogICAgICAgICByZXR1cm4g
Y2FsbChkYXRhVGVtcFJlZ2lzdGVyLCB0YWcpOwogICAgIH0KQEAgLTE5Nyw5MCArMjEwLDEyOSBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0RSA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0
IHsKIAogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBqdW1wKCkgeyByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJBUk02NDo6anVtcCgpOyB9CiAKLSAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQs
IFB0clRhZyB0YWcpCisgICAgdGVtcGxhdGU8SnVtcFNpZ25hdHVyZVR5cGUgdHlwZT4KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgZmFySnVtcFJlZ2lzdGVyKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBS
ZWdpc3RlcklEIHRhZ0dQUiA9IEludmFsaWRHUFIpCisgICAgeworICAgICAgICBVTlVTRURfUEFS
QU0odHlwZSk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAg
aWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAg
ICAgICAgIEpTQ19KSVRfQ0FHRURfRkFSX0pVTVAodHlwZSwgdGFyZ2V0R1BSLCB0YWdHUFIpOwor
I2VuZGlmCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJn
ZXRHUFIsIHRhZ0dQUik7CisgICAgfQorCisgICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFy
Z2V0R1BSLCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykK
LSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKHRhcmdldCwg
dGFnKTsKKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5v
UHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJU
eXBlOjpKSVQpOwogCiAgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVy
c2l0eUdQUik7Ci0gICAgICAgIGZhckp1bXAodGFyZ2V0LCBkaXZlcnNpdHlHUFIpOworICAgICAg
ICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAg
ICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BS
LCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0
ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BS
KTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQsIFJlZ2lzdGVy
SUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRyVGFnIHRh
ZykKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0KTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuYnJhYih0YXJnZXQsIHRhZyk7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9u
UHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRh
ZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKKyAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRH
UFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAg
IFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURB
bmRJbnZhbGlkYXRlKCk7CisgICAgICAgIG1vdmUodGFyZ2V0LCB0YXJnZXRHUFIpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBpZiAoY2Fs
bGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1
bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNp
dHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNp
Z25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9
CiAKLSAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHZv
aWQgZmFySnVtcChSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIpCiAgICAg
ewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRkcmVzcywgdGFnKTsKKyAgICAgICAgQVNTRVJUKHRh
Z0dQUiAhPSB0YXJnZXRHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVy
ZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKKyAgICB9CiAKLSAgICAgICAgQVNT
RVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcpOworICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFk
ZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJn
ZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAg
ICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVy
SURBbmRJbnZhbGlkYXRlKCk7CisgICAgICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsK
ICAgICAgICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFy
Z2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25h
dHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lk
IGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1
bXAoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnR1BSKQogICAgIHsKICAgICAgICAg
UmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZh
bGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgQVNT
RVJUKHRhZ0dQUiAhPSB0YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQoYWRkcmVzcywgdGFyZ2V0
R1BSKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYnJhYih0YXJnZXRHUFIsIHRhZyk7CisgICAgICAg
IGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCB0
YWdHUFIpOwogICAgIH0KIAotICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRkcmVzcywgUHRy
VGFnIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lz
dGVySUQgdGFnR1BSKQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7
CisgICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGFyZ2V0R1BSKTsK
KyAgICAgICAgbG9hZDY0KEFkZHJlc3ModGFyZ2V0R1BSKSwgdGFyZ2V0R1BSKTsKKyAgICAgICAg
ZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRh
Z0dQUik7CisgICAgfQogCi0gICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsK
KyAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsK
KyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQp
OwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0
ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBn
ZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgbG9h
ZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyks
IGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZl
cnNpdHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6
SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdl
dEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4
IGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQorICAgIHZvaWQgZmFySnVtcChCYXNlSW5kZXggYWRk
cmVzcywgUHRyVGFnIHRhZykKICAgICB7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9u
UHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRh
ZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRH
UFIgPSBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAg
IEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBkaXZlcnNpdHlH
UFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAg
ICAgbG9hZDY0KGFkZHJlc3MsIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIo
dGFyZ2V0R1BSLCB0YWcpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNp
dHlHUFIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklU
SnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUp1bXA+KHRhcmdldEdQ
UiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRy
ZXNzIGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRy
VGFnKQotICAgICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmZhckp1bXAoYWRk
cmVzcywgdGFnKTsKLQorICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRhZyAmJiB0
YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0YWcpID09IFB0clRh
Z0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBSZWdpc3RlcklE
IGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0
ZSgpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQ
Uik7CiAgICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTY0KHRhZyksIGRpdmVyc2l0eUdQUik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOwotICAgIH0KLQotICAgIHZvaWQg
ZmFySnVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCi0gICAgewot
ICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKTsKLSAgICAgICAgQVNTRVJUKHRhZyAhPSB0YXJnZXRHUFIpOwotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdldEdQUik7Ci0gICAg
ICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcp
ID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCkKKyAgICAgICAgICAgIGZhckp1bXBSZWdpc3RlcjxK
dW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0R1BSLCBkaXZlcnNpdHlHUFIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6
Ok5hdGl2ZUp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmV0KCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7
CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCisgICAgICAgICAgICBKU0NfSklUX0NBR0VEX1JFVCgpOworI2VuZGlmCisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9hc3NlbWJsZXIucmV0YWIoKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCmluZGV4IDBjNzU5N2JhZjY0MjY2NDk5NjM0YTU5ODAxN2JmYjY0YzMxNmE1NjQuLjJjOWI4
ZmY4MDk1MTZlYjA3NzQ0YmRmZjgyNjc3YTBjNmM0ZmRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xNzE5
LDYgKzE3MTksMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk12NyA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci5ieCh0YXJn
ZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRy
VGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBtX2Fzc2VtYmxlci5ieChkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICAvLyBB
ZGRyZXNzIGlzIGEgbWVtb3J5IGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgdG8ganVt
cCB0bwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaAppbmRleCBlNjNhYjQ3NTVmZjhhMWIwNjk3Y2NkNzNiNjIyMDIyZDZlYzAxOTYzLi5hZGFk
NTRjYjAyNjE3ZDExOTcxYmIyNDVlMGEwM2Y0ZDhkYWRmYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTIwMDQs
NiArMjAwNCwxMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlck1JUFMgOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgfQogCisgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisg
ICAgeworICAgICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBt
X2Fzc2VtYmxlci5qcihNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
cCgpOworICAgIH0KKwogICAgIHZvaWQgZmFySnVtcChBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykK
ICAgICB7CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5k
ZXggMjhmYWUyZTcyZjI1NjU3ZTYxMzMwNWYyMDAzZGZjYmVhNWVlY2E5YS4uNzZkZGI1NzY5NGRh
MjRmNGFlODA1YjA0OTNiNDJhOGU2NDJmMzA3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMjc1
MCw2ICsyNzUwLDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmpt
cF9yKHRhcmdldCk7CiAgICAgfQogCisgICAgdm9pZCBmYXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFy
Z2V0LCBQdHJUYWcpCisgICAgeworICAgICAgICBtb3ZlKHRhcmdldCwgc2NyYXRjaFJlZ2lzdGVy
KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5qbXBfcihzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
fQorCiAgICAgLy8gQWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBh
ZGRyZXNzIHRvIGp1bXAgdG8KICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJU
YWcpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMmZlZDE4MmU0NTdmNzQ2NjI2NWY2NWIxNGM1OTQzMWYyM2U4NGFkMS4uMDU3
YjMwNzhjMmI3ZTg2OTM5MzJiOTA1ZjE5NGQzZjc3YjQ2NDE4YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xNDAzLDYgKzE0MDMsNyBA
QAogb3AgOmxsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCiBvcCA6
Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lCiBvcCA6Y2hl
Y2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lCitvcCA6bm9ybWFsX29zcl9leGl0X3RyYW1wb2xp
bmUKIG9wIDpmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50CiBvcCA6bGxpbnRfZ2V0
X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUKIG9wIDpsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0
aW9uCkBAIC0xNDE5LDYgKzE0MjAsNDAgQEAKIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBv
cCA6d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMKIAorb3AgOm9wX2NhbGxfc2xvd19yZXR1
cm5fbG9jYXRpb24KK29wIDpvcF9jb25zdHJ1Y3Rfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpv
cF9pdGVyYXRvcl9vcGVuX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3JfbmV4
dF9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX3RhaWxfY2FsbF9yZXR1cm5fbG9jYXRpb24K
K29wIDpvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxf
dmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2NhbGxfZXZhbF9zbG93X3JldHVy
bl9sb2NhdGlvbgorCitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsCitvcCA6anNfdHJhbXBvbGlu
ZV9vcF90YWlsX2NhbGwKK29wIDpqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdAorb3AgOmpzX3Ry
YW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dAorb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jf
b3Blbgorb3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9v
cF90YWlsX2NhbGxfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29w
IDpqc190cmFtcG9saW5lX29wX2NhbGxfdmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9v
cF90YWlsX2NhbGxfdmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHNfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Zh
cmFyZ3Nfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbF9ldmFsX3Nsb3cKK29wIDpqc190
cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHRfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfaXRl
cmF0b3Jfb3Blbl9zbG93CitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVja191bnRhZworb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2tfdGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnCitvcCA6anNfdHJhbXBvbGluZV9sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZworb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGwKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscworb3AgOndh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3QKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX2luZGlyZWN0X25vX3RscworCiBlbmRfc2VjdGlvbiA6TmF0aXZlSGVscGVycwogCiBi
ZWdpbl9zZWN0aW9uIDpXYXNtLApAQCAtMTQzMyw2ICsxNDY4LDExIEBACiAKIG9wIDp0aHJvd19m
cm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lCiAKK29wIDpjYWxsX3JldHVybl9sb2NhdGlvbgorb3Ag
OmNhbGxfbm9fdGxzX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCisKICMgRklY
TUU6IFdhc20gYW5kIEpTIExMSW50IHNob3VsZCBzaGFyZSBjb21tb24gb3Bjb2RlcwogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNjU2CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTUwM2JmMDM4NDdh
NjQ4NTMzOTExMjc3NjhkNzAyNTBlODlhNTM4Li5iMDYxNTBmY2NmNGM3ZGRhNWU1MWNjNWZhZDYz
Y2QzMTFkMTgyMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwCkBAIC0zMjAsNiArMzIwLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAg
ICBjYXNlIGxsaW50X2hhbmRsZV91bmNhdWdodF9leGNlcHRpb246CiAgICAgY2FzZSBjaGVja3Bv
aW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1wb2xpbmU6CiAgICAgY2FzZSBjaGVj
a3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmU6CisgICAgY2FzZSBub3JtYWxfb3NyX2V4aXRfdHJh
bXBvbGluZToKICAgICBjYXNlIGZ1enplcl9yZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQ6CiAg
ICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNlIG9wX2l0
ZXJhdG9yX25leHRfcmV0dXJuX2xvY2F0aW9uOgpAQCAtMzMxLDggKzMzMiw0MCBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSQogICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246
CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfcmV0dXJuX2xvY2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbF9yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF9jYWxsX3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uOgorICAgIGNhc2Ugb3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAg
IGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9zbG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9w
X2l0ZXJhdG9yX25leHRfc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAgY2FzZSBvcF90YWlsX2Nh
bGxfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xv
Y2F0aW9uOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0
dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5f
bG9jYXRpb246CisgICAgY2FzZSBvcF9jYWxsX2V2YWxfc2xvd19yZXR1cm5fbG9jYXRpb246CiAg
ICAgY2FzZSB3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9w
cm9sb2d1ZV9ub190bHM6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGw6CisgICAgY2Fz
ZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3Bf
Y29uc3RydWN0OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0OgorICAg
IGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuOgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF9jYWxsX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX3RhaWxfY2FsbF9z
bG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3Rfc2xvdzoKKyAgICBjYXNl
IGpzX3RyYW1wb2xpbmVfb3BfY2FsbF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGlu
ZV9vcF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9j
YWxsX2V2YWxfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4dF9z
bG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9vcGVuX3Nsb3c6CisgICAg
Y2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3Vu
dGFnOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVja190YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2tfdW50YWc6CisgICAgY2FzZSBqc190cmFtcG9saW5lX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2Ugd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbDoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
bm9fdGxzOgorICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKKyAg
ICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgogICAgICAg
ICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKaW5kZXggZGQ2NjZmYWE4M2U4MzUwOWU2NWIwNzU1NzYyMmYwOGE5NDk0MjFi
ZC4uOWQyMWI1YjE2NGVmYmE0YzJlYjMxMmJhNTBiM2Q2ZjNjN2M2NTcwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cApAQCAtMTM4LDIxICsxMzgsMjEgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiB2bSwgQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgIGRvbmVBZGp1c3Rp
bmcubGluaygmaml0KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5
dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElubGluZUNhbGxGcmFtZTo6S2luZCB0cnVl
Q2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpCitzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFzZWxp
bmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgsIElu
bGluZUNhbGxGcmFtZTo6S2luZCB0cnVlQ2FsbGVyQ2FsbEtpbmQsIGJvb2wmIGNhbGxlcklzTExJ
bnQpCiB7CiAgICAgY2FsbGVySXNMTEludCA9IE9wdGlvbnM6OmZvcmNlT1NSRXhpdFRvTExJbnQo
KSB8fCBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+aml0VHlwZSgpID09IEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bms7CiAKICAgICBpZiAoY2FsbEJ5dGVjb2RlSW5kZXguY2hlY2twb2ludCgp
KSB7CiAgICAgICAgIGlmICghY2FsbGVySXNMTEludCkKICAgICAgICAgICAgIGJhc2VsaW5lQ29k
ZUJsb2NrRm9yQ2FsbGVyLT5tX2hhc0xpbmtlZE9TUkV4aXQgPSB0cnVlOwotICAgICAgICByZXR1
cm4gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF9m
cm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lKTsKKyAgICAgICAgcmV0dXJuIExMSW50OjpjaGVj
a3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAg
ICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4ganVtcFRhcmdl
dDsKIAogICAgIGNvbnN0IEluc3RydWN0aW9uJiBjYWxsSW5zdHJ1Y3Rpb24gPSAqYmFzZWxpbmVD
b2RlQmxvY2tGb3JDYWxsZXItPmluc3RydWN0aW9ucygpLmF0KGNhbGxCeXRlY29kZUluZGV4KS5w
dHIoKTsKICAgICBpZiAoY2FsbGVySXNMTEludCkgewotI2RlZmluZSBMTElOVF9SRVRVUk5fTE9D
QVRJT04obmFtZSkgKGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUxNigpID8gTExJbnQ6OmdldFdpZGUx
NkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiAoY2FsbElu
c3RydWN0aW9uLmlzV2lkZTMyKCkgPyBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSA6IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSkKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xP
Q0FUSU9OKG5hbWUpIExMSW50OjpyZXR1cm5Mb2NhdGlvblRodW5rKG5hbWUjI19yZXR1cm5fbG9j
YXRpb24sIGNhbGxJbnN0cnVjdGlvbi53aWR0aCgpKS5jb2RlKCkKIAogICAgICAgICBzd2l0Y2gg
KHRydWVDYWxsZXJDYWxsS2luZCkgewogICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2Fs
bDogewpAQCAtNDA0LDkgKzQwNCw5IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2
bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gKmNvZGVCbG9ja0ZvckV4aXQt
Pmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLnB0cigpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CiAgICAgICAgIGlmIChi
eXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJ
bnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9s
aW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JFeGl0
VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIAotICAgICAgICAgICAgZGVz
dGluYXRpb24gPSBMTEludDo6Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjdXJyZW50SW5zdHJ1
Y3Rpb24pOworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6bm9ybWFsT1NSRXhpdFRy
YW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKIAogICAgICAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhh
bmRsZXIoKSkgewogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKCZjdXJyZW50SW5zdHJ1Y3Rpb24pLCBHUFJJbmZvOjpyZWdUMik7CkBAIC00MjMsNyArNDIz
LDcgQEAgdm9pZCBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgIEJ5dGVjb2RlSW5kZXggZXhpdElu
ZGV4ID0gZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gZGVzdGluYXRpb247CiAgICAgICAgIGlmIChl
eGl0SW5kZXguY2hlY2twb2ludCgpKQotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6
Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUp
OworICAgICAgICAgICAgZGVzdGluYXRpb24gPSBMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFt
cG9saW5lVGh1bmsoKS5jb2RlKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
KGNvZGVCbG9ja0ZvckV4aXQtPmJ5dGVjb2RlSW5kZXhGb3JFeGl0KGV4aXRJbmRleCkgPT0gZXhp
dEluZGV4KTsKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gY29kZUJsb2NrRm9yRXhpdC0+aml0
Q29kZU1hcCgpLmZpbmQoZXhpdEluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oCmluZGV4IDM5MTE0ZWE2NzcwMDJhOTgy
ZjJlYjgxZTdkMjhmODZmMjI4ZjZkMGQuLmRiYTBmZTMyMmJmODgxYzk1YzIyZGI4NTA2MTYyNDIw
NGE2YWFjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaApAQCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiB2b2lkIGhhbmRsZUV4aXRDb3VudHMoVk0mLCBDQ2FsbEhlbHBlcnMmLCBj
b25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVs
cGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7CiB2b2lkIGFkanVzdEFuZEp1bXBUb1RhcmdldChW
TSYsIENDYWxsSGVscGVycyYsIGNvbnN0IE9TUkV4aXRCYXNlJik7Ci1NYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8SlNFbnRyeVB0clRhZz4gY2FsbGVyUmV0dXJuUEMoQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9ja0ZvckNhbGxlciwgQnl0ZWNvZGVJbmRleCBjYWxsQnl0ZWNvZGVJbmRleCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kIGNhbGxlcktpbmQsIGJvb2wmIGNhbGxlcklzTExJbnQpOwogQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGNhbGxlZVNhdmVTbG90KElubGluZUNhbGxGcmFtZSosIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2ssIEdQUlJlZyBjYWxsZWVTYXZlKTsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEpJVENvZGVUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAKaW5kZXggZmY5YThhZmQwNTk0NWMyOWI5NzhjMWZmM2NmOTdh
MjIyYmI0YjkyMS4uOWJlNjRiYmRmMGYyOGZkNTc0YTQyNTg4NGNkNTM0MWRmMWE2NjRhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CkBAIC00OCw2ICs0OCwxOCBAQAogI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgogI2luY2x1ZGUgPG1h
Y2gvbWFjaF90aW1lLmg+CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL0pJVENhZ2VBZGRpdGlvbnMuaD4KKyNlbHNlIC8vIEVOQUJMRShKSVRfQ0FHRSkK
KyNpZiBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgTUFQX0pJVAor
I2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgTUFQX0pJVAorI2Vs
c2UgLy8gT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUIDAKKyNkZWZp
bmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIDAKKyNlbmRpZiAvLyBPUyhE
QVJXSU4pCisjZW5kaWYgLy8gRU5BQkxFKEpJVF9DQUdFKQorCiBleHRlcm4gIkMiIHsKICAgICAv
KiBSb3V0aW5lIG1hY2hfdm1fcmVtYXAgKi8KICNpZmRlZiBtaWdfZXh0ZXJuYWwKQEAgLTEzOSw4
ICsxNTEsOCBAQCB2b2lkIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQoYm9vbCBl
bmFibGVkKQogCiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZSA9IDE7CiAgICAgICAgIGNv
bnN0ZXhwciBpbnQgcHJvdGVjdGlvbiA9IFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VY
RUM7Ci0gICAgICAgIGNvbnN0ZXhwciBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9O
IHwgTUFQX0pJVDsKICAgICAgICAgY29uc3RleHByIGludCBmZCA9IE9TQWxsb2NhdG9yOjpKU0pJ
VENvZGVQYWdlczsKKyAgICAgICAgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiB8
IChPcHRpb25zOjp1c2VKSVRDYWdlKCkgPyBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklU
X0NBR0UgOiBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUKTsKICAgICAgICAgdm9pZCogYWxsb2NhdGlv
biA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgcHJvdGVjdGlvbiwgZmxhZ3MsIGZkLCAwKTsKICAgICAg
ICAgY29uc3Qgdm9pZCogZXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRpb25GYWlsdXJlID0gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oLTEpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NB
R0UoYWxsb2NhdGlvbiAmJiBhbGxvY2F0aW9uICE9IGV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9u
RmFpbHVyZSwgIldlIHNob3VsZCBub3QgaGF2ZSBhbGxvY2F0ZWQgZXhlY3V0YWJsZSBtZW1vcnkg
YmVmb3JlIGRpc2FibGluZyB0aGUgSklULiIpOwpAQCAtMzI0LDkgKzMzNiw5IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIEpJVFJlc2VydmF0aW9uIGluaXRpYWxpemVKSVRQYWdlUmVzZXJ2YXRpb24o
KQogICAgICAgICAvLyBUaGlzIG1ha2VzIHRoZSBmb2xsb3dpbmcgSklUIGNvZGUgbG9nZ2luZyBi
cm9rZW4gYW5kIHNvbWUgb2YgSklUIGNvZGUgaXMgbm90IHJlY29yZGVkIGNvcnJlY3RseS4KICAg
ICAgICAgLy8gVG8gYXZvaWQgdGhpcyBwcm9ibGVtLCB3ZSB1c2UgY29tbWl0dGVkIHJlc2VydmF0
aW9uIGlmIHdlIG5lZWQgcGVyZiBKSVREdW1wIGxvZ2dpbmcuCiAgICAgICAgIGlmIChPcHRpb25z
Ojpsb2dKSVRDb2RlRm9yUGVyZigpKQotICAgICAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlv
bjo6cmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxv
Y2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUpOwor
ICAgICAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZUFuZENvbW1pdFdpdGhH
dWFyZFBhZ2VzKHJlc2VydmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBF
WEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUsIHRydWUsIGZhbHNlKTsKICNlbmRpZgotICAgICAgICBy
ZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlV2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25T
aXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJM
RSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRoR3Vh
cmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhF
Q1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBPcHRpb25zOjp1c2VKSVRDYWdlKCkpOwogICAg
IH07CiAKICAgICByZXNlcnZhdGlvbi5wYWdlUmVzZXJ2YXRpb24gPSB0cnlDcmVhdGVQYWdlUmVz
ZXJ2YXRpb24ocmVzZXJ2YXRpb24uc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
CmluZGV4IDc0ZGFlMjI2ZjU0NWI3YWFhZjM0Nzg3NDQzMzY0MjcwMDE1YmQwYTQuLjhmNDViMzc3
YzE2OTZhNTE2YTg0MzAwYjg5MjFmNmFkZDZhM2Q0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oCkBAIC00NjUsNiArNDY1LDEwIEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVy
czo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjAgPSBYODZSZWdpc3RlcnM6OnIxMDsg
Ly8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
bm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIxID0gWDg2UmVnaXN0ZXJzOjplYXg7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gWDg2UmVnaXN0ZXJzOjplYXg7
CisjaWYgIU9TKFdJTkRPV1MpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0
Y2hHUFIxID0gWDg2UmVnaXN0ZXJzOjpyMTA7CisjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBJIGJl
bGlldmUgdGhhdCBhbGwgdXNlcyBvZiB0aGlzIGFyZSBkZWFkIGluIHRoZSBzZW5zZSB0aGF0IGl0
IGp1c3QgY2F1c2VzIHRoZSBzY3JhdGNoCiAgICAgLy8gcmVnaXN0ZXIgYWxsb2NhdG9yIHRvIHNl
bGVjdCBhIGRpZmZlcmVudCByZWdpc3RlciBhbmQgcG90ZW50aWFsbHkgc3BpbGwgdGhpbmdzLiBJ
dCB3b3VsZCBiZSBiZXR0ZXIKQEAgLTYzNCw3ICs2MzgsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBBUk02NFJlZ2lzdGVyczo6eDIyOyAv
LyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0g
QVJNNjRSZWdpc3RlcnM6OngyMzsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTNSA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRM
IG9ubHkKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVy
czo6eDI1OyAvLyBVc2VkIGJ5IEZUTCBvbmx5CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1M2ID0gQVJNNjRSZWdpc3RlcnM6OngyNTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzcgPSBBUk02NFJlZ2lzdGVyczo6eDI2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8vIG51bWJlclRhZwogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7IC8vIG5vdENl
bGxNYXNrCkBAIC02NTQsNiArNjU4LDggQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gQVJNNjRSZWdpc3Rl
cnM6Ong4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3Vt
ZW50R1BSMSA9IEFSTTY0UmVnaXN0ZXJzOjp4OTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OmlwMDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyB3YXNtU2NyYXRjaEdQUjAgPSBBUk02NFJlZ2lzdGVyczo6
eDk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIxID0gQVJNNjRS
ZWdpc3RlcnM6OngxMDsKIAogICAgIC8vIEdQUlJlZyBtYXBwaW5nIGlzIGRpcmVjdCwgdGhlIG1h
Y2hpbmUgcmVnaXN0ZXIgbnVtYmVycyBjYW4KICAgICAvLyBiZSB1c2VkIGRpcmVjdGx5IGFzIGlu
ZGljZXMgaW50byB0aGUgR1BSIFJlZ2lzdGVyQmFuay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggMThl
NWZmZWU5Y2EzOTNiNmU5ZmNjMTQ4MGUwNzI3NTBjNDUyOGZkNS4uYzQ1MzQ2ZTkwNGE5ZDEzN2Q3
OTZkZjFmNTFjNjhkOTdmNDBlYjgyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgUG9seW1vcnBoaWNDYWxsTm9kZTo6flBvbHltb3JwaGljQ2FsbE5vZGUoKQogdm9pZCBQb2x5
bW9ycGhpY0NhbGxOb2RlOjp1bmxpbmsoVk0mIHZtKQogewogICAgIGlmIChtX2NhbGxMaW5rSW5m
bykgewotICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVu
bGlua2luZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJu
TG9jYXRpb24oKSwgIiwgIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSk7CisgICAgICAg
IGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpLCAiVW5saW5raW5nIHBvbHlt
b3JwaGljIGNhbGwgYXQgIiwgbV9jYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLCAi
LCBiYyMiLCBtX2NhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgoKSk7CiAg
ICAgICAgIG1fY2FsbExpbmtJbmZvLT51bmxpbmsodm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDcxZGQ5ODAyOGY0N2U5
OTdlNTI1MzAwYjdjMGQ2YWFiOWNiZjJhODMuLjM2MjcyNTUxNGMxMGM4YTkyMmQ1ZjAzMjA1ZmM5
MzIzZDBlNTdiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKQEAgLTQ0LDEzICs0NCwxNSBAQCBpbmxpbmUgdm9pZCBlbWl0UG9pbnRlclZhbGlk
YXRpb24oQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdUeXBlCiB7CiAg
ICAgaWYgKCFBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgcmV0dXJuOwotICAgIENDYWxsSGVscGVy
czo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblpl
cm8sIHBvaW50ZXJHUFIpOwotICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRl
cik7Ci0gICAgaXNOb25aZXJvLmxpbmsoJmppdCk7Ci0gICAgaml0LnB1c2hUb1NhdmUocG9pbnRl
ckdQUik7Ci0gICAgaml0LnVudGFnUHRyKHRhZywgcG9pbnRlckdQUik7Ci0gICAgaml0LmxvYWQ4
KHBvaW50ZXJHUFIsIHBvaW50ZXJHUFIpOwotICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQ
Uik7CisgICAgaWYgKCFPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpKdW1wIGlzTm9uWmVybyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9u
WmVybywgcG9pbnRlckdQUik7CisgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlk
UG9pbnRlcik7CisgICAgICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOworICAgICAgICBqaXQucHVz
aFRvU2F2ZShwb2ludGVyR1BSKTsKKyAgICAgICAgaml0LnVudGFnUHRyKHRhZywgcG9pbnRlckdQ
Uik7CisgICAgICAgIGppdC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKKyAgICAgICAg
aml0LnBvcFRvUmVzdG9yZShwb2ludGVyR1BSKTsKKyAgICB9CiB9CiAKIC8vIFdlIHdpbGwganVt
cCBoZXJlIGlmIHRoZSBKSVQgY29kZSB0cmllcyB0byBtYWtlIGEgY2FsbCwgYnV0IHRoZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRleCBiZmE0ZjNiYzhlZTJi
ODlmNDFiOWNiOTg2MGY2ZjNiM2NjODFlNTIzLi5iMDUxZDdiODM2YzFkYTZkOGNmMDQxNTgzMTg3
YzA5YjRiM2RjNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cApAQCAtMzAsMTIgKzMwLDEzIEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
SlNDQ29uZmlnLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogCiAjZGVmaW5lIFNUQVRJQ19BU1NFUlQoY29uZCkg
c3RhdGljX2Fzc2VydChjb25kLCAiTExJbnQgYXNzdW1lcyAiICNjb25kKQogCi0KIG5hbWVzcGFj
ZSBKU0MgewogCiBuYW1lc3BhY2UgTExJbnQgewpAQCAtNDksMTIgKzUwLDIyIEBAIGV4dGVybiAi
QyIgdm9pZCB3YXNtX2VudHJ5KHZvaWQqLCB2b2lkKiwgdm9pZCopOwogCiAjZW5kaWYgLy8gIUVO
QUJMRShDX0xPT1ApCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMiIHZvaWQgdm1F
bnRyeVRvSmF2YVNjcmlwdFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdm1FbnRy
eVRvTmF0aXZlVHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpTRW50
cnlUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIHRhaWxDYWxsSlNFbnRyeVNsb3dQ
YXRoVHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBleGNlcHRpb25IYW5kbGVyVHJh
bXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCByZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5l
KHZvaWQpOworI2VuZGlmCisKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7CiAjaWYgRU5BQkxFKENfTE9P
UCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCiAjZWxzZSAvLyAhRU5BQkxFKENfTE9PUCkK
KwogICAgIGxsaW50X2VudHJ5KCZnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXAsICZnX2pzY0Nv
bmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTYsICZnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBX
aWRlMzIpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtNzIsNiArODMsMTMyIEBAIHZv
aWQgaW5pdGlhbGl6ZSgpCiAgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmV4Y2VwdGlvbkluc3Ry
dWN0aW9uc1tpXSA9IGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAg
ICAgIGdfanNjQ29uZmlnLmxsaW50Lndhc21FeGNlcHRpb25JbnN0cnVjdGlvbnNbaV0gPSB3YXNt
X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU7CiAgICAgfQorCisgICAgSklUT3BlcmF0
aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmVGb3JMTEludCgpOworCisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCisgICAg
ICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6
OmppdENhZ2VQdHIpXSA9IGppdENhZ2VQdHJUaHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpOworCisjZGVmaW5lIElOSVRJQUxJWkVfSlNfR0FURShuYW1lLCB0YWcpIFwKKyAgICBkbyB7
IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjg7IFwKKyAgICAgICAgc3RhdGljIExh
enlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPj4gY29kZVJlZjE2OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYzMjsgXAor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsgXAorICAgICAgICAgICAgY29kZVJlZjgu
Y29uc3RydWN0KGNyZWF0ZUpTR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9u
UHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0
aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUpKTsgXAorICAg
ICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQ
dHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lk
ZTE2Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlv
bikpLCB0YWcsICNuYW1lICJfd2lkZTE2IikpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29u
c3RydWN0KGNyZWF0ZUpTR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRy
VGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8Q0Z1
bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRl
MzIiKSk7IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgY29kZVJlZjguY29uc3Ry
dWN0KExMSW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGlu
ZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0
V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1l
KSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoTExJbnQ6OmdldFdpZGUzMkNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5lXyMjbmFtZSkpOyBcCisg
ICAgICAgIH0gXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihHYXRlOjpuYW1lKV0gPSBjb2RlUmVmOC5nZXQoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lkZTE2KV0gPSBjb2RlUmVmMTYuZ2V0KCkuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0
ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUzMildID0gY29kZVJl
ZjMyLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgfSB3aGlsZSAoMCk7
CisKKyAgICBKU0NfSlNfR0FURV9PUENPREVTKElOSVRJQUxJWkVfSlNfR0FURSkKKworI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKKworI2RlZmluZSBJTklUSUFMSVpFX1dBU01fR0FURShuYW1lLCB0
YWcpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjg7IFwKKyAg
ICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0
aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjE2OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+
IGNvZGVSZWYzMjsgXAorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsgXAorICAgICAg
ICAgICAgY29kZVJlZjguY29uc3RydWN0KGNyZWF0ZVdhc21HYXRlVGh1bmsocmV0YWdDb2RlUHRy
PHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6OmdldENvZGVG
dW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFn
LCAjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMTYuY29uc3RydWN0KGNyZWF0ZVdhc21H
YXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0
clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5h
bWUjI19yZXR1cm5fbG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAg
ICAgICAgY29kZVJlZjMyLmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRl
MzJDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSksIHRhZywgI25hbWUgIl93aWRlMzIiKSk7IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAg
ICAgICAgY29kZVJlZjguY29uc3RydWN0KExMSW50OjpnZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4od2FzbV90cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVm
MTYuY29uc3RydWN0KExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4od2FzbV90cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29u
c3RydWN0KExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4od2Fz
bV90cmFtcG9saW5lXyMjbmFtZSkpOyBcCisgICAgICAgIH0gXAorICAgICAgICBnX2pzY0NvbmZp
Zy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lKV0gPSBjb2Rl
UmVmOC5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgICAgICBnX2pzY0Nv
bmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNfd2lk
ZTE2KV0gPSBjb2RlUmVmMTYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6bmFtZSMjX3dpZGUzMildID0gY29kZVJlZjMyLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOyBcCisgICAgfSB3aGlsZSAoMCk7CisKKyAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMo
SU5JVElBTElaRV9XQVNNX0dBVEUpCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisK
KyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRp
b25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZUpTR2F0
ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJU
YWc+KCZ2bUVudHJ5VG9KYXZhU2NyaXB0R2F0ZUFmdGVyKSwgSlNFbnRyeVB0clRhZywgInZtRW50
cnlUb0phdmFTY3JpcHQiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29u
c3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCos
IENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNj
cmlwdFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp2bUVudHJ5VG9KYXZhU2NyaXB0KV0gPSBjb2RlUmVm
LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICB7CisgICAgICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRv
SklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkK
KyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZUpTR2F0ZVRodW5rKHJldGFnQ29k
ZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KHZtRW50cnlUb05h
dGl2ZUdhdGVBZnRlciksIEhvc3RGdW5jdGlvblB0clRhZywgInZtRW50cnlUb05hdGl2ZSIpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJv
bUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+KCZ2bUVudHJ5VG9OYXRpdmVUcmFtcG9saW5lKSkpKTsKKyAg
ICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0
ZTo6dm1FbnRyeVRvTmF0aXZlKV0gPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOworICAgIH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7Cisg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGNyZWF0ZVRhaWxDYWxsR2F0ZShKU0VudHJ5UHRyVGFnKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnPigmdGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmln
LmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OnRhaWxDYWxsSlNFbnRy
eVB0clRhZyldPSBjb2RlUmVmLmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAg
IH0KKyAgICB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIGlmIChP
cHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGNyZWF0ZVRh
aWxDYWxsR2F0ZShKU0VudHJ5U2xvd1BhdGhQdHJUYWcpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJl
dGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWc+
KCZ0YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0Nv
bmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWlsQ2FsbEpT
RW50cnlTbG93UGF0aFB0clRhZyldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0
YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4o
JmV4Y2VwdGlvbkhhbmRsZXJUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxp
bnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6ZXhjZXB0aW9uSGFuZGxlcild
ID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAg
eworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6
dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChyZXR1cm5Gcm9tTExJbnRH
YXRlVGh1bmsoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmcmV0dXJuRnJvbUxMSW50VHJhbXBv
bGluZSkpKSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6OnJldHVybkZyb21MTEludCldID0gY29kZVJlZi5nZXQoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkp
IHsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oR2F0ZTo6bG9vcE9TUkVudHJ5KV0gPSBsb29wT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6ZW50cnlPU1JFbnRyeSldID0gZW50cnlPU1JFbnRy
eUdhdGVUaHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBnX2pzY0Nv
bmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp3YXNtT1NSRW50
cnkpXSA9IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgIH0KKworI2RlZmluZSBJTklUSUFMSVpFX1RBR19BTkRfVU5UQUdfVEhVTktTKG5hbWUp
IFwKKyAgICBkbyB7IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdGFnQ29kZVJlZjsgXAorICAg
ICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+PiB1bnRhZ0NvZGVSZWY7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUpJVCgpKSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KHRhZ0dhdGVU
aHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFn
PihuYW1lIyNUYWdHYXRlQWZ0ZXIpKSk7IFwKKyAgICAgICAgICAgIHVudGFnQ29kZVJlZi5jb25z
dHJ1Y3QodW50YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcs
IE9wZXJhdGlvblB0clRhZz4obmFtZSMjVW50YWdHYXRlQWZ0ZXIpKSk7IFwKKyAgICAgICAgfSBl
bHNlIHsgXAorICAgICAgICAgICAgdGFnQ29kZVJlZi5jb25zdHJ1Y3QoTExJbnQ6OmdldENvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5lXyMjbmFtZSMjX3RhZykpOyBc
CisgICAgICAgICAgICB1bnRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50OjpnZXRDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUjI191bnRhZykpOyBcCisg
ICAgICAgIH0gXAorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihHYXRlOjpuYW1lIyNUYWcpXSA9IHRhZ0NvZGVSZWYuZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVW50YWcpXSA9IHVudGFnQ29kZVJlZi5n
ZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisg
ICAgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RIVU5LUyhsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjayk7CisgICAgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RIVU5LUyhsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKKyNlbmRpZiAvLyBFTkFCTEUo
SklUX0NBR0UpCiAjZW5kaWYgLy8gRU5BQkxFKENfTE9PUCkKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5oCmluZGV4IGNiNDQ1ZjVlOTJjZTUyNjRlMjczNjU5Y2QwODcw
NTQ2M2UzZGMwN2QuLjA1YzAyMWExODgyMGY1OTMxNzllNDU2YjBkZjRlMzFmZWEyODE5MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTIwNCw2ICsyMDQsOTMg
QEAgQUxXQVlTX0lOTElORSBMTEludENvZGUgZ2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyKE9wY29k
ZUlEIG9wY29kZUlEKQogI2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKK2lu
bGluZSBPcGNvZGUgZ2V0T3Bjb2RlKFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19PUENPREVTKQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVN
YXBbbnVtT3Bjb2RlSURzICsgaWRdOworI2Vsc2UKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bj
b2RlPihpZCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNvZGVXaWRlMTYoV2Fz
bU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCisgICAg
cmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUxNltudW1PcGNvZGVJRHMgKyBp
ZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZVdpZGUzMihX
YXNtT3Bjb2RlSUQgaWQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAg
ICByZXR1cm4gZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTMyW251bU9wY29kZUlEcyAr
IGlkXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlkKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldENvZGVQdHIoV2FzbU9wY29kZUlE
IG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PihnZXRPcGNvZGUob3Bjb2RlSUQpKTsKKyAgICBhZGRyZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVj
b2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGFkZHJlc3MpOworfQorCit0ZW1w
bGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFn
PiBnZXRXaWRlMTZDb2RlUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0T3Bjb2RlV2lkZTE2KG9wY29kZUlE
KSk7CisgICAgYWRkcmVzcyA9IHJldGFnQ29kZVB0cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRy
ZXNzKTsKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPHRhZz4gZ2V0V2lkZTMyQ29kZVB0cihX
YXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgdm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUzMihvcGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSBy
ZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcsIHRhZz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRk
cmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29k
ZSBnZXRDb2RlRnVuY3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJ
TEVSKE1TVkMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2Rl
UHRyPHRhZz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldENvZGVQdHI8dGFnPihvcGNvZGVJRCku
dGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8UHRy
VGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUxNkNvZGVGdW5jdGlvblB0
cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNv
ZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTE2Q29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1wbGF0
ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFn
PgorQUxXQVlTX0lOTElORSBMTEludENvZGUgZ2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyKFdhc21P
cGNvZGVJRCBvcGNvZGVJRCkKK3sKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS5l
eGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
TExJbnRDb2RlPihnZXRXaWRlMzJDb2RlUHRyPHRhZz4ob3Bjb2RlSUQpLnRlbXBsYXRlIGV4ZWN1
dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKKyNlbmRpZgorCiAjZWxzZQogQUxXQVlTX0lO
TElORSB2b2lkKiBnZXRDb2RlUHRyKE9wY29kZUlEIGlkKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAppbmRleCA2ZDZkMjQ5ZmE2MzRmZDdk
ZTU2YjljMTVlMzg0MWEzZjJiOWYxMWU4Li5jMWEyOGYwYTQ5ZTUxYzg1NGFkMzYxYmU1ZGIwZTgx
ODNlOTQ0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50LmNwcApAQCAtMzUsNiArMzUsMjIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCitleHRlcm4gIkMiIHZvaWQganNUcmFt
cG9saW5lUHJvZ3JhbVByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGlu
ZU1vZHVsZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1RyYW1wb2xp
bmVFdmFsUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQganNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDYWxsUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQganNUcmFtcG9saW5lRnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RQcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1RyYW1w
b2xpbmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMi
IHZvaWQganNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrUHJvbG9ndWUo
dm9pZCk7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+CitzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGVudHJ5cG9pbnRUcmFtcG9saW5lKFB0clR5cGUgYWRk
cmVzcykKK3sKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBD
RnVuY3Rpb25QdHJUYWcsIEpTRW50cnlQdHJUYWc+KGFkZHJlc3MpKSk7Cit9CisjZW5kaWYKKwog
c3RhdGljIHZvaWQgc2V0RnVuY3Rpb25FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQog
ewogICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCA9IGNvZGVCbG9jay0+c3BlY2lhbGl6
YXRpb25LaW5kKCk7CkBAIC03MiwxNCArODgsMjIgQEAgc3RhdGljIHZvaWQgc2V0RnVuY3Rpb25F
bnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBzdGF0aWMgRGlyZWN0SklU
Q29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAg
ICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RKSVRDb2RlKGVudHJ5cG9pbnRUcmFt
cG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKSwgZW50cnlwb2ludFRy
YW1wb2xpbmUoanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKS5j
b2RlKCksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0cmlidXRl
OjpTaGFyZWQpOworI2Vsc2UKICAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29k
ZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSwgZ2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjayksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEpJVENvZGU6OlNoYXJlQXR0
cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgICAgIH0pOwogICAgICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0
YXRpYyBEaXJlY3RKSVRDb2RlKiBqaXRDb2RlOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUo
ZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDb25zdHJ1Y3RQcm9s
b2d1ZSksIGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QXJpdHlDaGVja1Byb2xvZ3VlKS5jb2RlKCksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2Vsc2UKICAgICAgICAgICAgIGpp
dENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpLCBnZXRDb2RlUHRyPEpTRW50cnlQdHJU
YWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRp
ZgogICAgICAgICB9KTsKICAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmpp
dENvZGUpKTsKICAgICB9CkBAIC0xMDMsNyArMTI3LDExIEBAIHN0YXRpYyB2b2lkIHNldEV2YWxF
bnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVKSVRDb2Rl
KiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBq
aXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFtcG9s
aW5lRXZhbFByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmluc2ljOjpO
b0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZWxzZQogICAg
ICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihsbGludF9ldmFsX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSW50cmlu
c2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7CisjZW5k
aWYKICAgICB9KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFrZVJlZigqaml0Q29kZSkp
OwogfQpAQCAtMTI2LDcgKzE1NCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRQcm9ncmFtRW50cnlwb2lu
dChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0aXZlSklUQ29kZSogaml0Q29k
ZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaml0Q29kZSA9
IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZVByb2dy
YW1Qcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRy
aW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2Vsc2UKICAgICAgICAg
aml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJpbnNp
Yzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2VuZGlm
CiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsK
IH0KQEAgLTE0OSw3ICsxODEsMTEgQEAgc3RhdGljIHZvaWQgc2V0TW9kdWxlUHJvZ3JhbUVudHJ5
cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENvZGUqIGpp
dENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGppdENv
ZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVN
b2R1bGVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5z
aWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNl
CiAgICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+KGxsaW50X21vZHVsZV9wcm9ncmFtX3Byb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0
ZXJUaHVuaywgSW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6
OlNoYXJlZCk7CisjZW5kaWYKICAgICB9KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobWFr
ZVJlZigqaml0Q29kZSkpOwogfQpAQCAtMTYwLDcgKzE5NiwzNCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZUVudHJ5cG9pbnQoKQog
ICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKICAgICAgICAgcmV0dXJuIGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVUaHVuaygpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIGdldENv
ZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfZ2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOwor
ICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9nZXRfaG9z
dF9jYWxsX3JldHVybl92YWx1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9pbnQoKQoreworI2lm
IEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICByZXR1cm4g
ZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRUaHVuaygpOworI2VuZGlmIC8vIEVOQUJMRShK
SVQpCisgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplIHNp
emUpCit7CisjaWYgRU5BQkxFKEpJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAg
ICAgIHJldHVybiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhzaXplKTsKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorICAgIHN3aXRjaCAoc2l6ZSkgeworICAgIGNhc2UgT3Bjb2RlU2l6ZTo6TmFycm93
OgorICAgICAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQpOworICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTE2OgorICAg
ICAgICByZXR1cm4gTExJbnQ6OmdldFdpZGUxNkNvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQpOworICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTMyOgorICAg
ICAgICByZXR1cm4gTExJbnQ6OmdldFdpZGUzMkNvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgc2V0RW50cnlwb2ludChDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEVudHJ5cG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuaAppbmRleCA0M2ViMjg2NDA4NjU3ODU2ZDBiOWIxZDJkYTc2MWM4NDg0MWRiZmQ4Li4y
NWVlODIzYWU5Y2JjZWFlYTVjZGQ5NThiYzgyYjRlOThiODQ3Yjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgorI2luY2x1ZGUgIk9wY29kZVNp
emUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQxLDUgKzQyLDcgQEAgdm9pZCBzZXRFbnRy
eXBvaW50KENvZGVCbG9jayopOwogdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVC
bG9jayopOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZUVudHJ5cG9pbnQoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPiBmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9pbnQoKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBv
aW50KE9wY29kZVNpemUpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGJiYTEyMGE3
YzU1ODU4ZjM3N2U3OWJiNDI5ZjU5ZDc5OGUxNjM0ZGEuLjc3Mjg5NzU3NWRjZTI3YjFhYTZiMzU0
ZTMxM2QyZmFlYWNiNzlhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIGlubGluZSBKU1ZhbHVlIGdldE9w
ZXJhbmQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IHJl
dHVyCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChj
YWxsRnJhbWUsIGNhbGxUYXJnZXQsIGNhbGxUYXJnZXRUYWcpIFwKLSAgICBMTElOVF9SRVRVUk5f
VFdPKChyZXRhZ0NvZGVQdHI8Y2FsbFRhcmdldFRhZywgU2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJn
ZXQpKSwgKGNhbGxGcmFtZSkpCisgICAgTExJTlRfUkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNh
bGxUYXJnZXRUYWcsIEpTRW50cnlTbG93UGF0aFB0clRhZz4oY2FsbFRhcmdldCkpLCAoY2FsbEZy
YW1lKSkKIAogI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9u
VG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBfX2N0X2dsb2JhbE9iamVjdCA9IChnbG9iYWxPYmplY3QpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCkBAIC00NjcsNyArNDY3LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
bG9vcF9vc3IpCiAgICAgICAgIHVpbnQ2NF90KiBwdHIgPSB2bS5nZXRMb29wSGludEV4ZWN1dGlv
bkNvdW50ZXIocGMpOwogICAgICAgICAqcHRyICs9IGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291
bnRlcigpLm1fYWN0aXZlVGhyZXNob2xkOwogICAgICAgICBpZiAoKnB0ciA+PSBPcHRpb25zOjpl
YXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQoKSkKLSAgICAgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oZnV6emVyX3JldHVybl9l
YXJseV9mcm9tX2xvb3BfaGludCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgY2FsbEZyYW1lLT50b3BP
ZkZyYW1lKCkpOworICAgICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhMTEludDo6ZnV6emVyUmV0
dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCksIGNhbGxGcmFtZS0+dG9wT2ZGcmFtZSgpKTsKICAgICB9CiAgICAgCiAgICAgCkBAIC0xOTQ1
LDcgKzE5NDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X3Zh
cmFyZ3MpCiAgICAgcmV0dXJuIHZhcmFyZ3NTZXR1cDxPcENvbnN0cnVjdFZhcmFyZ3M+KGNhbGxG
cmFtZSwgcGMsIENvZGVGb3JDb25zdHJ1Y3QsIFNldEFyZ3VtZW50c1dpdGg6Ok9iamVjdCk7CiB9
CiAKLWlubGluZSBTbG93UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9uKiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+IHJldHVyblBvaW50KQoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBjb21t
b25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJuUG9pbnQpCiB7CiAgICAg
TExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENh
bGxFdmFsPigpOwpAQCAtMTk1Niw3ICsxOTU2LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlw
ZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24K
ICAgICBjYWxsZWVGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYnl0ZWNvZGUu
bV9hcmdjKTsKICAgICBjYWxsZWVGcmFtZS0+c2V0Q2FsbGVyRnJhbWUoY2FsbEZyYW1lKTsKICAg
ICBjYWxsZWVGcmFtZS0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6
Y2FsbGVlKSkgPSBjYWxsZWVBc1ZhbHVlOwotICAgIGNhbGxlZUZyYW1lLT5zZXRSZXR1cm5QQyhy
ZXR1cm5Qb2ludC5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0UmV0
dXJuUEMocmV0dXJuUG9pbnQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgIGNhbGxl
ZUZyYW1lLT5zZXRDb2RlQmxvY2sobnVsbHB0cik7CiAgICAgY2FsbEZyYW1lLT5zZXRDdXJyZW50
VlBDKHBjKTsKICAgICAKQEAgLTE5NzAsMTcgKzE5NzAsMTcgQEAgaW5saW5lIFNsb3dQYXRoUmV0
dXJuVHlwZSBjb21tb25DYWxsRXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1
Y3Rpb24KICAgICAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwpCiB7
Ci0gICAgcmV0dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0
dXJuIGNvbW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9p
bnRFbnRyeXBvaW50KE9wY29kZVNpemU6Ok5hcnJvdykpOwogfQogCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY2FsbF9ldmFsX3dpZGUxNikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2Fs
bEV2YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUxNkNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2
YWwoY2FsbEZyYW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bj
b2RlU2l6ZTo6V2lkZTE2KSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
YWxsX2V2YWxfd2lkZTMyKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUs
IHBjLCBMTEludDo6Z2V0V2lkZTMyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmlj
X3JldHVybl9wb2ludCkpOworICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBj
LCBMTEludDo6Z2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpXaWRlMzIp
KTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmNhdCkKQEAgLTIyNjUs
OCArMjI2NSwxMSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRpc3BhdGNoVG9OZXh0SW5z
dHJ1Y3Rpb24oVGhyb3dTY29wZSYgc2NvcGUsIENvZGVCbG9jawogCiAgICAgaWYgKE9wdGlvbnM6
OmZvcmNlT1NSRXhpdFRvTExJbnQoKSB8fCBjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRUeXBl
OjpJbnRlcnByZXRlclRodW5rKSB7CiAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBuZXh0UEMg
PSBwYy5uZXh0KCkucHRyKCk7Ci0gICAgICAgIGF1dG8gbmV4dEJ5dGVjb2RlID0gTExJbnQ6Omdl
dENvZGVQdHI8SlNFbnRyeVB0clRhZz4oKnBjLm5leHQoKS5wdHIoKSk7Ci0gICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQobmV4dFBDLCBuZXh0Qnl0ZWNvZGUuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
CisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExM
SW50Ojpub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChuZXh0UEMsIExMSW50
OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUo
SklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXgg
Nzg1MzYwZjQ4NzYwNzFhZmQ2NGFkMWNmZTFiYThiZWE4MzhhYjNkMi4uNjE0Yzg2ODVlOTgyMDg5
MjgwYjAzNTUyODNhYTdlZDdlMjFlOTQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwCkBAIC00MCw2ICs0MCwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
I2lmIEVOQUJMRShKSVQpCiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisKKyNkZWZpbmUgSlNDX0FO
Tk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obmFtZSkgXAorICAgIEpTQ19BTk5PVEFURV9KSVRf
T1BFUkFUSU9OKF9KSVRUYXJnZXRfIyNuYW1lLCBuYW1lKQorCisjZGVmaW5lIEpTQ19BTk5PVEFU
RV9MTElOVF9KSVRfT1BFUkFUSU9OX1dJVEhfREVDTEFSRShuYW1lKSBcCisgICAgZXh0ZXJuICJD
IiB2b2lkIG5hbWUodm9pZCk7IFwKKyAgICBKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklU
VGFyZ2V0XyMjbmFtZSwgbmFtZSkKKworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04o
aml0Q2FnZVB0ckdhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2
bUVudHJ5VG9KYXZhU2NyaXB0KTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKHZt
RW50cnlUb05hdGl2ZSk7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTih2bUVudHJ5
VG9KYXZhU2NyaXB0R2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9O
KHZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJB
VElPTihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKTsK
K0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKTsKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFU
SU9OKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRl
cik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKTsKKworI2VuZGlmCisKIG5hbWVzcGFj
ZSBMTEludCB7CiAKIC8vIFRoZXNlIHRodW5rcyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgbmVh
ckNhbGwgdXNlZCBvbiBKSVRlZCBjb2RlLgpAQCAtNTIsNyArNzMsNyBAQCBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oTExJbnRDb2RlIHRh
cmdldCwgY29ucwogewogICAgIEpTSW50ZXJmYWNlSklUIGppdDsKIAotICAgIGFzc2VydElzVGFn
Z2VkV2l0aDxKU0VudHJ5UHRyVGFnPih0YXJnZXQpOworICAgIGFzc2VydElzVGFnZ2VkV2l0aDxP
cGVyYXRpb25QdHJUYWc+KHRhcmdldCk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
Q0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZl
bnRpb24oKS5wcm9sb2d1ZVNjcmF0Y2hHUFJzWzBdOwpAQCAtNjAsMTYgKzgxLDUzIEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhMTElu
dENvZGUgdGFyZ2V0LCBjb25zCiAgICAgQ0NhbGxIZWxwZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2gg
PSBKU0ludGVyZmFjZUpJVDo6cmVnVDA7CiAjZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVyZmFj
ZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBzY3JhdGNoKTsKLSAgICBqaXQuZmFySnVtcChz
Y3JhdGNoLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBPcGVyYXRp
b25QdHJUYWcpOwogCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVO
S19JRCk7Ci0gICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50
ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgdGFnLCAiTExJbnQgJXMgdGh1bmsiLCB0aHVua0tpbmQpOwogfQogCiB0
ZW1wbGF0ZTxQdHJUYWcgdGFnPgogc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBjaGFyICp0aHVu
a0tpbmQpCiB7Ci0gICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6
OmdldENvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPHRhZz4oTExJbnQ6OmdldENvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wY29kZUlEKSwgdGh1bmtLaW5kKTsKK30KKwor
dGVtcGxhdGU8UHRyVGFnIHRhZz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlKE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBj
aGFyICp0aHVua0tpbmQpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworCisgICAgTExJbnRD
b2RlIHRhcmdldCA9IExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGNvZGVJRCk7CisgICAgYXNzZXJ0SXNUYWdnZWRXaXRoPE9wZXJhdGlvblB0clRhZz4odGFyZ2V0
KTsKKworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVy
SUQgc2NyYXRjaCA9IFdhc206Ondhc21DYWxsaW5nQ29udmVudGlvbigpLnByb2xvZ3VlU2NyYXRj
aEdQUnNbMF07CisjZWxzZQorICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0g
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QwOworI2VuZGlmCisgICAgaml0LnRhZ1JldHVybkFkZHJlc3Mo
KTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBz
Y3JhdGNoKTsKKyAgICBqaXQuZmFySnVtcChzY3JhdGNoLCBPcGVyYXRpb25QdHJUYWcpOworCisg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0
dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIGp1bXAgdG8gcHJv
bG9ndWUgdGh1bmsiLCB0aHVua0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0
dXJuUG9pbnQoTExJbnRDb2RlIHRhcmdldCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAg
IEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8T3BlcmF0aW9uUHRy
VGFnPih0YXJnZXQpOworICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cih0YXJnZXQpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCB0YWcsICJMTEludCAlcyByZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVua0tpbmQpOworfQor
Cit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNv
bnN0IGNoYXIgKnRodW5rS2luZCkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9SZXR1cm5Qb2ludDx0YWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
U0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rKCkKQEAgLTc3LDcgKzEzNSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNhbGxF
bnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOwor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3Vl
PEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlLCAiZnVuY3Rp
b24gZm9yIGNhbGwiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC04Nyw3
ICsxNDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25G
b3JDb25zdHJ1Y3RFbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0g
ewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0Vu
dHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rp
b24gZm9yIGNvbnN0cnVjdCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCIpKTsKICAgICB9KTsK
ICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTk3LDcgKzE1NSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmsoKQog
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5Owog
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3Ry
dWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNhbGwgd2l0aCBhcml0eSBjaGVj
ayIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Q
cm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aywgImZ1bmN0aW9uIGZvciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMDcsNyArMTY1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKCkK
ICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNvbnN0cnVjdCB3aXRo
IGFyaXR5IGNoZWNrIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY29uc3RydWN0IHdpdGggYXJpdHkgY2hl
Y2siKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0xMTcsNyArMTc1LDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCkK
ICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
ICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0
cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3By
b2xvZ3VlLCAiZXZhbCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9ldmFsX3Byb2xvZ3VlLCAi
ZXZhbCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEyNyw3ICsxODUs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1
bmsoKQogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X3By
b2dyYW1fcHJvbG9ndWUsICJwcm9ncmFtIikpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpTRW50cnlQdHJUYWc+KGxsaW50X3Byb2dy
YW1fcHJvbG9ndWUsICJwcm9ncmFtIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwog
fQpAQCAtMTM3LDcgKzE5NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwg
WyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88
SlNFbnRyeVB0clRhZz4obGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJv
Z3JhbSIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSwg
Im1vZHVsZV9wcm9ncmFtIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAt
MTQ5LDkgKzIwNyw5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2Fz
bUZ1bmN0aW9uRW50cnlUaHVuaygpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKICAgICAgICAgaWYgKFdhc206OkNv
bnRleHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3Vl
LCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1Byb2xvZ3VlPEpJVFRodW5rUHRyVGFnPih3YXNtX2Z1bmN0
aW9uX3Byb2xvZ3VlLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpJVFRodW5r
UHRyVGFnPih3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgImZ1bmN0aW9uIGZvciBjYWxs
IikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG9Qcm9sb2d1ZTxKSVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190bHMs
ICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKICAgICB9KTsKICAgICByZXR1cm4gY29kZVJlZjsKIH0K
QEAgLTIxNyw3ICsyNzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRp
YyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRs
ZXJQdHJUYWc+PiBjb2RlUmVmOwogICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKICAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNv
ZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3BfY2F0Y2gp
LCAib3BfY2F0Y2giKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0
aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2giKSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBAIC0yMjUsNyArMjgzLDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNo
VGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsK
ICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lk
ZTE2Q29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoMTYi
KSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
bzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1bmN0aW9uUHRy
PE9wZXJhdGlvblB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gxNiIpKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0KQEAgLTIzMyw3ICsyOTEsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVu
ayhPcGNvZGVTaXplIHNpemUpCiAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+PiBjb2RlUmVmOwogICAg
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJD
b2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gzMiIpKTsK
KyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3Bl
cmF0aW9uUHRyVGFnPihvcF9jYXRjaCksICJvcF9jYXRjaDMyIikpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAgfQpAQCAtMjQyLDYgKzMwMCwyODkgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmso
T3Bjb2RlU2l6ZSBzaXplKQogICAgIHJldHVybiB7IH07CiB9CiAKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPiBnZW5lcmljUmV0dXJuUG9pbnRUaHVuayhPcGNvZGVTaXplIHNp
emUpCit7CisgICAgc3dpdGNoIChzaXplKSB7CisgICAgY2FzZSBPcGNvZGVTaXplOjpOYXJyb3c6
IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAg
ICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9SZXR1cm5Qb2lu
dDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9p
bnQiKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAg
Y2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ry
b3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAg
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgICAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9SZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0V2lkZTE2
Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9p
bnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQxNiIpKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybiBjb2RlUmVmOworICAgIH0KKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjog
eworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludDMyIikpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAg
fQorICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7
IH07Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdXp6ZXJSZXR1
cm5FYXJseUZyb21Mb29wSGludFRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0geworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
bzxKU0VudHJ5UHRyVGFnPihmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50LCAiZnV6
emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4g
Y29kZVJlZjsKK30KKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlSlNHYXRlVGh1bmsodm9pZCogcG9pbnRl
ciwgUHRyVGFnIHRhZywgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0
OworCisgICAgaml0LmNhbGwoR1BSSW5mbzo6cmVnVDMsIHRhZyk7CisgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAg
aml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgJXMg
Y2FsbCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVdhc21HYXRlVGh1bmsodm9pZCogcG9pbnRlciwgUHRy
VGFnIHRhZywgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgaml0LmNhbGwoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCB0YWcpOworICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwb2ludGVyKSwgR1BSSW5mbzo6d2FzbVNjcmF0
Y2hHUFIxKTsKKyAgICBqaXQuZmFySnVtcChHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjEsIE9wZXJh
dGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnLCAiTExJbnQgJXMgd2FzbSBjYWxsIGdhdGUgdGh1bmsiLCBuYW1lKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gY3JlYXRlVGFp
bENhbGxHYXRlKFB0clRhZyB0YWcpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGpp
dC51bnRhZ1B0cihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEFSTTY0UmVnaXN0ZXJzOjpscik7Cisg
ICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDAsIHRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09E
RShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiTExJbnQgdGFpbCBjYWxsIGdh
dGUgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0
clRhZz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAg
aml0LmZhckp1bXAoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU0VudHJ5UHRyVGFnKTsKKworICAg
ICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnLCAibG9vcCBPU1IgZW50cnkgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IGVudHJ5T1NSRW50cnlHYXRlVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNv
ZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgICAg
ICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImVudHJ5
IE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gd2FzbU9TUkVudHJ5
R2F0ZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CisgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRk
cmVzcygpOworICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjp3YXNtU2NyYXRjaEdQUjAsIFdh
c21FbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIndhc20gT1NSIGVudHJ5IHRodW5r
IikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBleGNlcHRpb25IYW5kbGVyR2F0ZVRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIEND
YWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDAsIEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOworCisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTEla
RV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJleGNlcHRpb24gaGFu
ZGxlciB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gcmV0dXJuRnJvbUxMSW50R2F0
ZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Cisg
ICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnJldCgpOworCisgICAgICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWcsICJyZXR1cm5Gcm9tTExJbnQgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJu
IGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+IHRhZ0dhdGVUaHVuayh2b2lkKiBwb2ludGVyKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7
CisKKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQudGFnUHRyKEdQ
UkluZm86OnJlZ1QzLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5zdG9yZVB0cihBUk02
NFJlZ2lzdGVyczo6bHIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgOCkpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihw
b2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Qz
LCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdM
T0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5h
dGl2ZVRvSklUR2F0ZVB0clRhZywgInRhZyB0aHVuayIpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB1bnRhZ0dhdGVUaHVuayh2b2lkKiBwb2ludGVy
KQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpLCBBUk02NFJlZ2lzdGVy
czo6bHIpOworICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMTYpLCBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC51bnRh
Z1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJlZ1QzKTsKKyAg
ICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsKKworICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBG
SU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJ1bnRhZyB0
aHVuayIpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
PiBqaXRDYWdlUHRyVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtl
eSwgWyZdIHsKKyAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKKyAgICAgICAgSlNDX0pJVF9DQUdF
X0NPTVBJTEUoaml0KTsKKyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0
Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImppdENhZ2VQdHIgdGh1bmsiKSk7Cisg
ICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NB
R0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBub3JtYWxPU1JFeGl0
VHJhbXBvbGluZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBv
aW50PEpTRW50cnlQdHJUYWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lLCAibm9ybWFsX29z
cl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7
Cit9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0VHJhbXBvbGluZVRodW5rKCkKK3sKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRf
b3NyX2V4aXRfdHJhbXBvbGluZSwgImNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSB0aHVu
ayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJh
bXBvbGluZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZSwgImNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGlu
ZSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQg
b3Bjb2RlSUQsIE9wY29kZVNpemUgc2l6ZSkKK3sKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FU
SU9OKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUjI19yZXR1cm5fbG9jYXRpb246IHsgXAorICAgICAg
ICBzd2l0Y2ggKHNpemUpIHsgXAorICAgICAgICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzogeyBc
CisgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7IFwKKyAgICAgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb1JldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJf
cmV0dXJuX2xvY2F0aW9uIHRodW5rIikpOyBcCisgICAgICAgICAgICB9KTsgXAorICAgICAgICAg
ICAgcmV0dXJuIGNvZGVSZWY7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgT3Bjb2RlU2l6
ZTo6V2lkZTE2OiB7IFwKKyAgICAgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOyBcCisgICAgICAgICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsgXAorICAgICAgICAgICAgc3RkOjpjYWxs
X29uY2Uob25jZUtleSwgWyZdIHsgXAorICAgICAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6
OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pLCAgI25hbWUgIl9yZXR1cm5fbG9jYXRpb24xNiB0aHVuayIpKTsgXAorICAgICAg
ICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0gXAor
ICAgICAgICBjYXNlIE9wY29kZVNpemU6OldpZGUzMjogeyBcCisgICAgICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4g
Y29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7IFwK
KyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7IFwKKyAgICAgICAgICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb1JldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgI25hbWUgIl9yZXR1cm5fbG9jYXRpb24z
MiB0aHVuayIpKTsgXAorICAgICAgICAgICAgfSk7IFwKKyAgICAgICAgICAgIHJldHVybiBjb2Rl
UmVmOyBcCisgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgcmV0dXJuIHsgfTsgXAor
ICAgIH0KKworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJ
T04ob3BfY2FsbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3Jfb3BlbikK
KyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3JfbmV4dCkKKyAgICBMTElOVF9S
RVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihv
cF9jYWxsX3ZhcmFyZ3Nfc2xvdykKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3Ry
dWN0X3ZhcmFyZ3Nfc2xvdykKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfZ2V0X2J5X2lk
KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfdmFsKQorICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9wdXRfYnlfaWQpCisgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9w
X3B1dF9ieV92YWwpCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisKKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBMTEludAogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggMDM2OGNlOWEyZGEwNjA0ZjQzNzI0NTJl
ZTEyZjg3YzRlNjM4ZGIwZC4uMDcxNTczZjc3ZGFkZjY5MDcxMDgxNWVkODFhN2I5ZDNiMGU0OGNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKQEAgLTQwLDYg
KzQwLDE5IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVlIHZtRW50cnlUb05hdGl2
ZSh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOwogfQogCisjaWYgRU5BQkxFKEpJVF9DQUdF
KQorZXh0ZXJuICJDIiB7CisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFmdGVyKHZvaWQpOworICAg
IHZvaWQgdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIHZtRW50
cnlUb05hdGl2ZUdhdGVBZnRlcih2b2lkKTsKKworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAgICB2b2lkIGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1VudGFnR2F0ZUFmdGVyKHZv
aWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1Rh
Z0dhdGVBZnRlcih2b2lkKTsKK30KKyNlbmRpZgorCiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdm1F
bnRyeVRvV2FzbSh2b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBmcmFtZSkKIHsK
ICAgICBhdXRvIGNsb2JiZXJpemVWYWxpZGF0b3IgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CkBAIC01
OSwxMSArNzIsMzIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGV2YWxF
bnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcHJvZ3Jh
bUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBtb2R1
bGVQcm9ncmFtRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludFRodW5rKE9wY29kZVNpemUpOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJldHVybkVhcmx5RnJvbUxv
b3BIaW50VGh1bmsoKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IGNhbGxUb1Rocm93VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRp
b25IYW5kbGVyUHRyVGFnPiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvblRodW5rKCk7CiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFuZGxlQ2F0Y2hUaHVuayhP
cGNvZGVTaXplKTsKIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4gaml0Q2FnZVB0clRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiwgUHRyVGFnLCBjb25zdCBjaGFyKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVXYXNt
R2F0ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gbG9vcE9TUkVudHJ5
R2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
PiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhhbmRsZXJHYXRlVGh1bmso
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHJldHVybkZy
b21MTEludEdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gdW50YWdHYXRlVGh1bmsodm9pZCopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5h
dGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRodW5rKHZvaWQqKTsKKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKTsK
KyNpZiBFTkFCTEUoREZHX0pJVCkKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBjaGVja3BvaW50T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlubGluZWRDYWxsVHJhbXBv
bGluZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gcmV0dXJu
TG9jYXRpb25UaHVuayhPcGNvZGVJRCwgT3Bjb2RlU2l6ZSk7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gd2Fz
bUZ1bmN0aW9uRW50cnlUaHVuaygpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCA5ZTNjZGU5OTA0YzEwMmJlZWVmNDdiMTRmMzVmZjY5NTE2OWZhOTdmLi4xNTVkNWU2
NDU5NzZkYmRkYWI1Y2JiMDM2MzY4NTliZTM2NWVjYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNTYsOSArMjU2
LDEyIEBAIGNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNvbnN0ZXhwciAoQmluYXJ5
QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51CiBjb25zdCBCeXRlY29kZVB0clRhZyA9IGNv
bnN0ZXhwciBCeXRlY29kZVB0clRhZwogY29uc3QgSlNFbnRyeVB0clRhZyA9IGNvbnN0ZXhwciBK
U0VudHJ5UHRyVGFnCiBjb25zdCBIb3N0RnVuY3Rpb25QdHJUYWcgPSBjb25zdGV4cHIgSG9zdEZ1
bmN0aW9uUHRyVGFnCitjb25zdCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcgPSBjb25zdGV4cHIgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnCitjb25zdCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgPSBjb25zdGV4
cHIgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCiBjb25zdCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnID0g
Y29uc3RleHByIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKK2NvbnN0IFlhcnJFbnRyeVB0clRhZyA9
IGNvbnN0ZXhwciBZYXJyRW50cnlQdHJUYWcKIGNvbnN0IE5vUHRyVGFnID0gY29uc3RleHByIE5v
UHRyVGFnCi1jb25zdCBTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBTbG93UGF0aFB0clRhZwor
IAogCiAjIFNvbWUgcmVnaXN0ZXIgY29udmVudGlvbnMuCiAjIC0gV2UgdXNlIGEgcGFpciBvZiBy
ZWdpc3RlcnMgdG8gcmVwcmVzZW50IHRoZSBQQzogb25lIHJlZ2lzdGVyIGZvciB0aGUKQEAgLTEw
MjYsNyArMTAyOSw3IEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9uKCkKICAgICBlbmQKIGVuZAogCi1t
YWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKK21hY3JvIGRl
ZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgbWFjcm8gZGVmaW5lTmFycm93
KCkKICAgICAgICAgaWYgbm90IENfTE9PUF9XSU4KICAgICAgICAgICAgIF8lb3Bjb2RlTmFtZSVf
cmV0dXJuX2xvY2F0aW9uOgpAQCAtMTA0OCwzMiArMTA1MSw4MiBAQCBtYWNybyBkZWZpbmVPU1JF
eGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBzaXplKGRlZmluZU5hcnJvdywg
ZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkgZW5kKQogZW5kCiAKK2lm
IEFSTTY0RQorICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tV
bnRhZ0dhdGVBZnRlcgorICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2tUYWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcgorICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcgorZW5kCisKIG1hY3JvIGNhbGxU
YXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmls
ZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgY2FsbFB0clRhZykK
ICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9u
IGNhbGxlZQorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAg
ICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25m
aWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUpICogUHRyU2l6ZSwgYTIK
KyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFn
CisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6CisgICAgICAgICAgICBj
YWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGNhbGxXaWRl
MTYoKQorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRP
ZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNvZGVOYW1lJV93aWRlMTYp
ICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVf
d2lkZTE2OgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0clRhZworICAgICAgICBlbmQKKwor
ICAgICAgICBtYWNybyBjYWxsV2lkZTMyKCkKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsg
Y29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRl
Ojolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2Ey
XSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAgICAgICAgICAgX2pzX3Ry
YW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgIGNhbGwgdDMsIGNhbGxQ
dHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbW92ZSBjYWxsZWUsIHQzCisgICAgICAgIHNp
emUoY2FsbE5hcnJvdywgY2FsbFdpZGUxNiwgY2FsbFdpZGUzMiwgbWFjcm8gKGdlbikgZ2VuKCkg
ZW5kKQogICAgIGVsc2UKICAgICAgICAgY2FsbCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICAgICAg
aWYgQVJNdjcgb3IgTUlQUworICAgICAgICAgICAgIyBJdCBpcyByZXF1aXJlZCBpbiBBUk12NyBh
bmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZpbml0aW9ucworICAgICAgICAgICAgIyBm
b3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisg
ICAgICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0aW9uLCByZXN1bHRpbmcg
aW4gdW5leHBlY3RlZAorICAgICAgICAgICAgIyBjcmFzaGVzLgorICAgICAgICAgICAgcmVzdG9y
ZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbChz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gpCisgICAgICAgIGVuZAogICAgIGVuZAorICAgIGRlZmluZVJldHVybkxhYmVsKG9w
Y29kZU5hbWUsIHNpemUpCisgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAg
ZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogCi0gICAgaWYgQVJNdjcgb3IgTUlQUworICAg
IGlmIG5vdCBBUk02NEUKICAgICAgICAgIyBJdCBpcyByZXF1aXJlZCBpbiBBUk12NyBhbmQgTUlQ
cyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZpbml0aW9ucwogICAgICAgICAjIGZvciB0aG9zZSBh
cmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVjdGlvbnMKICAgICAgICAgIyB0
aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQK
ICAgICAgICAgIyBjcmFzaGVzLgotICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxs
KCkKLSAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQorICAgICAgICBtYWNybyBs
YWJlbE5hcnJvdygpCisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6Cisg
ICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGxhYmVsV2lkZTE2KCkKKyAgICAgICAgICAgIF9q
c190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAgIGVuZAorCisgICAgICAg
IG1hY3JvIGxhYmVsV2lkZTMyKCkKKyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVO
YW1lJV93aWRlMzI6CisgICAgICAgIGVuZAorICAgICAgICBzaXplKGxhYmVsTmFycm93LCBsYWJl
bFdpZGUxNiwgbGFiZWxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVuZCkKKyAgICAgICAgY3Jh
c2goKQogICAgIGVuZAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcGNvZGVOYW1lLCBz
aXplKQotICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9yUmVndWxhckNhbGwoY2Fs
bGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclJl
Z3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcp
CiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAogCiAjIHNwIHBvaW50cyB0
byB0aGUgbmV3IGZyYW1lCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwg
dGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcpCiAgICAgcmVzdG9yZUNh
bGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5LDggKzExNjIsNyBAQCBt
YWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxs
UHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAgIGFkZHAgMTYsIGNmciwg
dGVtcDMKLSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisgICAgICAgIGFkZHAgMTYs
IGNmciwgdGVtcDQKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRlbXAxCkBAIC0xMTMwLDcg
KzExODIsMTQgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAy
LCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIG1vdmUgdGVtcDEsIHNwCi0gICAg
am1wIGNhbGxlZSwgY2FsbFB0clRhZworICAgIGlmIEFSTTY0RQorICAgICAgICBtb3ZlIHRlbXA0
LCBhMgorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6
OnRhaWxDYWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBO
YXRpdmVUb0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBlbHNlCisgICAgICAgIGpt
cCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNybyBzbG93UGF0aEZvckNv
bW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1Bh
dGgsIHByZXBhcmVDYWxsKQpAQCAtMTE0NCwxNiArMTIwMywxNiBAQCBtYWNybyBzbG93UGF0aEZv
ckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFtZVB0cikKICAgICAgICAg
ICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAgICAgICAgICAgIG1vdmUg
Y2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2FsbChjYWxsZWUsIHQyLCB0
MywgdDQsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgcHJlcGFyZUNhbGwoY2FsbGVlLCB0
MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAgICAgICAuZG9udFVwZGF0
ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1lJV9zbG93LCBz
aXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rlciwg
ZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAgICAgICBjYWxsVGFyZ2V0
RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9m
aWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2FsbGVlLCBKU0VudHJ5U2xv
d1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBnZXR0ZXJTZXR0ZXJPU1JF
eGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkgIyBXZSBkb24ndCByZWFj
aCB0aGlzIGluIHN0cmFpZ2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFjaCBpdCB2aWEgcmV0dXJu
aW5nIHRvIHRoZSBjb2RlIGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcgc3RhY2sgZnJhbWVzIGR1
cmluZyBPU1IgZXhpdC4KIAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcE5hbWUsIHNp
emUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQogCiAgICAgcmVzdG9yZVN0
YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1cm5QQ1tjZnJdLCBQQwpA
QCAtMTM1MSw3ICsxNDEwLDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xv
Z3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2Nr
U2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAjIFNldCB1cCB0aGUgY2Fs
bCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0YWdSZXR1cm5BZGRyZXNz
IHNwCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBpZiBUUkFDSU5HCkBAIC0x
Mzc5LDE2ICsxNDM3LDI1IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAgICAgYnRweiByMCwg
LnJlY292ZXIKICAgICAgICAgbW92ZSBjZnIsIHNwICMgcmVzdG9yZSB0aGUgcHJldmlvdXMgc3AK
ICAgICAgICAgIyBwb3AgdGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdpbGwganVtcCB0byBhIGZ1
bmN0aW9uIHRoYXQgd2FudHMgdG8gc2F2ZSBpdAotICAgICAgICBpZiBBUk02NCBvciBBUk02NEUK
KyAgICAgICAgaWYgQVJNNjQKKyAgICAgICAgICAgIHBvcCBsciwgY2ZyCisgICAgICAgIGVsc2lm
IEFSTTY0RQorICAgICAgICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mgd2lsbCBiZSBwZXJmb3Jt
ZWQgaW4gR2F0ZTo6ZW50cnlPU1JFbnRyeS4KICAgICAgICAgICAgIHBvcCBsciwgY2ZyCi0gICAg
ICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAgICAgZWxzaWYgQVJNdjcgb3IgTUlQ
UwogICAgICAgICAgICAgcG9wIGNmcgogICAgICAgICAgICAgcG9wIGxyCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgZW5kCi0gICAgICAgIGptcCByMCwgSlNFbnRy
eVB0clRhZworCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSByMCwgYTAKKyAg
ICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25m
aWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5KSAqIFB0clNpemUsIGEy
CisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0
clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKyAg
ICAgICAgZW5kCiAgICAgLnJlY292ZXI6CiAgICAgICAgIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0
dGVyKHQxKQogICAgIC5jb250aW51ZToKQEAgLTE0OTQsNyArMTU2MSwxMiBAQCBlbmQKIG1hY3Jv
IGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlMTEludCgpCiAgICAgcmVz
dG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbGVh
cCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAo
Y29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXplLCBhMgorICAgICAgICBq
bXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQorICAgICAgICByZXQKKyAg
ICBlbmQKIGVuZAogCiAjIFRoaXMgYnJlYWsgaW5zdHJ1Y3Rpb24gaXMgbmVlZGVkIHNvIHRoYXQg
dGhlIHN5bnRoZXNpemVkIGxsaW50UENSYW5nZVN0YXJ0IGxhYmVsCkBAIC0xNTI1LDYgKzE1OTcs
MTkgQEAgZWxzZQogZW5kCiAgICAgZG9WTUVudHJ5KG1ha2VIb3N0RnVuY3Rpb25DYWxsKQogCitp
ZiBBUk02NCBvciBBUk02NEUKKyAgICBnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVRBZnRlcgorZW5k
CitnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVQKK192bUVudHJ5VG9ZYXJySklUOgorICAgIGZ1bmN0
aW9uUHJvbG9ndWUoKQoraWYgQVJNNjQgb3IgQVJNNjRFCisgICAgam1wIHQ1LCBZYXJyRW50cnlQ
dHJUYWcKKyAgICBfdm1FbnRyeVRvWWFyckpJVEFmdGVyOgorZW5kCisgICAgZnVuY3Rpb25FcGls
b2d1ZSgpCisgICAgcmV0CisKIAogaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAj
IHZvaWQgc2FuaXRpemVTdGFja0ZvclZNSW1wbChWTSogdm0pCkBAIC0xNTcwLDYgKzE2NTUsNzEg
QEAgaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAgICAgcmV0CiBlbmQKIAoraWYg
QVJNNjRFCisgICAgIyB2b2lkKiBqaXRDYWdlUHRyKHZvaWQqIHBvaW50ZXIsIHVpbnRwdHJfdCB0
YWcpCisgICAgZW1pdCAiLmdsb2JsIF9qaXRDYWdlUHRyIgorICAgIGVtaXQgIl9qaXRDYWdlUHRy
OiIKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBsZWFwIEpTQ0NvbmZpZyAr
IGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0
ZTo6aml0Q2FnZVB0cikgKiBQdHJTaXplLCB0MgorICAgICAgICBqbXAgW3QyXSwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnCisgICAgICAgIGdsb2JhbCBfaml0Q2FnZVB0ckdhdGVBZnRlcgorICAgICAg
ICBfaml0Q2FnZVB0ckdhdGVBZnRlcjoKKyAgICAgICAgcmV0CisKKyAgICBnbG9iYWwgX3RhaWxD
YWxsSlNFbnRyeVRyYW1wb2xpbmUKKyAgICBfdGFpbENhbGxKU0VudHJ5VHJhbXBvbGluZToKKyAg
ICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCisgICAgICAgIGptcCBhMCwgSlNFbnRyeVB0clRh
ZworCisgICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRyYW1wb2xpbmUKKyAgICBf
dGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lOgorICAgICAgICB1bnRhZ1JldHVybkFk
ZHJlc3MgYTIKKyAgICAgICAgam1wIGEwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKworICAgIGds
b2JhbCBfZXhjZXB0aW9uSGFuZGxlclRyYW1wb2xpbmUKKyAgICBfZXhjZXB0aW9uSGFuZGxlclRy
YW1wb2xpbmU6CisgICAgICAgIGptcCBhMCwgRXhjZXB0aW9uSGFuZGxlclB0clRhZworCisgICAg
Z2xvYmFsIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lCisgICAgX3JldHVybkZyb21MTEludFRy
YW1wb2xpbmU6CisgICAgICAgIHJldAorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVQcm9ncmFt
UHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3VlOgorICAgICAgICB0YWdS
ZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZQorCisg
ICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUKKyAgICBfanNUcmFt
cG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlOgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNw
CisgICAgICAgIGptcCBfbGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUKKworICAgIGdsb2Jh
bCBfanNUcmFtcG9saW5lRXZhbFByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUV2YWxQcm9sb2d1
ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2V2YWxf
cHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9n
dWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9ndWU6CisgICAgICAgIHRh
Z1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdFBy
b2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWU6Cisg
ICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJhbXBvbGluZUZ1bmN0aW9u
Rm9yQ2FsbEFyaXR5Q2hlY2tQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNh
bGxBcml0eUNoZWNrUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAg
ICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaworCisgICAgZ2xvYmFs
IF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZQorICAg
IF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZToKKyAg
ICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2sKK2VuZAorCiBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgog
ICAgICMgRHVtbXkgZW50cnkgcG9pbnQgdGhlIEMgTG9vcCB1c2VzIHRvIGluaXRpYWxpemUuCiAg
ICAgX2xsaW50X2VudHJ5OgpAQCAtMTcyNCwyMSArMTg3NCwzMCBAQCBlbmQpCiAKIG9wKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQogICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNl
X2FyaXR5Q2hlY2tfZm9yX2NhbGwpCi0gICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZv
ckNhbGxCZWdpbiwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25Bcml0
eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCAuZnVuY3Rpb25Gb3JD
YWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKICAgICBkaXNwYXRjaCgwKQogZW5k
KQogCi0KIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIG1hY3Jv
ICgpCiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkK
LSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9zbG93
X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5jdGlvbkZvckNvbnN0cnVj
dEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQogLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQogICAgIGRpc3BhdGNo
KDApCiBlbmQpCiAKKyMgTmVlZCB0aGVzZSBzdHViIGxhYmVscyB0byBtYWtlIGpzX3RyYW1wb2xp
bmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWcgZXRjLiBMTEludCBo
ZWxwZXIgb3Bjb2Rlcy4KK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrX3VudGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9s
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWdfd2lkZTMyOgorX2pzX3RyYW1w
b2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZ193aWRl
MTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrX3VudGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoKKyAgICBjcmFzaCgpCiAK
ICMgVmFsdWUtcmVwcmVzZW50YXRpb24tc3BlY2lmaWMgY29kZS4KIGlmIEpTVkFMVUU2NApAQCAt
MjEwOSw3ICsyMjY4LDcgQEAgZW5kKQogCiBfbGxpbnRfb3BfY2FsbF9ldmFsOgogICAgIHNsb3dQ
YXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX25hcnJvdywKKyAgICAgICAg
b3BfY2FsbF9ldmFsLAogICAgICAgICBuYXJyb3csCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAg
ICAgIG1hY3JvICgpIGRpc3BhdGNoT3AobmFycm93LCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIx
MTgsNyArMjI3Nyw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWw6CiAKIF9sbGludF9vcF9jYWxsX2V2
YWxfd2lkZTE2OgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9l
dmFsX3dpZGUxNiwKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAgICB3aWRlMTYsCiAgICAg
ICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNoT3Aod2lkZTE2LCBvcF9j
YWxsX2V2YWwpIGVuZCwKQEAgLTIxMjcsNyArMjI4Niw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWxf
d2lkZTE2OgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKICAgICBzbG93UGF0aEZvckNv
bW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCisgICAgICAgIG9wX2NhbGxf
ZXZhbCwKICAgICAgICAgd2lkZTMyLAogICAgICAgICBPcENhbGxFdmFsLAogICAgICAgICBtYWNy
byAoKSBkaXNwYXRjaE9wKHdpZGUzMiwgb3BfY2FsbF9ldmFsKSBlbmQsCkBAIC0yMjEyLDcgKzIz
NzEsMTMgQEAgb3AoY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9s
aW5lLCBtYWNybyAoKQogCiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQogICAgICAg
ICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGlu
ZSkKLSAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGlmIEFSTTY0RQorICAg
ICAgICAgICAgbW92ZSByMSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3Rl
eHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29w
T1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGpt
cCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBlbmQKICAgICBlbHNlCiAgICAgICAgIG5vdFN1
cHBvcnRlZCgpCiAgICAgZW5kCkBAIC0yMjI5LDEyICsyMzk0LDIzIEBAIG9wKGNoZWNrcG9pbnRf
b3NyX2V4aXRfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICAgICAgY0NhbGwyKF9sbGludF9zbG93
X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCkKICAgICAgICAgcmVzdG9yZVN0YXRlQWZ0ZXJDQ2Fs
bCgpCiAgICAgICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0
aF90cmFtcG9saW5lKQotICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgaWYg
QVJNNjRFCisgICAgICAgICAgICBtb3ZlIHIxLCBhMAorICAgICAgICAgICAgbGVhcCBKU0NDb25m
aWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHBy
IEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAgICAgICAgam1wIFthMl0s
IE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVuZAogICAgIGVsc2UKICAg
ICAgICAgbm90U3VwcG9ydGVkKCkKICAgICBlbmQKIGVuZCkKIAorb3Aobm9ybWFsX29zcl9leGl0
X3RyYW1wb2xpbmUsIG1hY3JvICgpCisgICAgZGlzcGF0Y2goMCkKK2VuZCkKKworCiAjIExhc3Rs
eSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9y
dCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1
c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMgbXVjaC4KQEAgLTIyNzks
NCArMjQ1NSwxOCBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25vX3RscywgbWFjcm8gKCkK
ICAgICBjcmFzaCgpCiBlbmQpCiAKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsOgorX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxf
aW5kaXJlY3Q6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6Citf
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRlMTY6Citfd2FzbV90cmFtcG9saW5lX3dhc21f
Y2FsbF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rf
d2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzX3dpZGUx
NjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVf
d2FzbV9jYWxsX25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRp
cmVjdF93aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNf
d2lkZTMyOgorICAgIGNyYXNoKCkKKwogZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDYyNmE0Njgx
N2IxNTNiM2Q1NDY0N2MzZDgyYzFiNDc0OWZlNjI2ODQuLjhlNzMzN2Q3NjIyNzQ1YTA5NmYwZWYy
NGVjMDQ0MDNhNjZjNmQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02ODYsNyArNjg2LDcgQEAg
ZW5kCiAjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCiAKICMgRXhwZWN0cyB0aGF0
IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhp
bmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKK21hY3Jv
IGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNvZGVOYW1lLCBkb25lTGFiZWwsIHNsb3dQYXRoKQogICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1tjZnJdLCB0
MAogICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJl
bAogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKQEAgLTc1Nyw2ICs3NTcsMTQgQEAgbWFjcm8g
ZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbdDFdLCBQQgogICAgIG1vdmUgMCwgUEMKICAg
ICBqbXAgZG9uZUxhYmVsCisKKyAgICAjIEl0IGlzIHJlcXVpcmVkIGluIEFSTXY3IGFuZCBNSVBz
IGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgIyBmb3IgdGhvc2UgYXJjaGl0
ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisgICAgIyB0aGF0IGNhbiBj
bG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhwZWN0ZWQKKyAgICAjIGNy
YXNoZXMuCisgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgorICAgIF9qc190
cmFtcG9saW5lXyVvcGNvZGVOYW1lJV90YWc6CisgICAgY3Jhc2goKQogZW5kCiAKICMgSW5zdHJ1
Y3Rpb24gaW1wbGVtZW50YXRpb25zCkBAIC0yMTE1LDcgKzIxMjMsNyBAQCBtYWNybyBjYWxsSGVs
cGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUs
IGRzdFZpcnR1YQogICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQ
YXlsb2FkT2Zmc2V0W3QzXQogICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRb
dDNdCiAgICAgbW92ZSB0Mywgc3AKLSAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0
LCBKU0VudHJ5UHRyVGFnKQorICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIHQx
LCBKU0VudHJ5UHRyVGFnKQogICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKIC5vcENhbGxTbG93OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCBhYTE1NzIzYzY0MGYyZDc3ZWE4YTdmZTg4YTk4YmFlYTg2ZDJiOWI5Li41MzRlMGRmM2Rl
MzAwMDYyZjc1ZjE1Y2JlNTEzNjQ5YTdkYWE3YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMzAwLDE1ICsz
MDAsMjUgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHJldAogZW5kCiAKLQogIyBh
MCwgYTIsIHQzLCB0NAogbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCBwcm90b0NhbGxG
cmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGFkZHAgMTYsIHNwCiAgICAgaWYgQ19MT09QIG9yIENf
TE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBlbnRyeQorICAgIGVsc2lmIEFS
TTY0RQorICAgICAgICBtb3ZlIGVudHJ5LCB0MworICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
dm1FbnRyeVRvSmF2YVNjcmlwdCkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0
aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBnbG9iYWwgX3ZtRW50
cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lCisgICAgICAgIF92bUVudHJ5VG9KYXZhU2NyaXB0VHJh
bXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSlNFbnRyeVB0clRhZwogICAgIGVsc2UKICAgICAg
ICAgY2FsbCBlbnRyeSwgSlNFbnRyeVB0clRhZwogICAgIGVuZAorICAgIGlmIEFSTTY0RQorICAg
ICAgICBnbG9iYWwgX3ZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIKKyAgICAgICAgX3ZtRW50
cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXI6CisgICAgZW5kCiAgICAgc3VicCAxNiwgc3AKIGVuZAog
CkBAIC0zMjYsOSArMzM2LDIwIEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCBw
cm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgICAgICBzdWJwIDMyLCBzcAogICAgICAg
ICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICAgICAgYWRkcCAzMiwgc3AKKyAg
ICBlbHNpZiBBUk02NEUKKyAgICAgICAgbW92ZSB0ZW1wMSwgdDMKKyAgICAgICAgbGVhcCBKU0ND
b25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3Rl
eHByIEdhdGU6OnZtRW50cnlUb05hdGl2ZSkgKiBQdHJTaXplLCBhMgorICAgICAgICBqbXAgW2Ey
XSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSG9zdEZ1bmN0aW9uUHRyVGFnCisgICAgICAgIGds
b2JhbCBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZQorICAgICAgICBfdm1FbnRyeVRvTmF0aXZl
VHJhbXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSG9zdEZ1bmN0aW9uUHRyVGFnCiAgICAgZWxz
ZQogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICBlbmQKKyAgICBp
ZiBBUk02NEUKKyAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIKKyAgICAg
ICAgX3ZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcjoKKyAgICBlbmQKIGVuZAogCiBvcChsbGludF9o
YW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uLCBtYWNybyAoKQpAQCAtNDMxLDggKzQ1MiwxNCBAQCBt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBtb3ZlIFBDLCBhMQog
ICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zcikKICAgICAgICAgICAgIGJ0cHogcjAs
IC5yZWNvdmVyCisKICAgICAgICAgICAgIG1vdmUgcjEsIHNwCi0gICAgICAgICAgICBqbXAgcjAs
IEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIGxl
YXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsg
KGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAg
ICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGptcCByMCwgSlNFbnRyeVB0clRhZworICAg
ICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbG9hZFBDKCkKICAg
ICAgICAgZW5kKQpAQCAtNjQ1LDcgKzY3Miw3IEBAIGVuZAogIyBFbnRyeXBvaW50cyBpbnRvIHRo
ZSBpbnRlcnByZXRlci4KIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGlj
aCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3JvIGZ1bmN0aW9uQXJpdHlD
aGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKG9wY29k
ZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlhZXEgdDAsIENvZGVCbG9j
azo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJlcGFyZVN0YXRlRm9yQ0Nh
bGwoKQpAQCAtNjgyLDkgKzcwOSwxNSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxh
YmVsLCBzbG93UGF0aCkKIAogLm5vRXh0cmFTbG90OgogICAgIGlmIEFSTTY0RQorICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVW50YWcpICogUHRyU2l6ZSwgdDMKKyAgICAg
ICAgam1wIFt0M10sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAgICBfanNfdHJhbXBvbGlu
ZV8lb3Bjb2RlTmFtZSVfdW50YWc6CiAgICAgICAgIGxvYWRwIDhbY2ZyXSwgbHIKICAgICAgICAg
YWRkcCAxNiwgY2ZyLCB0MwogICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3MgdDMKKyAgICAgICAg
XyVvcGNvZGVOYW1lJVVudGFnR2F0ZUFmdGVyOgorICAgIGVsc2UKKyAgICAgICAgX2pzX3RyYW1w
b2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgIGVuZAogCiAgICAgLy8gTW92ZSBmcmFtZSB1
cCB0MSBzbG90cwpAQCAtNzEyLDkgKzc0NSwxNSBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2so
ZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBiYWRkaW56IDEsIHQyLCAuZmlsbExvb3AKIAogICAg
IGlmIEFSTTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNl
dE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVGFnKSAq
IFB0clNpemUsIHQzCisgICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcKKyAg
ICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAgICAgICAgYWRkcCAxNiwg
Y2ZyLCB0MQogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAgICAgIHN0b3JlcCBsciwg
OFtjZnJdCisgICAgICAgIF8lb3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6CisgICAgZWxzZQorICAg
ICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgogICAgIGVuZAogCiAuY29udGlu
dWU6CkBAIC0yMTc1LDkgKzIyMTQsMTUgQEAgbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWEKICAgICBz
dG9yZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5
bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBhcmVDYWxsKCVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0s
IHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJl
Z2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKLQorICAgIGlmIEFSTTY0
RQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBwcmVwYXJlQ2FsbCh0MCwgdDIs
IHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQwCisg
ICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHQwLCBKU0Vu
dHJ5UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQz
LCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNv
ZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxS
ZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgZW5kCiAub3BD
YWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyArMjI5MCw3IEBAIGxsaW50T3BXaXRo
UmV0dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5S2V5LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxpbnRfb3BfY2F0Y2gsIG1hY3JvKCkg
ZW5kLCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybyAoKSBlbmQs
IG1hY3JvIChzaXplKQogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklU
J3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSByZXR1
cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQogICAg
ICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190
cmFtcG9saW5lKS4KQEAgLTIzMTAsNyArMjM1NSwxMyBAQCBvcChsbGludF90aHJvd19mcm9tX3Ns
b3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVs
YXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0s
IHQxCiAgICAgY29udmVydENhbGxlZVRvVk0odDEpCi0gICAgam1wIFZNOjp0YXJnZXRNYWNoaW5l
UENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBpZiBBUk02NEUKKyAg
ICAgICAgbG9hZHAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXSwgYTAKKyAgICAgICAg
bGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAg
KyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRyU2l6ZSwgYTEKKyAgICAg
ICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2VwdGlvbkhhbmRsZXJQdHJU
YWcKKyAgICBlbHNlCisgICAgICAgIGptcCBWTTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFd
LCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBlbmQpCiAKIApAQCAtMzAxOCw0ICsz
MDY5LDMgQEAgb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgbWFjcm8gKCkK
ICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBkb1JldHVy
bigpCiBlbmQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJB
c3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNt
CmluZGV4IGI5MzIyMTM0ODM0MmU5YWE4ODg4MzJkNWM3YmFkMTY2NDdhY2I0NWIuLmE5ZGE4YmFk
ZTY3N2M2MDMzNDRiYmZkNjQyNjA5ODVhODkzNDYwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTM5LDggKzEzOSwxMiBAQCBtYWNybyBjaGVj
a1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIpCiAKICAgICAgICAgICAg
IHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAgICAgICAgcmVzdG9yZUNhbGxl
clBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVzcyBzcAotICAgICAgICAg
ICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAg
ICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29u
ZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5KSAqIFB0clNpemUsIHdz
MQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgV2Fz
bUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgam1wIHdzMCwg
V2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAgICAgLnJlY292ZXI6CiAgICAg
ICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxvY2tSZWdpc3RlcikKICAg
ICAgICAgZW5kKQpAQCAtMTU5LDkgKzE2MywxNCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9y
TG9vcCgpCiAgICAgICAgICAgICBidHB6IHIxLCAucmVjb3ZlcgogICAgICAgICAgICAgcmVzdG9y
ZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgICAgICAgICByZXN0b3JlQ2FsbGVyUENBbmRD
RlIoKQotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgICAgICAgICBtb3Zl
IHIwLCBhMAotICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAg
IGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIG1vdmUgcjEsIHdzMAorICAgICAgICAgICAgICAg
IGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFw
ICsgKGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICogUHRyU2l6ZSwgd3MxCisgICAgICAg
ICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBXYXNtRW50cnlQdHJU
YWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAgcjEsIFdhc21FbnRyeVB0
clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAgICAgbG9h
ZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKICAgICAg
ICAgZW5kKQpAQCAtMjUzLDcgKzI2Miw2IEBAIGVuZAogCiBtYWNybyB3YXNtUHJvbG9ndWUoY29k
ZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5zdGFuY2UpCiAgICAgIyBT
ZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCi0gICAgdGFn
UmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIHByZXNl
cnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBsb2FkV2FzbUluc3RhbmNlKCkKQEAgLTQ1
Niw3ICs0NjQsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAgcmVzdG9yZUNhbGxlZVNh
dmVzVXNlZEJ5V2FzbSgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAg
ICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZz
ZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkg
KiBQdHJTaXplLCB3czAKKyAgICAgICAgam1wIFt3czBdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcK
KyAgICBlbHNlCisgICAgICAgIHJldAorICAgIGVuZAogZW5kCiAKICMgRW50cnkgcG9pbnQKQEAg
LTQ5Nyw3ICs1MTAsMTMgQEAgb3Aod2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
LCBtYWNybyAoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9h
ZE9mZnNldFtjZnJdLCBhMwogICAgIGNDYWxsNChfc2xvd19wYXRoX3dhc21fdGhyb3dfZXhjZXB0
aW9uKQogCi0gICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgaWYgQVJNNjRF
CisgICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHBy
IEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpleGNlcHRp
b25IYW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdh
dGVQdHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxzZQorICAgICAgICBqbXAg
cjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbmQKIGVuZCkKIAogIyBEaXNhYmxlIHdp
ZGUgdmVyc2lvbiBvZiBuYXJyb3ctb25seSBvcGNvZGVzCkBAIC03MDUsNyArNzI0LDM4IEBAIG1h
Y3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3RvcmVXYXNtSW5zdGFuY2Up
CiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1Np
emUsIHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJUYWcKKworICAgICAgICAg
ICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKKyAgICAgICAgICAg
ICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisg
ICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9m
ZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlKSAq
IFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUl
OgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisg
ICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsV2lkZTE2KCkK
KyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQdHJTaXplLCB3czEKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAg
ICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAg
ICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRlMzIoKQorICAgICAgICAg
ICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29u
ZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhw
ciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAg
ICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xv
d1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAg
IF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAgICAgICAg
ICAgY2FsbCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAgICAgICAgICAgIGVuZAor
CisgICAgICAgICAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lkZTE2LCBjYWxsV2lkZTMy
LCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICAgICAgZGVmaW5lUmV0dXJuTGFi
ZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkKIAogICAgICAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHdzMQogICAgICAgICAgICAgbG9hZGkgV2FzbTo6RnVuY3Rpb25D
b2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBmOWU1NzMyZmFmMTRiMDgwOWJjMmJiNmMxOWIx
YzgwMmM1OWY4MzAyLi5mZjU3YjZhNDhhZTk3NTViNGMxMDU0ODU0M2Q3NTlmNDQzNjI3ODcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMzcsMzggKzM3
LDQ1IEBACiAjCiAjIEdQUiBjb252ZW50aW9ucywgdG8gbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVDoK
ICMKLSMgIHgwICA9PiB0MCwgYTAsIHIwCi0jICB4MSAgPT4gdDEsIGExLCByMQotIyAgeDIgID0+
IHQyLCBhMgotIyAgeDMgID0+IHQzLCBhMwotIyAgeDQgID0+IHQ0Ci0jICB4NSAgPT4gdDUKKyMg
IHgwICA9PiB0MCwgYTAsIHdhMCwgcjAKKyMgIHgxICA9PiB0MSwgYTEsIHdhMSwgcjEKKyMgIHgy
ICA9PiB0MiwgYTIsIHdhMgorIyAgeDMgID0+IHQzLCBhMywgd2EzCisjICB4NCAgPT4gdDQsIGE0
LCB3YTQKKyMgIHg1ICA9PiB0NSwgYTUsIHdhNQorIyAgeDYgID0+IHQ2LCBhNiwgd2E2CisjICB4
NyAgPT4gdDcsIGE3LCB3YTcKKyMgIHg4ICA9PiB3czAKKyMgIHg5ICA9PiB3czEKICMgeDEzICA9
PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTYgID0+ICAgICAgICAgICAgICAgICAg
KHNjcmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKLSMgeDI2ICA9
PiAgICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3IxIChudW1i
ZXJUYWcpCi0jIHgyOCAgPT4gICAgICAgICAgICAgY3NyMiAobm90Q2VsbE1hc2spCisjIHgyNSAg
PT4gICAgICAgICAgICAgY3NyNiAobWV0YWRhdGFUYWJsZSkKKyMgeDI2ICA9PiAgICAgICAgICAg
ICBjc3I3IChQQikKKyMgeDI3ICA9PiAgICAgICAgICAgICBjc3I4IChudW1iZXJUYWcpCisjIHgy
OCAgPT4gICAgICAgICAgICAgY3NyOSAobm90Q2VsbE1hc2spCiAjIHgyOSAgPT4gY2ZyCiAjICBz
cCAgPT4gc3AKICMgIGxyICA9PiBscgogIwogIyBGUFIgY29udmVudGlvbnMsIHRvIG1hdGNoIHRo
ZSBiYXNlbGluZSBKSVQ6CiAjCi0jICBxMCAgPT4gZnQwLCBmYTAsIGZyCi0jICBxMSAgPT4gZnQx
LCBmYTEKLSMgIHEyICA9PiBmdDIsIGZhMgotIyAgcTMgID0+IGZ0MywgZmEzCi0jICBxNCAgPT4g
ZnQ0ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxNSAgPT4gZnQ1ICAgICAgICAg
ICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAgICAgICAgIChPbmx5IHRoZSBs
b3dlciA2NCBiaXRzKQotIyAgcTkgID0+IGNzZnIxICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQg
Yml0cykKLSMgcTEwICA9PiBjc2ZyMiAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0j
IHExMSAgPT4gY3NmcjMgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTIgID0+
IGNzZnI0ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEzICA9PiBjc2ZyNSAg
ICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNCAgPT4gY3NmcjYgICAgICAgIChP
bmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTUgID0+IGNzZnI3ICAgICAgICAoT25seSB0aGUg
bG93ZXIgNjQgYml0cykKKyMgIHEwICA9PiBmdDAsIGZhMCwgd2ZhMCwgZnIKKyMgIHExICA9PiBm
dDEsIGZhMSwgd2ZhMQorIyAgcTIgID0+IGZ0MiwgZmEyLCB3ZmEyCisjICBxMyAgPT4gZnQzLCBm
YTMsIHdmYTMKKyMgIHE0ICA9PiBmdDQsICAgICAgd2ZhNCAgICAgICAgICAodW51c2VkIGluIGJh
c2VsaW5lKQorIyAgcTUgID0+IGZ0NSwgICAgICB3ZmE1ICAgICAgICAgICh1bnVzZWQgaW4gYmFz
ZWxpbmUpCisjICBxNiAgPT4gICAgICAgICAgIHdmYTYgICAgICAgICAgKHVudXNlZCBpbiBiYXNl
bGluZSkKKyMgIHE3ICA9PiAgICAgICAgICAgd2ZhNyAgICAgICAgICAodW51c2VkIGluIGJhc2Vs
aW5lKQorIyAgcTggID0+IGNzZnIwICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2
NCBiaXRzKQorIyAgcTkgID0+IGNzZnIxICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dl
ciA2NCBiaXRzKQorIyBxMTAgID0+IGNzZnIyICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBs
b3dlciA2NCBiaXRzKQorIyBxMTEgID0+IGNzZnIzICAgICAgICAgICAgICAgICAgIChPbmx5IHRo
ZSBsb3dlciA2NCBiaXRzKQorIyBxMTIgID0+IGNzZnI0ICAgICAgICAgICAgICAgICAgIChPbmx5
IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTMgID0+IGNzZnI1ICAgICAgICAgICAgICAgICAgIChP
bmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2ICAgICAgICAgICAgICAgICAg
IChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTUgID0+IGNzZnI3ICAgICAgICAgICAgICAg
ICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQogIyBxMzEgID0+IHNjcmF0Y2gKIAogZGVmIGFy
bTY0R1BSTmFtZShuYW1lLCBraW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg1ZjVhMzJkNTEwZmM4MGMwNjM4YTM5ZWQ2NTFhZWY1YTlkMGZmZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTAs
MCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVRfT1BFUkFU
SU9OX1ZBTElEQVRJT04pCisKKyNkZWZpbmUgSlNDX1VUSUxJVFlfR0FURVModikgXAorICAgIHYo
aml0Q2FnZVB0ciwgTm9QdHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVB0clRhZywgTm9Q
dHJUYWcpIFwKKyAgICB2KHRhaWxDYWxsSlNFbnRyeVNsb3dQYXRoUHRyVGFnLCBOb1B0clRhZykg
XAorICAgIHYobG9vcE9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYoZW50cnlPU1JFbnRyeSwg
Tm9QdHJUYWcpIFwKKyAgICB2KHdhc21PU1JFbnRyeSwgTm9QdHJUYWcpIFwKKyAgICB2KGV4Y2Vw
dGlvbkhhbmRsZXIsIE5vUHRyVGFnKSBcCisgICAgdihyZXR1cm5Gcm9tTExJbnQsIE5vUHRyVGFn
KSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja1VudGFnLCBOb1B0
clRhZykgXAorICAgIHYobGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tUYWcsIE5v
UHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
VW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrVGFnLCBOb1B0clRhZykgXAorICAgIHYodm1FbnRyeVRvSmF2YVNjcmlwdCwgSlNF
bnRyeVB0clRhZykgXAorICAgIHYodm1FbnRyeVRvTmF0aXZlLCBIb3N0RnVuY3Rpb25QdHJUYWcp
IFwKKworI2RlZmluZSBKU0NfSlNfR0FURV9PUENPREVTKHYpIFwKKyAgICB2KG9wX2NhbGwsIEpT
RW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX3RhaWxfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAg
IHYob3BfY29uc3RydWN0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9uZXh0
LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuLCBKU0VudHJ5UHRyVGFn
KSBcCisgICAgdihvcF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYo
b3BfdGFpbF9jYWxsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY29u
c3RydWN0X3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfY2FsbF92YXJh
cmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsX3Zh
cmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90YWlsX2NhbGxf
Zm9yd2FyZF9hcmd1bWVudHNfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihv
cF9jb25zdHJ1Y3RfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2
KG9wX2NhbGxfZXZhbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9wX2l0
ZXJhdG9yX25leHRfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF9pdGVy
YXRvcl9vcGVuX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorCisjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQorCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BDT0RFUyh2KSBcCisgICAgdih3
YXNtX2NhbGwsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX25vX3Rs
cywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfaW5kaXJlY3QsIEpT
RW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX2luZGlyZWN0X25vX3Rscywg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisKKyNlbHNlCisjZGVmaW5lIEpTQ19XQVNNX0dBVEVf
T1BDT0RFUyh2KQorI2VuZGlmCisKK2VudW0gY2xhc3MgR2F0ZSA6IHVpbnQ4X3QgeworI2RlZmlu
ZSBKU0NfREVGSU5FX0dBVEVfRU5VTShnYXRlTmFtZSwgdGFnKSBnYXRlTmFtZSwKKyNkZWZpbmUg
SlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKGdhdGVOYW1lLCB0YWcpIGdhdGVOYW1lLCBnYXRl
TmFtZSMjX3dpZGUxNiwgZ2F0ZU5hbWUjI193aWRlMzIsCisgICAgSlNDX1VUSUxJVFlfR0FURVMo
SlNDX0RFRklORV9HQVRFX0VOVU0pCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhKU0NfREVGSU5F
X09QQ09ERV9HQVRFX0VOVU0pCisgICAgSlNDX1dBU01fR0FURV9PUENPREVTKEpTQ19ERUZJTkVf
T1BDT0RFX0dBVEVfRU5VTSkKKyN1bmRlZiBKU0NfREVGSU5FX0dBVEVfRU5VTQorfTsKKworI2Rl
ZmluZSBKU0NfQ09VTlQoZ2F0ZU5hbWUsIHRhZykgKyAxCisjZGVmaW5lIEpTQ19PUENPREVfQ09V
TlQoZ2F0ZU5hbWUsIHRhZykgKyAzCitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9m
R2F0ZXMgPSAwIEpTQ19VVElMSVRZX0dBVEVTKEpTQ19DT1VOVCkgSlNDX0pTX0dBVEVfT1BDT0RF
UyhKU0NfT1BDT0RFX0NPVU5UKSBKU0NfV0FTTV9HQVRFX09QQ09ERVMoSlNDX09QQ09ERV9DT1VO
VCk7CisjdW5kZWYgSlNDX0NPVU5UCisjdW5kZWYgSlNDX09QQ09ERV9DT1VOVAorI2Vsc2UKKy8v
IEtlZXAgaXQgbm9uLXplcm8gdG8gbWFrZSBKU0NDb25maWcncyBhcnJheSBub3QgWzBdLgorc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkdhdGVzID0gMTsKKyNlbmRpZgorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCmluZGV4IDVhNDczMTdjNjJh
NWViYTY2NjY3NTczNWY3NzQwMzUwMGM2ODBiNDEuLjdmOTZlYzUyZWQyMWFmZGUzM2RhMTMwZGI3
ZGQ0Njk0ZWM2MTk4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZp
Zy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiR2F0ZS5o
IgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIk9wdGlvbnNMaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL1dURkNvbmZpZy5oPgpAQCAtOTIsNiArOTMsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAg
ICAgICAgT3Bjb2RlIG9wY29kZU1hcFtudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bjb2RlSURzXTsK
ICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUxNltudW1PcGNvZGVJRHMgKyBudW1XYXNtT3Bj
b2RlSURzXTsKICAgICAgICAgT3Bjb2RlIG9wY29kZU1hcFdpZGUzMltudW1PcGNvZGVJRHMgKyBu
dW1XYXNtT3Bjb2RlSURzXTsKKyAgICAgICAgY29uc3Qgdm9pZCogZ2F0ZU1hcFtudW1iZXJPZkdh
dGVzXTsKICAgICB9IGxsaW50OwogCiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19E
RUJVR0dJTkcpCkBAIC0xMTcsNiArMTE5LDcgQEAgZXh0ZXJuICJDIiBKU19FWFBPUlRfUFJJVkFU
RSBDb25maWcgZ19qc2NDb25maWc7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmln
T3Bjb2RlTWFwID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcCk7CiBjb25z
dGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTE2ID0gb2Zmc2V0b2Yo
SlNDOjpDb25maWcsIGxsaW50Lm9wY29kZU1hcFdpZGUxNik7CiBjb25zdGV4cHIgc2l6ZV90IG9m
ZnNldE9mSlNDQ29uZmlnT3Bjb2RlTWFwV2lkZTMyID0gb2Zmc2V0b2YoSlNDOjpDb25maWcsIGxs
aW50Lm9wY29kZU1hcFdpZGUzMik7Citjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlNDQ29uZmln
R2F0ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5nYXRlTWFwKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1B0clRhZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcu
Y3BwCmluZGV4IGE5NDE2MzRiZmZkYTdhNDYzMTU2YzQ1OTA2Zjc3NDliZWEyMjZhYzcuLmVhYjM3
ZWU4Nzg0MTY0OWJiZDkxYWM0OTQyM2U5ZTNiZDdjNTJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmNwcApAQCAtMjgsNiArMjgsMTIgQEAKIAogI2luY2x1
ZGUgIkpTQ0NvbmZpZy5oIgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPG1hY2hp
bmUvY3B1X2NhcGFiaWxpdGllcy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBDUFUoQVJNNjRF
KSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKQEAgLTM1LDggKzQxLDEwIEBAIG5hbWVzcGFj
ZSBKU0Mgewogc3RhdGljIGNvbnN0IGNoYXIqIHRhZ0ZvclB0cihjb25zdCB2b2lkKiBwdHIpCiB7
CiAjZGVmaW5lIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTKHRhZywgY2FsbGVlVHlwZSwgY2Fs
bGVyVHlwZSkgXAotICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6OlB0clRh
Z0FjdGlvbjo6Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikpKSBcCi0g
ICAgICAgIHJldHVybiAjdGFnOworICAgIGlmIChjYWxsZXJUeXBlICE9IFB0clRhZ0NhbGxlclR5
cGU6OkpJVCB8fCBjYWxsZWVUeXBlICE9IFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgeyBcCisg
ICAgICAgIGlmIChwdHIgPT0gV1RGOjp0YWdDb2RlUHRySW1wbDxXVEY6OlB0clRhZ0FjdGlvbjo6
Tm9Bc3NlcnQsIEpTQzo6dGFnPihyZW1vdmVDb2RlUHRyVGFnKHB0cikpKSBcCisgICAgICAgICAg
ICByZXR1cm4gI3RhZzsgXAorICAgIH0KICAgICBGT1JfRUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9O
QU1FX0lGX1RBR19NQVRDSEVTKQogI3VuZGVmIFJFVFVSTl9OQU1FX0lGX1RBR19NQVRDSEVTCiAg
ICAgcmV0dXJuIG51bGxwdHI7IC8vIE1hdGNoaW5nIHRhZyBub3QgZm91bmQuCkBAIC02MSw0ICs2
OSwzMiBAQCB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAoKQogCiAjZW5kaWYgLy8gQ1BVKEFS
TTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiAKKyNpZiBDUFUoQVJNNjRFKQorCitQ
dHJUYWdDYWxsZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnIHRhZykKK3sKKyNkZWZpbmUgUkVUVVJO
X1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBjYXNlIF90YWdO
YW1lOiByZXR1cm4gY2FsbGVyVHlwZTsKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgICBGT1Jf
RUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworICAgIH0KKyN1bmRlZiBSRVRVUk5f
UFRSVEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlOworfQorCitQ
dHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnIHRhZykKK3sKKyNkZWZpbmUgUkVUVVJO
X1BUUlRBR19UWVBFKF90YWdOYW1lLCBjYWxsZWVUeXBlLCBjYWxsZXJUeXBlKSBjYXNlIF90YWdO
YW1lOiByZXR1cm4gY2FsbGVlVHlwZTsKKyAgICBzd2l0Y2ggKHRhZykgeworICAgICAgICBGT1Jf
RUFDSF9KU0NfUFRSVEFHKFJFVFVSTl9QVFJUQUdfVFlQRSkKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworICAgIH0KKyN1bmRlZiBSRVRVUk5f
UFRSVEFHX1RZUEUKKyAgICByZXR1cm4gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlOworfQorCisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NQdHJUYWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ1B0clRhZy5oCmluZGV4IGRmOGI0MDIyNjZlMGUwMjAxOWFmMzVmNjhlOTFmYWE3OGJlNzkz
NWIuLjMzOGFhYWVhZTZhMTI1NTM2NDRlZDU1NzNhZjViMWJjNGYwMzkwNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCkBAIC0yNyw0NiArMjcsNTMgQEAKIAog
I2luY2x1ZGUgIkpJVE9wZXJhdGlvbkxpc3QuaCIKICNpbmNsdWRlIDx3dGYvUHRyVGFnLmg+Cisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRk
aXRpb25zLmg+CisjZW5kaWYKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKK2V4dGVybiAiQyIgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCogaml0Q2FnZVB0cih2b2lkKiBwb2ludGVyLCB1aW50cHRyX3Qg
dGFnKTsKKyNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdXNpbmcgUHRyVGFnID0gV1RGOjpQ
dHJUYWc7CiAKICNkZWZpbmUgRk9SX0VBQ0hfSlNDX1BUUlRBRyh2KSBcCi0gICAgLyogTmF0aXZl
IE5vbmUgKi8gXAorICAgIC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5vbmUgKi8gXAogICAgIHYo
RE9NSklURnVuY3Rpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRGlzYXNzZW1ibHlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoUHV0VmFsdWVQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAot
ICAgIC8qIEpJVCBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpOb25lICovIFwK
ICAgICB2KEIzQ29tcGlsYXRpb25QdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFn
Q2FsbGVyVHlwZTo6Tm9uZSkgXAogICAgIHYoRXhlY3V0YWJsZU1lbW9yeVB0clRhZywgUHRyVGFn
Q2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCiAgICAgdihMaW5rQnVm
ZmVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUp
IFwKLSAgICAvKiBOYXRpdmUgTmF0aXZlICovIFwKKyAgICB2KFlhcnI4Qml0UHRyVGFnLCBQdHJU
YWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKKyAgICB2KFlhcnIx
NkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpOb25l
KSBcCisgICAgdihZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpOb25lKSBcCisgICAgdihZYXJyTWF0Y2hPbmx5MTZCaXRQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAg
IC8qIENhbGxlZTpOYXRpdmUgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAgICAgdihCeXRlY29kZVB0clRh
ZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwK
ICAgICB2KEpJVFByb2JlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0Nh
bGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVFeGVjdXRvclB0clRhZywgUHRyVGFn
Q2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJ
VFByb2JlU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAotICAgIHYoU2xvd1BhdGhQdHJU
YWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBc
Ci0gICAgLyogSklUIE5hdGl2ZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJVCBDYWxsZXI6TmF0aXZl
ICovIFwKICAgICB2KE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklU
LCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKLSAgICAvKiBOYXRpdmUgSklUICovIFwKKyAg
ICB2KFlhcnJFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJU
eXBlOjpOYXRpdmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpKSVQgKi8gXAogICAg
IHYoSG9zdEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0Nh
bGxlclR5cGU6OkpJVCkgXAogICAgIHYoT3BlcmF0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoSklUVG9OYXRpdmVHYXRl
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkg
XAotICAgIC8qIEpJVCBKSVQgKi8gXAorICAgIC8qIENhbGxlZTpKSVQgQ2FsbGVyOkpJVCAqLyBc
CiAgICAgdihFeGNlcHRpb25IYW5kbGVyUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoSklUVGh1bmtQdHJUYWcsIFB0clRhZ0NhbGxl
ZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKSVRTdHViUm91dGlu
ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwK
ICAgICB2KEpTRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVy
VHlwZTo6SklUKSBcCisgICAgdihKU0VudHJ5U2xvd1BhdGhQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKU0ludGVybmFsUHRyVGFn
LCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYo
SlNTd2l0Y2hQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6
SklUKSBcCiAgICAgdihPU1JFbnRyeVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9TUkV4aXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5
cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihXYXNtRW50cnlQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZ
YXJyOEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKLSAgICB2KFlhcnIxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICB2KFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnLCBQdHJU
YWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAotICAgIHYoWWFyck1h
dGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAogICAgIHYoWWFyckJhY2t0cmFja1B0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKIAogI2RlZmluZSBKU0NfREVDTEFSRV9QVFJU
QUcobmFtZSwgdHlwZSwgdGFyZ2V0KSBXVEZfREVDTEFSRV9QVFJUQUcobmFtZSkKQEAgLTEwOCwx
OCArMTE1LDI4IEBAIEZPUl9FQUNIX0pTQ19QVFJUQUcoSlNDX0RFQ0xBUkVfUFRSVEFHKQogI3By
YWdtYSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBQdHJUYWdDYWxs
ZXJUeXBlIGNhbGxlclR5cGUoUHRyVGFnKTsKK0pTX0VYUE9SVF9QUklWQVRFIFB0clRhZ0NhbGxl
ZVR5cGUgY2FsbGVlVHlwZShQdHJUYWcpOworCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnLCBQdHJUYWdD
YWxsZWVUeXBlIGNhbGxlZVR5cGUsIFB0clRhZ0NhbGxlclR5cGUgY2FsbGVyVHlwZSwgdHlwZW5h
bWUgUHRyVHlwZT4KIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUgdGFnSlNDQ29kZVB0cklt
cGwoUHRyVHlwZSBwdHIpCiB7CiAgICAgc3RhdGljX2Fzc2VydChjYWxsZXJUeXBlID09IFB0clRh
Z0NhbGxlclR5cGU6OkpJVCk7CiAgICAgaWYgY29uc3RleHByIChjYWxsZWVUeXBlID09IFB0clRh
Z0NhbGxlZVR5cGU6Ok5hdGl2ZSkgewotICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyAhPSBKSVRU
b05hdGl2ZUdhdGVQdHJUYWcpIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQodGFnID09IE9w
ZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKTsKLSAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykKLSAgICAgICAgICAgICAgICBK
SVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Ci0g
ICAgICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlvblB0clRhZykK
LSAgICAgICAgICAgICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9z
dEZ1bmN0aW9uKHB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgc3RhdGljX2Fzc2VydCh0YWcgPT0g
T3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAgICAgICBp
ZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBKSVRPcGVy
YXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7CisgICAgICAg
IGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAgICAgICAg
ICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIp
OworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4oSklUT3BlcmF0aW9u
TGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0cikpKTsKKyNl
bmRpZgorICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0
aW9uczo6dXNlSklUQ2FnZSgpKQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJU
eXBlPihqaXRDYWdlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyKSwgdGFnKSk7CisjZW5kaWYK
ICAgICB9CiAgICAgcmV0dXJuIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8dGFnPihwdHIpOwog
fQpAQCAtMTI5LDE3ICsxNDYsNjQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgUHRyVHlwZSB1bnRh
Z0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQoY2FsbGVy
VHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAoY2FsbGVl
VHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29uc3RleHBy
ICh0YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7
Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCi0gICAg
ICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJh
dGlvbihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVu
Y3Rpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2Uo
KS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHRhZyA9
PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0clRhZyk7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAodGFnID09IE9wZXJhdGlvblB0clRhZykKKyAgICAgICAgICAgIEpJVE9w
ZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRPcGVyYXRpb24ocHRyKTsKKyAgICAg
ICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpCisgICAgICAg
ICAgICBKSVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSG9zdEZ1bmN0aW9uKHB0
cik7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiaXR3aXNlX2Nhc3Q8UHRyVHlwZT4o
SklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHB0cikpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUNvZGVQdHJUYWcocHRy
KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoSklUX0NBR0Up
CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpIHsKKyAgICAgICAgICAgIFB0clR5
cGUgcmVtb3ZlZCA9IHJlbW92ZUNvZGVQdHJUYWcocHRyKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCh0YWdKU0NDb2RlUHRySW1wbDx0YWcsIGNhbGxlZVR5cGUsIGNhbGxlclR5cGU+KHJl
bW92ZWQpKSA9PSBwdHIpOworICAgICAgICAgICAgcmV0dXJuIHJlbW92ZWQ7CiAgICAgICAgIH0K
KyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gV1RGOjp1bnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRh
Zz4ocHRyKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZT4KK2lubGluZSBQdHJUeXBl
IHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbChQdHJUeXBlIHB0ciwgY29uc3Qg
dm9pZCogc3RhY2tQb2ludGVyKQoreworICAgIEFTU0VSVChwdHIpOworICAgIFVOVVNFRF9QQVJB
TShzdGFja1BvaW50ZXIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6
dXNlSklUQ2FnZSgpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KEpTQ19K
SVRfQ0FHRShiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0ciksIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHN0YWNrUG9pbnRlcikpKTsKKyNlbmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJuIHB0
cmF1dGhfc2lnbl91bmF1dGhlbnRpY2F0ZWQocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVu
ZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIpKTsKKyNlbHNlCisg
ICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgor
aW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRy
VHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisg
ICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgeworICAgICAgICBQdHJUeXBlIHVuY2FnZWQg
PSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHRhZ0NvZGVQ
dHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCh1bmNhZ2VkLCBzdGFja1BvaW50ZXIpID09IHB0
cik7CisgICAgICAgIHJldHVybiB1bmNhZ2VkOworICAgIH0KKyNlbmRpZgorI2lmIENQVShBUk02
NEUpCisgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRoX2F1dGgocHRyLCBwdHJhdXRoX2tleV9w
cm9jZXNzX2RlcGVuZGVudF9jb2RlLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihzdGFja1BvaW50ZXIp
KTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCiAjaWYgQ1BVKEFSTTY0RSkg
JiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCiB2b2lkIGluaXRpYWxpemVQdHJUYWdMb29rdXAo
KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRj
aFJlc3VsdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaApp
bmRleCBhZGQyNjRlOTA5NzViMjY1ZmQ1YmUxMGYyNjMyZmQ3NWUyODZjODFjLi5mMzA1ZTRhMTY0
ZDAxZmZiMWY4MWM3OWViNWU0OWYwNDViODE4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGNoUmVzdWx0LmgKQEAgLTM0LDcgKzM0LDEwIEBAIHN0cnVjdCBNYXRjaFJl
c3VsdDsKICNpZiBDUFUoQUREUkVTUzMyKQogdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gdWlu
dDY0X3Q7CiAjZWxzZQotdXNpbmcgRW5jb2RlZE1hdGNoUmVzdWx0ID0gTWF0Y2hSZXN1bHQ7Citz
dHJ1Y3QgRW5jb2RlZE1hdGNoUmVzdWx0IHsKKyAgICBzaXplX3Qgc3RhcnQ7CisgICAgc2l6ZV90
IGVuZDsKK307CiAjZW5kaWYKIAogc3RydWN0IE1hdGNoUmVzdWx0IHsKQEAgLTU2LDYgKzU5LDEy
IEBAIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgICAgICwgZW5kKGJpdHdpc2VfY2FzdDxNYXRj
aFJlc3VsdD4obWF0Y2gpLmVuZCkKICAgICB7CiAgICAgfQorI2Vsc2UKKyAgICBBTFdBWVNfSU5M
SU5FIE1hdGNoUmVzdWx0KEVuY29kZWRNYXRjaFJlc3VsdCBtYXRjaCkKKyAgICAgICAgOiBzdGFy
dChtYXRjaC5zdGFydCkKKyAgICAgICAgLCBlbmQobWF0Y2guZW5kKQorICAgIHsKKyAgICB9CiAj
ZW5kaWYKIAogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIE1hdGNoUmVzdWx0IGZhaWxlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDBkMmY1YWNmNzlj
ZGY1NzQ5OGU2YTczYzA2NzJkNmRkNGJmODg0NzguLmU3MTdkMzBlNjRkMTU5NzM0NzkyYTNmNDhi
OTIxNjU3MmZiNDAzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
Y3BwCkBAIC01MCw2ICs1MCwxMSBAQAogI2luY2x1ZGUgPGNydF9leHRlcm5zLmg+CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2Fn
ZUFkZGl0aW9ucy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1X2NhcGFiaWxpdGllcy5oPgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzkyLDYg
KzM5Nyw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVBbGxKSVRPcHRpb25zKCkKICAgICBPcHRpb25z
Ojp1c2VPTUdKSVQoKSA9IGZhbHNlOwogICAgIE9wdGlvbnM6OnVzZURPTUpJVCgpID0gZmFsc2U7
CiAgICAgT3B0aW9uczo6dXNlUmVnRXhwSklUKCkgPSBmYWxzZTsKKyAgICBPcHRpb25zOjp1c2VK
SVRDYWdlKCkgPSBmYWxzZTsKIH0KIAogdm9pZCBPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRP
cHRpb25zKCkKQEAgLTExMTQsNCArMTEyMCwxMCBAQCBib29sIE9wdGlvblJlYWRlcjo6T3B0aW9u
OjpvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorYm9vbCBjYW5Vc2VKSVRDYWdlKCkgeyByZXR1
cm4gSlNDX0pJVF9DQUdFX1ZFUlNJT04oKTsgfQorI2Vsc2UKK2Jvb2wgY2FuVXNlSklUQ2FnZSgp
IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBiZTg1OWVhOTFkY2Fl
OGMyMjcxOTAzZWEzYjAxZjZjZDBkNTFmNTkzLi4yMjVlMjI0ODNkMDlhYzIwM2JjYmVmZTVjYmE4
ZDc1MmYwYWZlMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKQEAgLTQzLDYgKzQzLDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlT
dHJlYW1pbmdBcGkgPSB0cnVlOwogY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJl
YW1pbmdBcGkgPSBmYWxzZTsKICNlbmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVz
ZUpJVENhZ2UoKTsKKwogLy8gSG93IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT0KIC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8g
YmVsb3cgZGVmaW5lcyBhIGxpc3Qgb2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKQEAgLTUyMCw2
ICs1MjIsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9
IGZhbHNlOwogICAgIHYoVW5zaWduZWQsIHNlZWRGb3JMSUNNRnV6emVyLCA0MjQyNDIsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5
LCAwLjUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVy
c09uR2xvYmFsT2JqZWN0Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAg
IHYoQm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwK
IAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggOWM0YjU5NTQ2ZTZmOTYw
YWI3NThlM2E1M2YyYjYxZGJiNjc0YzIxZS4uOTA2MjExMjFhODFlMzFiNTIxNzViNTk3ZDliYzQx
MjY0ODY3NjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRo
cy5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJ
bnN0YW5jZSwgY2FsbFRhcmdldCwgY2FsbFRhcmdldFRhZykgZG8geyBcCi0gICAgICAgIFdBU01f
UkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFnPihj
YWxsVGFyZ2V0KSksIHRhcmdldEluc3RhbmNlKTsgXAorICAgICAgICBXQVNNX1JFVFVSTl9UV08o
KHJldGFnQ29kZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxU
YXJnZXQpKSwgdGFyZ2V0SW5zdGFuY2UpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZp
bmUgQ09ERV9CTE9DSygpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5k
ZXggMjJiZjY2ZDhjODIyZGE5MWUwMzE4MDZhMmY2OWQzNmU0YmQ4ZjdiZC4uOTRkMzAyYWVhZmQ1
MTZhNWIzZmM3ZjRiZjVmNzk1YTNmNTZjYTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAKQEAgLTQwLDYgKzQwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgWWFyciB7CiAKKyNpZiBDUFUoQVJNNjQpCitKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihf
SklUVGFyZ2V0X3ZtRW50cnlUb1lhcnJKSVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsK
KyNlbmRpZgorCiBNYXRjaGluZ0NvbnRleHRIb2xkZXI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcihW
TSYgdm0sIFlhcnJDb2RlQmxvY2sqIHlhcnJDb2RlQmxvY2ssIE1hdGNoRnJvbSBtYXRjaEZyb20p
CiAgICAgOiBtX3ZtKHZtKQogewpAQCAtMzc0Niw5ICszNzUwLDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgIHB1c2goWDg2UmVnaXN0ZXJzOjplY3gpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJN
NjQpCi0gICAgICAgIHRhZ1JldHVybkFkZHJlc3MoKTsKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vy
cm9nYXRlUGFpcnMpIHsKLSAgICAgICAgICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVy
LCBsaW5rUmVnaXN0ZXIpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHgxMDAwMCks
IHN1cHBsZW1lbnRhcnlQbGFuZXNCYXNlKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMy
KDB4ZDgwMCksIGxlYWRpbmdTdXJyb2dhdGVUYWcpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoMHhkYzAwKSwgdHJhaWxpbmdTdXJyb2dhdGVUYWcpOwpAQCAtMzgwMyw4ICszODA1LDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwog
ICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYnApOwogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAg
ICBpZiAobV9kZWNvZGVTdXJyb2dhdGVQYWlycykKLSAgICAgICAgICAgIHBvcFBhaXIoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIGxpbmtSZWdpc3Rlcik7CisgICAgICAgIC8vIERvIG5vdGhpbmcKICNl
bGlmIENQVShBUk1fVEhVTUIyKQogICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyOCk7CiAgICAg
ICAgIHBvcChBUk1SZWdpc3RlcnM6OnI2KTsKQEAgLTM4MTMsNyArMzgxNCwxMyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICNlbGlmIENQVShNSVBTKQogICAgICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYK
KworI2lmIENQVShBUk02NCkKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJldGFnQ29kZVB0
cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KCZ2bUVudHJ5VG9ZYXJy
SklUQWZ0ZXIpKSwgcmVnVDApOworICAgICAgICBmYXJKdW1wKHJlZ1QwLCBPcGVyYXRpb25QdHJU
YWcpOworI2Vsc2UKICAgICAgICAgcmV0KCk7CisjZW5kaWYKICAgICB9CiAKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA2NjQyOGUwNjYzZjMzMjA5MTc3ODFk
YmI5ZDBjNzMwZDJiNmQ2ODViLi4xNWI3YmQ2YTI2ZmY2ZTRiMDAxMjEyOTg5ZThmZGNlZWE1YTRi
OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC03Niw2ICs3Niw5IEBA
IGNsYXNzIE1hdGNoaW5nQ29udGV4dEhvbGRlciB7CiAjZW5kaWYKIH07CiAKK2V4dGVybiAiQyIg
RW5jb2RlZE1hdGNoUmVzdWx0IHZtRW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCogaW5wdXQsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRl
eHRIb2xkZXIqIG1hdGNoaW5nQ29udGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7CitleHRlcm4g
IkMiIHZvaWQgdm1FbnRyeVRvWWFyckpJVEFmdGVyKHZvaWQpOworCiBjbGFzcyBZYXJyQ29kZUJs
b2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShZYXJyQ29kZUJsb2NrKTsKQEAgLTEwOSwyNSArMTEyLDQxIEBAIGNsYXNzIFlhcnJDb2Rl
QmxvY2sgewogICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0
SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENv
ZGUoKSk7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRy
eVRvWWFyckpJVChpbnB1dCwgc3RhcnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0
LCByZXRhZ0NvZGVQdHI8WWFycjhCaXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWY4LmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNo
UmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlOCwgWWFycjhCaXRQdHJUYWc+KG1f
cmVmOC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91
dHB1dCwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3Vs
dCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgaW50KiBvdXRwdXQsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZSgpKTsKKyNpZiBDUFUoQVJNNjQp
CisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFy
dCwgbGVuZ3RoLCBvdXRwdXQsICZtYXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyMTZC
aXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSkpKTsKKyNlbHNlCiAgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlv
blB0cjxZYXJySklUQ29kZTE2LCBZYXJyMTZCaXRQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29u
dGV4dCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBM
Q2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5nQ29u
dGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhC
aXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNo
UmVzdWx0KHZtRW50cnlUb1lhcnJKSVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsICZt
YXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgWWFy
ckVudHJ5UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7
CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFy
ckpJVENvZGVNYXRjaE9ubHk4LCBZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0
ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBl
eGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0
aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NEUpCisgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVu
Z3RoLCBudWxscHRyLCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25s
eTE2Qml0UHRyVGFnLCBZYXJyRW50cnlQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50
YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHkxNiwgWWFyck1hdGNoT25seTE2Qml0
UHRyVGFnPihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwg
c3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9
CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9PU0FsbG9jYXRvci5oIGIvU291cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAppbmRleCA3NzEz
NjJiOTJhMmU1MjI5Mzk4NGUxMTY1MWJkMmE5MzkzZDk4M2EyLi4yNjg4YTRlZmRmODE3ZGI3YWY2
NjY5ODc1ZGYyM2E3OTg5MzZhYTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9j
YXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgKQEAgLTQzLDcgKzQzLDcg
QEAgY2xhc3MgT1NBbGxvY2F0b3IgewogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZh
dGlvbiwKICAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29t
bWl0dGVkIHN0YXRlLiByZXNlcnZlVW5jb21taXR0ZWQgcmV0dXJucyB0bwogICAgIC8vIHlvdSBt
ZW1vcnkgdGhhdCBpcyB6ZXJvZWQuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
KiByZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3Vh
cmRQYWdlcyA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJl
c2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRh
YmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQg
PSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsK
IAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVj
b21taXQgYSByZWdpb24gb2YgVk0gKHVuY29tbWl0dGVkIFZNIHNob3VsZApAQCAtNTUsMjcgKzU1
LDI3IEBAIGNsYXNzIE9TQWxsb2NhdG9yIHsKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1t
ZXRyaWM7IHJlc2VydmVBbmRDb21taXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0
ZSwKICAgICAvLyBkZWNvbW1pdEFuZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lv
biBvZiBWTSBhbGxvY2F0ZWQgYnkgYSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1l
bW9yeSBtdXN0IGFsbCBjdXJyZW50bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNh
Z2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBV
bmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxz
ZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9
IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwg
c2l6ZV90IHNpemUpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZl
QW5kQ29tbWl0L2RlY29tbWl0QW5kUmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFu
CiAgICAgLy8gY29tbWl0dGluZy9kZWNvbW1pdHRpbmcgdGhlIGVudGlyZSByZWdpb24gYWRkaXRp
b25hbCBwYXJhbWV0ZXJzIGFsbG93IGEgc3VicmVnaW9uIHRvIGJlCiAgICAgLy8gc3BlY2lmaWVk
LgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChz
aXplX3QgcmVzZXJ2ZVNpemUsIHNpemVfdCBjb21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2Fn
ZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJl
c2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wg
d3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5h
YmxlZCA9IGZhbHNlKTsKIAogICAgIC8vIFJlYWxsb2NhdGUgYW4gZXhpc3RpbmcsIGNvbW1pdHRl
ZCBhbGxvY2F0aW9uLgogICAgIC8vIFRoZSBwcmlvciBhbGxvY2F0aW9uIG11c3QgYmUgZnVsbHkg
Y29taXR0ZWQsIGFuZCB0aGUgbmV3IHNpemUgd2lsbCBhbHNvIGJlIGZ1bGx5IGNvbW1pdHRlZC4K
ICAgICAvLyBUaGlzIGludGVyZmFjZSBpcyBwcm92aWRlZCBzaW5jZSBpdCBtYXkgYmUgcG9zc2li
bGUgdG8gb3B0aW1pemUgdGhpcyBvcGVyYXRpb24gb24gc29tZSBwbGF0Zm9ybXMuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwg
c2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9v
bCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMg
VCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXpl
LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0
YWJsZSA9IGZhbHNlLCBib29sIGppdENhZ2VFbmFibGVkID0gZmFsc2UpOwogCiAgICAgLy8gSGlu
dCB0byB0aGUgT1MgdGhhdCBhbiBhZGRyZXNzIHJhbmdlIGlzIG5vdCBleHBlY3RlZCB0byBiZSBh
Y2Nlc3NlZCBhbnl0aW1lIHNvb24uCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKHZvaWQqLCBzaXplX3QpOwogfTsKIAotaW5saW5lIHZv
aWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6
ZV90IGNvbW1pdFNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFi
bGUpCitpbmxpbmUgdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJl
c2VydmVTaXplLCBzaXplX3QgY29tbWl0U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUs
IGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBiYXNl
ID0gcmVzZXJ2ZVVuY29tbWl0dGVkKHJlc2VydmVTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUpOworICAgIHZvaWQqIGJhc2UgPSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUs
IHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIGNvbW1p
dChiYXNlLCBjb21taXRTaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgcmV0dXJuIGJh
c2U7CiB9CkBAIC04Niw5ICs4Niw5IEBAIGlubGluZSB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1p
dEFuZFJlbGVhc2Uodm9pZCogcmVsZWFzZUJhc2UsIHNpemVfdCByZWxlYXNlU2l6CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogT1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21t
aXR0ZWQoVCogb2xkQmFzZSwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSB1
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQoraW5saW5lIFQqIE9TQWxsb2Nh
dG9yOjpyZWFsbG9jYXRlQ29tbWl0dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXpl
X3QgbmV3U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwg
Ym9vbCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENv
bW1pdChuZXdTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIG5l
d0Jhc2UgPSByZXNlcnZlQW5kQ29tbWl0KG5ld1NpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0
YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIG1lbWNweShuZXdCYXNlLCBvbGRCYXNlLCBzdGQ6
Om1pbihvbGRTaXplLCBuZXdTaXplKSk7CiAgICAgZGVjb21taXRBbmRSZWxlYXNlKG9sZEJhc2Us
IG9sZFNpemUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obmV3QmFzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL1Bh
Z2VSZXNlcnZhdGlvbi5oCmluZGV4IGEyYWVlODg0ZTk4NjRjZDkzMjFhNmI0OTRlOWU2OTg4MjQ0
MzEwMzAuLjQ5NGJmMDVlMDAxNzE1Mzg1MWViMTBhNTUzM2MyMmZjNjVjYjc3MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BhZ2VSZXNlcnZhdGlvbi5oCkBAIC01NSwxMiArNTUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogcHVibGljOgotICAg
IFBhZ2VSZXNlcnZhdGlvbigpCi0gICAgICAgIDogbV9jb21taXR0ZWQoMCkKLSAgICAgICAgLCBt
X3dyaXRhYmxlKGZhbHNlKQotICAgICAgICAsIG1fZXhlY3V0YWJsZShmYWxzZSkKLSAgICB7Ci0g
ICAgfQorICAgIFBhZ2VSZXNlcnZhdGlvbigpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIFBhZ2VC
bG9jazo6YmFzZTsKICAgICB1c2luZyBQYWdlQmxvY2s6OnNpemU7CkBAIC05MywyMiArODgsMjIg
QEAgY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgICAgICBy
ZXR1cm4gbV9jb21taXR0ZWQ7CiAgICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiBy
ZXNlcnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRv
cjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UpCisgICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBP
U0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29s
IHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVu
YWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUp
KTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVu
Y29tbWl0dGVkKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRh
YmxlLCBleGVjdXRhYmxlLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24o
T1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4
ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCBmYWxzZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRh
YmxlLCBqaXRDYWdlRW5hYmxlZCwgZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUGFn
ZVJlc2VydmF0aW9uIHJlc2VydmVXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0
b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJs
ZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2
YXRpb24gcmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNh
Z2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1
ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0
dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUg
KyBwYWdlU2l6ZSgpICogMiwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKSwgc2l6
ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2Vy
dmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSArIHBhZ2VTaXplKCkg
KiAyLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwg
c2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQ
YWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6
OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZh
bHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFy
ZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRv
cjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihP
U0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxl
LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZUFuZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJs
ZSwgaml0Q2FnZUVuYWJsZWQsIHRydWUpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZSgp
CkBAIC0xMjcsNyArMTIyLDcgQEAgY2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdl
QmxvY2sgewogICAgIH0KIAogcHJpdmF0ZToKLSAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFz
ZSwgc2l6ZV90IHNpemUsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBoYXNH
dWFyZFBhZ2VzKQorICAgIFBhZ2VSZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwg
Ym9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBib29sIGhhc0d1YXJkUGFnZXMp
CiAgICAgICAgIDogUGFnZUJsb2NrKGJhc2UsIHNpemUsIGhhc0d1YXJkUGFnZXMpCiAgICAgICAg
ICwgbV9jb21taXR0ZWQoMCkKICAgICAgICAgLCBtX3dyaXRhYmxlKHdyaXRhYmxlKQpAQCAtMTM1
LDkgKzEzMCw5IEBAIGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsK
ICAgICB7CiAgICAgfQogCi0gICAgc2l6ZV90IG1fY29tbWl0dGVkOwotICAgIGJvb2wgbV93cml0
YWJsZTsKLSAgICBib29sIG1fZXhlY3V0YWJsZTsKKyAgICBzaXplX3QgbV9jb21taXR0ZWQgeyAw
IH07CisgICAgYm9vbCBtX3dyaXRhYmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhlY3V0YWJs
ZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCAwZDY2NjQx
Nzg2ZWJlOTQ2N2FlMDU5NmQ1MDc3YTE2MDU5N2U4MDdhLi43NmFkMjM1OWExYTdiMzRlZjg5OWQ0
MmIyZWM2ZTRkMTBiM2RjMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTg4OCwxMCAr
ODg4LDEwIEBACiAjZXJyb3IgIkVOQUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxF
KFdFQkdQVSkiCiAjZW5kaWYKIAotI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKLSNk
ZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAm
JiAoKFVTRShBUFBMRV9JTlRFUk5BTF9TREspICYmIENQVShBUk02NEUpKSkKKyNkZWZpbmUgRU5B
QkxFX0pJVF9DQUdFIDEKICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAm
JiBBU1NFUlRfRU5BQkxFRAorI2lmIE9TKERBUldJTikgJiYgQ1BVKEFERFJFU1M2NCkgJiYgRU5B
QkxFKEpJVCkgJiYgKEVOQUJMRShKSVRfQ0FHRSkgfHwgQVNTRVJUX0VOQUJMRUQpCiAjZGVmaW5l
IEVOQUJMRV9KSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04gMQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2Uu
aAppbmRleCAyMmY0NjJiMmE2NGRhYmY4YzA4NDlhOTIwZGVhYmQ5YTFjMWU1YmUyLi5mY2U5ZWRh
MTMzYzliYjMxNjcwZTMyZTlkZjNhMDdhNGEyZGMzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybVVzZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAg
LTMwOCwzICszMDgsNyBAQAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogI2RlZmluZSBVU0Vf
Q1RGT05UR0VUQURWQU5DRVNfV09SS0FST1VORCAxCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkg
JiYgQ1BVKEFERFJFU1M2NCkKKyNkZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1B0clRhZy5oIGIvU291cmNlL1dURi93dGYvUHRyVGFn
LmgKaW5kZXggNWE0MjE3MTExZDVmYTkxMjE3NjBhMjQyMWUwMjBiNWYxZGViNzhiYy4uYWM5MmVj
MzE5NGRmYWM4NGMxNTNmYjY2ZmFmZWVhM2NlOTYwNGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUHRyVGFnLmgKKysrIGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgKQEAgLTM0NCw2ICsz
NDQsNyBAQCBib29sIGlzVGFnZ2VkV2l0aChQdHJUeXBlIHZhbHVlKQogdGVtcGxhdGU8UHRyVGFn
IHRhZywgdHlwZW5hbWUgUHRyVHlwZT4KIHZvaWQgYXNzZXJ0SXNUYWdnZWRXaXRoKFB0clR5cGUg
dmFsdWUpCiB7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBXVEZfUFRSVEFHX0FTU0VS
VChQdHJUYWdBY3Rpb246OkRlYnVnQXNzZXJ0LCB2YWx1ZSwgdGFnLCBpc1RhZ2dlZFdpdGg8dGFn
Pih2YWx1ZSkpOwogfQogCkBAIC00NDksMjAgKzQ1MCw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5
UHRyKFQqIHB0ciwgc2l6ZV90IG9sZExlbmd0aCwgc2l6ZV90IG5ld0xlbmd0aCkKICAgICByZXR1
cm4gcHRyYXV0aF9hdXRoX2FuZF9yZXNpZ24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVu
ZGVudF9kYXRhLCBvbGRMZW5ndGgsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEs
IG5ld0xlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRy
VHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4g
cHRyYXV0aF9zaWduX3VuYXV0aGVudGljYXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVw
ZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0
aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9p
bnRlcikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gX19idWlsdGluX3B0cmF1dGhf
YXV0aChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2Fz
dDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCiB0ZW1wbGF0ZSA8UHRyVGFnIHRhZywgdHlw
ZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsK
QEAgLTUyMCwxMiArNTA3LDYgQEAgaW5saW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXpl
X3QsIHNpemVfdCkKICAgICByZXR1cm4gcHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJU
eXBlLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+
Ojp2YWx1ZT4+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJ
VENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgUHRyVHlwZSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
cG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0
aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVy
biBwdHI7IH0KLQogdGVtcGxhdGUgPFB0clRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJ
bnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTU3Miw5ICs1NTMsNyBAQCB1c2lu
ZyBXVEY6OnJldGFnQXJyYXlQdHI7CiB1c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOwogCiB1
c2luZyBXVEY6OnRhZ0NvZGVQdHI7Ci11c2luZyBXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2lu
dGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6dW50YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp1bnRh
Z0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6cmV0YWdDb2Rl
UHRyOwogdXNpbmcgV1RGOjpyZW1vdmVDb2RlUHRyVGFnOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDQ0NTQw
NTljNTE1ZDJhNDEyYjQzMmQwNzE0NmNmNmYwMTFkNDc2MGIuLjZjZWZkMmVlMmQzMTA1YzJkNDA0
ODVmNjk2NWZlYmE4ODQ1YjQzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09T
QWxsb2NhdG9yUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9y
UE9TSVguY3BwCkBAIC0zMSwxNCArMzEsMjcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9QYWdlQmxvY2suaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNp
bmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5B
QkxFKEpJVF9DQUdFKQorI2lmIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9S
X0pJVCBNQVBfSklUCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FH
RSBNQVBfSklUCisjZWxzZSAvLyBPUyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZP
Ul9KSVQgMAorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAor
I2VuZGlmIC8vIE9TKERBUldJTikKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIG5hbWVz
cGFjZSBXVEYgewogCi12b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVf
dCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCBpbmNsdWRlc0d1YXJkUGFnZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0
dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0
YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAj
aWYgT1MoTElOVVgpCiAgICAgVU5VU0VEX1BBUkFNKHVzYWdlKTsKICAgICBVTlVTRURfUEFSQU0o
d3JpdGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKKyAgICBVTlVTRURfUEFS
QU0oaml0Q2FnZUVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMp
OwogCiAgICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9S
RVNFUlZFIHwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDApOwpAQCAtNDYsNyArNTksNyBA
QCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAgICAgIENSQVNIKCk7CiAgICAgbWFkdmlzZShy
ZXN1bHQsIGJ5dGVzLCBNQURWX0RPTlRORUVEKTsKICNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0g
cmVzZXJ2ZUFuZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBpbmNs
dWRlc0d1YXJkUGFnZXMpOworICAgIHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0
ZXMsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVz
R3VhcmRQYWdlcyk7CiAjaWYgSEFWRShNQURWX0ZSRUVfUkVVU0UpCiAgICAgaWYgKHJlc3VsdCkg
ewogICAgICAgICAvLyBUbyBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1pdCIgbW9kZWws
IHdlIGhhdmUgdG8gaW5pdGlhbGx5IGRlY29tbWl0LgpAQCAtNTksNyArNzIsNyBAQCB2b2lkKiBP
U0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2Us
IGJvb2wgd3JpdGFibGUsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0
b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0
YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQqIE9T
QWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJv
b2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBp
bmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAgICAgLy8gQWxsIFBPU0lYIHJlc2VydmF0aW9ucyBzdGFy
dCBvdXQgbG9naWNhbGx5IGNvbW1pdHRlZC4KICAgICBpbnQgcHJvdGVjdGlvbiA9IFBST1RfUkVB
RDsKQEAgLTcwLDggKzgzLDE0IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0
KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvCiAKICAgICBpbnQg
ZmxhZ3MgPSBNQVBfUFJJVkFURSB8IE1BUF9BTk9OOwogI2lmIE9TKERBUldJTikKLSAgICBpZiAo
ZXhlY3V0YWJsZSkKLSAgICAgICAgZmxhZ3MgfD0gTUFQX0pJVDsKKyAgICBpZiAoZXhlY3V0YWJs
ZSkgeworICAgICAgICBpZiAoaml0Q2FnZUVuYWJsZWQpCisgICAgICAgICAgICBmbGFncyB8PSBN
QVBfRVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0U7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZsYWdzIHw9IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQ7CisgICAgfQorI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwogI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcAppbmRleCA5ZDZjMGFhNzQxMTM2Y2M4
YTg0NmQwNDEyYTkyMWJkYTJhYzM4YjQ3Li42ZDUyYzY2MmRmMDZmOTQ4MWE5MzM1YTdlZDJiNDUx
NDM2NjQ2NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgc3RhdGljIGlubGluZSBEV09SRCBwcm90ZWN0aW9uKGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSkKICAgICAgICAgKHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdF
X1JFQURPTkxZKTsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChz
aXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wp
Cit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNh
Z2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2
b2lkKiByZXN1bHQgPSBWaXJ0dWFsQWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBw
cm90ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC00
Niw3ICs0Niw3IEBAIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90
IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBV
c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxv
Y2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJs
ZSwgYm9vbCBleGVjdXRhYmxlLCBib29sLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZp
cnR1YWxBbGxvYyhudWxscHRyLCBieXRlcywgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBwcm90
ZWN0aW9uKHdyaXRhYmxlLCBleGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCg==
</data>
<flag name="review"
          id="429145"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413114</attachid>
            <date>2020-11-03 15:29:07 -0800</date>
            <delta_ts>2020-11-03 15:29:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218143-20201103152906.patch</filename>
            <type>text/plain</type>
            <size>171769</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MTZjMjUxYTRjYzNjMDI1MWQ4MzJiZGRjZmI3MzdkMmIxMjBkMzdjLi5mMjdkNjQ2NGUwMzYzMTU2
Yjg2OTkzMmRlOTc4OWIxMTI4ODU2NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMjAtMTEtMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgSklUQ2FnZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxNDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3dhcmRzIHNvZnR3YXJlIHZlcmlmaWVk
IEpJVCwgdGhpcyBwYXRjaCBhZGRzIHBhcnRpYWwgSklULUNhZ2luZyBzdXBwb3J0IHdoaWNoIGNh
Z2VzIEpJVCBjYWxsIC8ganVtcHMgaW4gYSBjZXJ0YWluIGZvcm1hdC4KKyAgICAgICAgVGhpcyBp
cyBjdXJyZW50bHkgb25seSBlbmFibGVkIHdoZW4gaW50ZXJuYWwgU0RLIGlzIGVuYWJsZWQuIEFu
ZCBpdCBpcyBvbmx5IGVuYWJsZWQgaW4gQVJNNjRFIGZvciBub3cuCisgICAgICAgIEN1cnJlbnRs
eSwgdGhpcyBwYXRjaCBkb2VzIG5vdCBoYXZlIENTUyBKSVQgc3VwcG9ydC4gU3Vic2VxdWVudCBw
YXRjaCB3aWxsIGFkZCBpdC4KKyAgICAgICAgV2UgZW5zdXJlZCB0aGF0IEpTMiBhbmQgUkFNaWZp
Y2F0aW9uIGFyZSBuZXV0cmFsLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5jcHA6CisgICAgICAgIChKU0M6OmFkZFBvaW50ZXJz
KToKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2
YVNjcmlwdENvcmVGb3JMTEludCk6CisgICAgICAgICogYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxp
c3QuaDoKKyAgICAgICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6bWFwIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SklUT3BlcmF0aW9uTGlzdDo6YXNzZXJ0SXNIb3N0RnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpKSVRPcGVyYXRpb25MaXN0Ojphc3NlcnRJc0pJVE9wZXJhdGlvbik6CisgICAgICAg
IChKU0M6OkpJVE9wZXJhdGlvbkxpc3Q6OmNvbnRhaW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NEUuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmNhbGxU
cnVzdGVkUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmNhbGwpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0RTo6Y2FsbFJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NEU6OmZhckp1bXBSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjRFOjpmYXJKdW1wKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk02NEU6OnJldCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6ZmFySnVtcCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OmZhckp1bXApOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6ZmFySnVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFi
aWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FsbGVyUmV0dXJuUEMpOgorICAgICAgICAoSlNDOjpERkc6
OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5oOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRvcjo6c2V0SklURW5hYmxlZCk6CisgICAgICAgIChK
U0M6OmluaXRpYWxpemVKSVRQYWdlUmVzZXJ2YXRpb24pOgorICAgICAgICAqIGppdC9HUFJJbmZv
Lmg6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcDoKKyAgICAg
ICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKToKKyAgICAgICAgKiBqaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKToK
KyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0T3Bjb2RlV2lkZTE2KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmdldE9wY29kZVdpZGUzMik6CisgICAgICAgIChKU0M6OkxM
SW50OjpnZXRDb2RlUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFdpZGUxNkNvZGVQdHIp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lkZTMyQ29kZVB0cik6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHIpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0V2lk
ZTE2Q29kZUZ1bmN0aW9uUHRyKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFdpZGUzMkNvZGVG
dW5jdGlvblB0cik6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmVudHJ5cG9pbnRUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnNldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRFdmFs
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRQcm9ncmFtRW50cnlwb2ludCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludEVudHJ5cG9pbnQp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY1JldHVyblBvaW50RW50cnlwb2ludCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y29tbW9uQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8p
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZSk6
CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb0xMSW50UmV0dXJu
UG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuayk6
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmspOgor
ICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnByb2dyYW1FbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om1vZHVsZVByb2dy
YW1FbnRyeVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondhc21GdW5jdGlvbkVudHJ5VGh1
bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlQ2F0Y2hUaHVuayk6CisgICAgICAgIChK
U0M6OkxMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdXp6ZXJSZXR1cm5FYXJseUZyb21Mb29wSGludFRodW5rKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmNyZWF0ZUpTR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNyZWF0ZVdhc21H
YXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y3JlYXRlVGFpbENhbGxHYXRlKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6Omxvb3BPU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6
OkxMSW50OjplbnRyeU9TUkVudHJ5R2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Ondh
c21PU1JFbnRyeUdhdGVUaHVuayk6CisgICAgICAgIChKU0M6OkxMSW50OjpleGNlcHRpb25IYW5k
bGVyR2F0ZVRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVybkZyb21MTEludEdhdGVU
aHVuayk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0YWdHYXRlVGh1bmspOgorICAgICAgICAoSlND
OjpMTEludDo6dW50YWdHYXRlVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6aml0Q2FnZVB0
clRodW5rKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Om5vcm1hbE9TUkV4aXRUcmFtcG9saW5lVGh1
bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1
bmspOgorICAgICAgICAoSlNDOjpMTEludDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENh
bGxUcmFtcG9saW5lVGh1bmspOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuTG9jYXRpb25U
aHVuayk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206
CisgICAgICAgICogbGxpbnQvV2ViQXNzZW1ibHkuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20v
YXJtNjQucmI6CisgICAgICAgICogb2ZmbGluZWFzbS9taXBzLnJiOgorICAgICAgICAqIHJ1bnRp
bWUvR2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTQ0NvbmZpZy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDUHRyVGFnLmNwcDoKKyAgICAgICAgKEpTQzo6dGFnRm9yUHRyKToKKyAg
ICAgICAgKEpTQzo6Y2FsbGVyVHlwZSk6CisgICAgICAgIChKU0M6OmNhbGxlZVR5cGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDUHRyVGFnLmg6CisgICAgICAgIChKU0M6OnRhZ0pTQ0NvZGVQdHJJ
bXBsKToKKyAgICAgICAgKEpTQzo6dW50YWdKU0NDb2RlUHRySW1wbCk6CisgICAgICAgIChKU0M6
OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCk6CisgICAgICAgIChKU0M6OnVu
dGFnQ29kZVB0cldpdGhTdGFja1BvaW50ZXJGb3JKSVRDYWxsKToKKyAgICAgICAgKiBydW50aW1l
L01hdGNoUmVzdWx0Lmg6CisgICAgICAgIChKU0M6Ok1hdGNoUmVzdWx0OjpNYXRjaFJlc3VsdCk6
CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6ZGlzYWJsZUFs
bEpJVE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpjYW5Vc2VKSVRDYWdlKToKKyAgICAgICAgKiBy
dW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyQ29kZUJsb2NrOjpleGVjdXRlKToKKwogMjAyMC0xMS0w
MyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04gKHIyNTQwMzgpOiBTaW1wbGUuY29tIG1vbmV5IHRyYW5zZmVyIFVJIGlzIHZlcnkgbGFnZ3kg
KG11bHRpcGxlIHNlY29uZHMgcGVyIGtleXByZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNmQzZjYwZGViYWM5OTIwNmU5
YjNmZDE0YmFiNjJmZWViNTRlZGY4Li4wNTExOGZlMWQzNTM1NjliYzQ1YWNiMjM3NTFhNmM4ODFh
NzAyNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTExLTAzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIEpJVENhZ2Ugc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTQzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvT1NB
bGxvY2F0b3IuaDoKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQp
OgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVhbGxvY2F0ZUNvbW1pdHRlZCk6CisgICAg
ICAgICogd3RmL1BhZ2VSZXNlcnZhdGlvbi5oOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRp
b246OnJlc2VydmUpOgorICAgICAgICAoV1RGOjpQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVXaXRo
R3VhcmRQYWdlcyk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZUFuZENv
bW1pdFdpdGhHdWFyZFBhZ2VzKToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpQYWdl
UmVzZXJ2YXRpb24pOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybVVzZS5oOgorICAgICAgICAqIHd0Zi9QdHJUYWcuaDoKKyAgICAgICAgKFdU
Rjo6YXNzZXJ0SXNUYWdnZWRXaXRoKToKKyAgICAgICAgKFdURjo6dGFnQ29kZVB0cldpdGhTdGFj
a1BvaW50ZXJGb3JKSVRDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6dW50YWdDb2RlUHRy
V2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9wb3Np
eC9PU0FsbG9jYXRvclBPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlc2Vy
dmVVbmNvbW1pdHRlZCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29t
bWl0KToKKyAgICAgICAgKiB3dGYvd2luL09TQWxsb2NhdG9yV2luLmNwcDoKKyAgICAgICAgKFdU
Rjo6T1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZCk6CisgICAgICAgIChXVEY6Ok9TQWxs
b2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KToKKwogMjAyMC0xMS0wMyAgU3RlcGhhbiBTemFibyAg
PHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvL1BsYXlTdGF0aW9u
XSBJQ1UgNjguMSBubyBsb25nZXIgZXhwb3NlcyBGQUxTRSBhbmQgVFJVRSBtYWNyb3MgYnkgZGVm
YXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFkMWRjYTY3NzlmMDhm
YjgyYzg1ZmI2MmM0YzNmYzllODIxNjM4YTAuLjM4YWU2Y2UxMWE4OWJiMmNhNjU3YzU4Y2Y4MmQ3
ZTQ3NTE4YTk5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg3Miw2
ICs4NzIsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5oCiAgICAgcnVudGltZS9GdXp6ZXJBZ2VudC5oCisgICAgcnVudGltZS9HYXRlLmgKICAg
ICBydW50aW1lL0dlbmVyaWNPZmZzZXQuaAogICAgIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgKICAgICBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhODkyMzExYjUyYzcwMDJhNjE4NjBiYjM0ZGY1MjEy
NWZkNTJlN2UwLi41ZThlNTQzNmFiOThkMGQ5NTI3ZmNhNTU5YzQ5YWE4MTc0YzBjNDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg1Myw2ICsxODUzLDcgQEAKIAkJRTM2Qjc2
NzAyMkY4RDYxOTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQw
OTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMx
NEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNy
ZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzNkVEQ0U1MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RURDRTQyNEYwOTc1NzAw
RTYwREEyIC8qIENvbmN1cnJlbmN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTM3MTE5OTIyNTNGQTg3RjAwQkE2OUEwIC8qIEdhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzExOTkxMjUzRkE4
N0UwMEJBNjlBMCAvKiBHYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTM3NTBDQzgyNTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZv
cm1hdElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNzUwQ0M3MjUwMkU4N0UwMDZBMEFBQiAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRJbmxpbmVz
LmggKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4MzUwMEEyMzkwRDkzQjAwMzYzMTZEIC8q
IFdhc21HbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODM1MDA5MjM5MEQ5MzcwMDM2MzE2RCAvKiBXYXNtR2xvYmFsLmggKi87IH07CkBAIC01
MDYyLDYgKzUwNjMsNyBAQAogCQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zv
ck9TUkVudHJ5UGxhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAv
KiBXYXNtQ3JlYXRpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdh
c21DcmVhdGlvbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RURDRTQy
NEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbmN1cnJlbmN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
NzExOTkxMjUzRkE4N0UwMEJBNjlBMCAvKiBHYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3NTBDQzcy
NTAyRTg3RTAwNkEwQUFCIC8qIEludGxEYXRlVGltZUZvcm1hdElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bERhdGVUaW1lRm9ybWF0SW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9k
dWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFC
NzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTcyODEsNiArNzI4Myw3IEBACiAJCQkJRTMzQTk0OTIyMjU1MzIyOTAwRDQyQjA2IC8qIEZ1
enplckFnZW50LmggKi8sCiAJCQkJQ0VDRkFEMzUyMzcyREFBNzAwMjkxNTk5IC8qIEZ1enplclBy
ZWRpY3Rpb25zLmNwcCAqLywKIAkJCQlDRUNGQUQzNDIzNzJEQUE3MDAyOTE1OTkgLyogRnV6emVy
UHJlZGljdGlvbnMuaCAqLywKKwkJCQlFMzcxMTk5MTI1M0ZBODdFMDBCQTY5QTAgLyogR2F0ZS5o
ICovLAogCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCkBAIC05NzAyLDYgKzk3MDUs
NyBAQAogCQkJCTYyRDJEMzkwMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzNBOTQ5NzIyNTUzMjMzMDBENDJCMDYgLyogRnV6emVyQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0ZBRDM2MjM3MkRBRDAwMDI5MTU5OSAvKiBGdXp6
ZXJQcmVkaWN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM3MTE5OTIyNTNGQTg3RjAwQkE2
OUEwIC8qIEdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRF
OTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2
RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVy
YXRpb25MaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3BlcmF0
aW9uTGlzdC5jcHAKaW5kZXggYjNjZTE3NzkyZDAxNjdmNGVjN2JlY2NhNGZkZTg1YzQ1Y2JiMTBi
MC4uZTRmMjZhYjQ2NmUyZmI1MDU2NzAyODkyZWUzYWJhYzc2NWI3N2QwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9KSVRPcGVyYXRpb25MaXN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuY3BwCkBA
IC0yNiw2ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpJVE9wZXJh
dGlvbkxpc3QuaCIKIAorI2luY2x1ZGUgIkdhdGUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIK
KyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxX
ZWJLaXRBZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBK
U0MgewogCiBMYXp5TmV2ZXJEZXN0cm95ZWQ8SklUT3BlcmF0aW9uTGlzdD4gaml0T3BlcmF0aW9u
TGlzdDsKQEAgLTQ1LDE4ICs1MywyMiBAQCB2b2lkIEpJVE9wZXJhdGlvbkxpc3Q6OmluaXRpYWxp
emUoKQogI2lmIEVOQUJMRShKSVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCiBzdGF0aWMgU1VQUFJF
U1NfQVNBTiBBTFdBWVNfSU5MSU5FIHZvaWQgYWRkUG9pbnRlcnMoSGFzaE1hcDx2b2lkKiwgdm9p
ZCo+JiBtYXAsIGNvbnN0IHVpbnRwdHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVu
ZEhvc3QsIGNvbnN0IHVpbnRwdHJfdCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3Qq
IGVuZE9wZXJhdGlvbnMpCiB7Ci0gICAgZm9yIChjb25zdCB1aW50cHRyX3QqIGN1cnJlbnQgPSBi
ZWdpbkhvc3Q7IGN1cnJlbnQgIT0gZW5kSG9zdDsgKytjdXJyZW50KSB7Ci0gICAgICAgIHZvaWQq
IGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQp
KTsKLSAgICAgICAgaWYgKGNvZGVQdHIpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFw
LmFkZChjb2RlUHRyLCBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPEhvc3RGdW5jdGlvblB0clRh
Zz4oY29kZVB0cikpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLSAg
ICAgICAgfQorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2Fn
ZSgpKSB7CisgICAgICAgIEpTQ19KSVRfQ0FHRURfUE9JTlRFUl9SRUdJU1RSQVRJT04oKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9
IGJlZ2luT3BlcmF0aW9uczsgY3VycmVudCAhPSBlbmRPcGVyYXRpb25zOyArK2N1cnJlbnQpIHsK
LSAgICAgICAgdm9pZCogY29kZVB0ciA9IHJlbW92ZUNvZGVQdHJUYWcoYml0d2lzZV9jYXN0PHZv
aWQqPigqY3VycmVudCkpOwotICAgICAgICBpZiAoY29kZVB0cikgewotICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBtYXAuYWRkKGNvZGVQdHIsIFdURjo6dGFnTmF0aXZlQ29kZVB0ckltcGw8T3Bl
cmF0aW9uUHRyVGFnPihjb2RlUHRyKSk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LmlzTmV3
RW50cnkpOworI2VuZGlmCisgICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgeworICAg
ICAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9IGJlZ2luSG9zdDsgY3VycmVudCAh
PSBlbmRIb3N0OyArK2N1cnJlbnQpIHsKKyAgICAgICAgICAgIHZvaWQqIGNvZGVQdHIgPSByZW1v
dmVDb2RlUHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4oKmN1cnJlbnQpKTsKKyAgICAgICAgICAg
IGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAgIG1hcC5hZGQoY29kZVB0ciwgV1RGOjp0YWdO
YXRpdmVDb2RlUHRySW1wbDxIb3N0RnVuY3Rpb25QdHJUYWc+KGNvZGVQdHIpKTsKKyAgICAgICAg
fQorICAgICAgICBmb3IgKGNvbnN0IHVpbnRwdHJfdCogY3VycmVudCA9IGJlZ2luT3BlcmF0aW9u
czsgY3VycmVudCAhPSBlbmRPcGVyYXRpb25zOyArK2N1cnJlbnQpIHsKKyAgICAgICAgICAgIHZv
aWQqIGNvZGVQdHIgPSByZW1vdmVDb2RlUHRyVGFnKGJpdHdpc2VfY2FzdDx2b2lkKj4oKmN1cnJl
bnQpKTsKKyAgICAgICAgICAgIGlmIChjb2RlUHRyKQorICAgICAgICAgICAgICAgIG1hcC5hZGQo
Y29kZVB0ciwgV1RGOjp0YWdOYXRpdmVDb2RlUHRySW1wbDxPcGVyYXRpb25QdHJUYWc+KGNvZGVQ
dHIpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTczLDYgKzg1LDU2IEBAIHZvaWQgSklUT3Bl
cmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENvcmUoKQogI2VuZGlmCiB9
CiAKK3ZvaWQgSklUT3BlcmF0aW9uTGlzdDo6cG9wdWxhdGVQb2ludGVyc0luSmF2YVNjcmlwdENv
cmVGb3JMTEludCgpCit7CisjaWYgRU5BQkxFKEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNl
S2V5LCBbXSB7CisKKyNkZWZpbmUgTExJTlRfT1AobmFtZSkgXAorICAgIGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1l
KSksIFwKKyAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0V2lkZTE2Q29kZUZ1
bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSkpLCBcCisgICAgYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oTExJbnQ6OmdldFdpZGUzMkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+
KG5hbWUpKSwKKworI2RlZmluZSBMTElOVF9SRVRVUk5fTE9DQVRJT04obmFtZSwgLi4uKSBcCisg
ICAgTExJTlRfT1AobmFtZSMjX3JldHVybl9sb2NhdGlvbikKKworICAgICAgICBjb25zdCB1aW50
cHRyX3Qgb3BlcmF0aW9uc1tdID0geworICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpLAorICAgICAgICAg
ICAgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVu
Y3Rpb25QdHJUYWc+KGxsaW50X2V2YWxfcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFn
PihsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRf
bW9kdWxlX3Byb2dyYW1fcHJvbG9ndWUpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPih3YXNtX2Z1
bmN0aW9uX3Byb2xvZ3VlKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihM
TEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4od2FzbV9mdW5jdGlvbl9w
cm9sb2d1ZV9ub190bHMpKSwKKyAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KExM
SW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihsbGludF90aHJvd19kdXJp
bmdfY2FsbF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obGxpbnRfaGFuZGxl
X3VuY2F1Z2h0X2V4Y2VwdGlvbikpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGNoZWNrcG9pbnRf
b3NyX2V4aXRfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAgYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KGNoZWNrcG9pbnRf
b3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSkpLAorICAgICAgICAgICAgYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+KG5vcm1hbF9vc3JfZXhpdF90cmFtcG9saW5lKSksCisgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRh
Zz4oZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCkpLAorCisgICAgICAgICAgICBM
TElOVF9PUChvcF9jYXRjaCkKKyAgICAgICAgICAgIExMSU5UX09QKGxsaW50X2dlbmVyaWNfcmV0
dXJuX3BvaW50KQorCisgICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfZ2V0X2J5
X2lkKQorICAgICAgICAgICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX2dldF9ieV92YWwpCisg
ICAgICAgICAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfcHV0X2J5X2lkKQorICAgICAgICAg
ICAgTExJTlRfUkVUVVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV92YWwpCisKKyAgICAgICAgICAgIEpT
Q19KU19HQVRFX09QQ09ERVMoTExJTlRfUkVUVVJOX0xPQ0FUSU9OKQorICAgICAgICAgICAgSlND
X1dBU01fR0FURV9PUENPREVTKExMSU5UX1JFVFVSTl9MT0NBVElPTikKKyAgICAgICAgfTsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgYWRkUG9pbnRlcnMoaml0
T3BlcmF0aW9uTGlzdC0+bV92YWxpZGF0ZWRPcGVyYXRpb25zLCBudWxscHRyLCBudWxscHRyLCBv
cGVyYXRpb25zLCBvcGVyYXRpb25zICsgV1RGX0FSUkFZX0xFTkdUSChvcGVyYXRpb25zKSk7Cisj
dW5kZWYgTExJTlRfUkVUVVJOX0xPQ0FUSU9OCisgICAgfSk7CisjZW5kaWYKK30KKworCiB2b2lk
IEpJVE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKGNvbnN0IHVpbnRw
dHJfdCogYmVnaW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhvc3QsIGNvbnN0IHVpbnRwdHJf
dCogYmVnaW5PcGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVuZE9wZXJhdGlvbnMpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGJlZ2luSG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0pJVE9wZXJhdGlvbkxpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvSklUT3BlcmF0aW9uTGlzdC5oCmluZGV4IDA5ODQ5M2Y1MGIyYWQzM2NkMWQ5
NzU3NGEyODNlOWZmOGI5NjgzNjkuLjVkN2Y4NTY1ZDVjZWEzMzQyMzZhM2RiYmQxZDMzMTlkNTRl
MTg3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3Bl
cmF0aW9uTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvSklUT3Bl
cmF0aW9uTGlzdC5oCkBAIC0zNywxNCArMzcsMTcgQEAgY2xhc3MgSklUT3BlcmF0aW9uTGlzdCB7
CiAgICAgc3RhdGljIEpJVE9wZXJhdGlvbkxpc3QmIGluc3RhbmNlKCk7CiAgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZSgpOwogCi0gICAgdm9pZCogY29udGFpbnModm9pZCogcG9pbnRlcikgY29u
c3QKKyAgICB2b2lkKiBtYXAodm9pZCogcG9pbnRlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
IGNvbnN0ZXhwcihBU1NFUlRfRU5BQkxFRCkKLSAgICAgICAgICAgIHJldHVybiBtX3ZhbGlkYXRl
ZE9wZXJhdGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikpOworI2lmIEVOQUJMRShK
SVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCisgICAgICAgIHJldHVybiBtX3ZhbGlkYXRlZE9wZXJh
dGlvbnMuZ2V0KHJlbW92ZUNvZGVQdHJUYWcocG9pbnRlcikpOworI2Vsc2UKICAgICAgICAgcmV0
dXJuIHBvaW50ZXI7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZVBv
aW50ZXJzSW5KYXZhU2NyaXB0Q29yZSgpOworICAgIHN0YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRl
cnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQoKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHBvcHVsYXRlUG9pbnRlcnNJbkVtYmVkZGVyKGNvbnN0IHVpbnRwdHJfdCogYmVn
aW5Ib3N0LCBjb25zdCB1aW50cHRyX3QqIGVuZEhvc3QsIGNvbnN0IHVpbnRwdHJfdCogYmVnaW5P
cGVyYXRpb25zLCBjb25zdCB1aW50cHRyX3QqIGVuZE9wZXJhdGlvbnMpOwogCkBAIC01NCw3ICs1
Nyw3IEBAIGNsYXNzIEpJVE9wZXJhdGlvbkxpc3QgewogICAgIHsKICAgICAgICAgVU5VU0VEX1BB
UkFNKGZ1bmN0aW9uKTsKICNpZiBFTkFCTEUoSklUX09QRVJBVElPTl9WQUxJREFUSU9OKQotICAg
ICAgICBBU1NFUlQoZnVuY3Rpb24sICFPcHRpb25zOjp1c2VKSVQoKSB8fCBKSVRPcGVyYXRpb25M
aXN0OjppbnN0YW5jZSgpLmNvbnRhaW5zKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7
CisgICAgICAgIEFTU0VSVChmdW5jdGlvbiwgIU9wdGlvbnM6OnVzZUpJVCgpIHx8IEpJVE9wZXJh
dGlvbkxpc3Q6Omluc3RhbmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVuY3Rpb24pKSk7
CiAjZW5kaWYKICAgICB9CiAKQEAgLTYyLDcgKzY1LDcgQEAgY2xhc3MgSklUT3BlcmF0aW9uTGlz
dCB7CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb24pOwogI2lmIEVOQUJMRShK
SVRfT1BFUkFUSU9OX1ZBTElEQVRJT04pCi0gICAgICAgIEFTU0VSVCghT3B0aW9uczo6dXNlSklU
KCkgfHwgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5jb250YWlucyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KGZ1bmN0aW9uKSkpOworICAgICAgICBBU1NFUlQoIU9wdGlvbnM6OnVzZUpJVCgpIHx8
IEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lkKj4oZnVu
Y3Rpb24pKSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNDViNGIzYjQ2OTY4NTUy
ZDdkYWM5Nzg4YWZmNmNmMGI0M2RiMjZjNi4uNGM5YTllYmE0YjY0ZjQxYzEwZTk0NGRmMjQzOGE2
ZmRlYTE3YmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTMzOTIsNiArMzM5MiwxMiBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJyKHRhcmdldCk7CiAgICAgfQogCisgICAgdm9pZCBm
YXJKdW1wKFRydXN0ZWRJbW1QdHIgdGFyZ2V0LCBQdHJUYWcpCisgICAgeworICAgICAgICBtb3Zl
KHRhcmdldCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYnIoZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9p
ZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnKQogICAgIHsKICAgICAgICAgbG9hZFB0
cihhZGRyZXNzLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0RS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0RS5oCmluZGV4IDM5ZWExNTExNDc2MWEwMGUwMDA1MDMxMDBiZTc2YmRlNDRhMmY4YzQu
LjA5YzAyNmIxYjkyODdjM2FjNGZjNjBmNTRjZjcyYTFlZDcyMjI1YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NEUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjRFLmgK
QEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRlICJBUk02NEVBc3NlbWJsZXIuaCIKICNpbmNsdWRl
ICJKU0NQdHJUYWcuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckFSTTY0LmgiCisjaWYgRU5B
QkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25z
Lmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTExMCwyMCArMTEzLDI4IEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyQVJNNjRFIDogcHVibGljIE1hY3JvQXNzZW1ibGVyQVJNNjQgewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgUmVnaXN0ZXJJRCBJbnZhbGlkR1BSICA9IHN0YXRpY19jYXN0
PFJlZ2lzdGVySUQ+KC0xKTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbFNpZ25hdHVyZVR5cGUgewot
ICAgICAgICBDRnVuY3Rpb25DYWxsLAotICAgICAgICBPdGhlckNhbGwKKyAgICAgICAgSklUQ2Fs
bCwKKyAgICAgICAgTmF0aXZlQ2FsbCwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBKdW1wU2ln
bmF0dXJlVHlwZSB7CisgICAgICAgIEpJVEp1bXAsCisgICAgICAgIE5hdGl2ZUp1bXAsCiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPENhbGxTaWduYXR1cmVUeXBlIHR5cGU+CiAgICAgQUxXQVlTX0lO
TElORSBDYWxsIGNhbGxUcnVzdGVkUHRyKFJlZ2lzdGVySUQgdGFnR1BSID0gSW52YWxpZEdQUikK
ICAgICB7CisgICAgICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKICAgICAgICAgQVNTRVJUKHRhZ0dQ
UiAhPSBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgQXNzZW1ibGVyTGFiZWwgcG9pbnRlckxh
YmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKICAgICAgICAgbW92ZVdpdGhGaXhlZFdpZHRoKFRy
dXN0ZWRJbW1QdHIobnVsbHB0ciksIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CiAgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGlmICh0eXBlID09IENhbGxTaWduYXR1cmVUeXBlOjpDRnVuY3Rpb25DYWxsKQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYmxyYWF6KGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBlbHNlCisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7
CisgICAgICAgICAgICBKU0NfSklUX0NBR0VEX0NBTEwodHlwZSwgZGF0YVRlbXBSZWdpc3Rlciwg
dGFnR1BSKTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJscmFiKGRhdGFUZW1wUmVnaXN0ZXIsIHRhZ0dQUik7CiAgICAgICAgIEFzc2VtYmxlckxhYmVs
IGNhbGxMYWJlbCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
cG9pbnRlckxhYmVsLCBBUk02NEFzc2VtYmxlcjo6Z2V0RGlmZmVyZW5jZUJldHdlZW5MYWJlbHMo
Y2FsbExhYmVsLCBwb2ludGVyTGFiZWwpID09IFJFUEFUQ0hfT0ZGU0VUX0NBTExfVE9fUE9JTlRF
Uik7CkBAIC0xMzIsNTEgKzE0Myw1MyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTTY0RSA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlckFSTTY0IHsKIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxs
KFB0clRhZyB0YWcpCiAgICAgewotICAgICAgICBpZiAodGFnID09IE5vUHRyVGFnKQotICAgICAg
ICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbGwodGFnKTsKLSAgICAgICAgaWYg
KHRhZyA9PSBDRnVuY3Rpb25QdHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQ
dHI8Q2FsbFNpZ25hdHVyZVR5cGU6OkNGdW5jdGlvbkNhbGw+KCk7CisgICAgICAgIEFTU0VSVCh0
YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VS
VChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tNjQodGFnKSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKLSAgICAgICAgcmV0dXJu
IGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVUeXBlOjpPdGhlckNhbGw+KEFSTTY0UmVnaXN0
ZXJzOjpscik7CisgICAgICAgIGlmIChjYWxsZWVUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVlVHlw
ZTo6SklUKQorICAgICAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENhbGxTaWduYXR1cmVU
eXBlOjpKSVRDYWxsPihBUk02NFJlZ2lzdGVyczo6bHIpOworICAgICAgICByZXR1cm4gY2FsbFRy
dXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok5hdGl2ZUNhbGw+KEFSTTY0UmVnaXN0ZXJzOjps
cik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YWdH
UFIpCiAgICAgewotICAgICAgICByZXR1cm4gY2FsbFRydXN0ZWRQdHI8Q2FsbFNpZ25hdHVyZVR5
cGU6Ok90aGVyQ2FsbD4odGFnR1BSKTsKKyAgICAgICAgcmV0dXJuIGNhbGxUcnVzdGVkUHRyPENh
bGxTaWduYXR1cmVUeXBlOjpOYXRpdmVDYWxsPih0YWdHUFIpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPENhbGxTaWduYXR1cmVUeXBlIHR5cGU+CiAgICAgQUxXQVlTX0lOTElORSBDYWxsIGNhbGxS
ZWdpc3RlcihSZWdpc3RlcklEIHRhcmdldEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlk
R1BSKQogICAgIHsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwogICAgICAgICBBU1NFUlQo
dGFnR1BSICE9IHRhcmdldEdQUik7CiAgICAgICAgIGludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJz
KCk7Ci0gICAgICAgIGlmICh0eXBlID09IENhbGxTaWduYXR1cmVUeXBlOjpDRnVuY3Rpb25DYWxs
KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmxyYWF6KHRhcmdldEdQUik7Ci0gICAgICAgIGVs
c2UKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdl
KCkpIHsKKyAgICAgICAgICAgIEpTQ19KSVRfQ0FHRURfQ0FMTCh0eXBlLCB0YXJnZXRHUFIsIHRh
Z0dQUik7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
bHJhYih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVy
LmxhYmVsKCksIENhbGw6Ok5vbmUpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBj
YWxsKFJlZ2lzdGVySUQgdGFyZ2V0R1BSLCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAgICAgaWYg
KHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0
OjpjYWxsKHRhcmdldEdQUiwgdGFnKTsKLSAgICAgICAgaWYgKHRhZyA9PSBDRnVuY3Rpb25QdHJU
YWcpCi0gICAgICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBlOjpD
RnVuY3Rpb25DYWxsPih0YXJnZXRHUFIpOworICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlv
blB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVyVHlwZSh0
YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTY0
KHRhZyksIEFSTTY0UmVnaXN0ZXJzOjpscik7Ci0gICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8
Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4odGFyZ2V0R1BSLCBBUk02NFJlZ2lzdGVyczo6
bHIpOworICAgICAgICBpZiAoY2FsbGVlVHlwZSh0YWcpID09IFB0clRhZ0NhbGxlZVR5cGU6OkpJ
VCkKKyAgICAgICAgICAgIHJldHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6OkpJ
VENhbGw+KHRhcmdldEdQUiwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICAgICAgcmV0dXJuIGNh
bGxSZWdpc3RlcjxDYWxsU2lnbmF0dXJlVHlwZTo6TmF0aXZlQ2FsbD4odGFyZ2V0R1BSLCBBUk02
NFJlZ2lzdGVyczo6bHIpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJl
Z2lzdGVySUQgdGFyZ2V0R1BSLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBjYWxsUmVnaXN0ZXI8Q2FsbFNpZ25hdHVyZVR5cGU6Ok90aGVyQ2FsbD4odGFyZ2V0R1BS
LCB0YWdHUFIpOworICAgICAgICByZXR1cm4gY2FsbFJlZ2lzdGVyPENhbGxTaWduYXR1cmVUeXBl
OjpOYXRpdmVDYWxsPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSBDYWxsIGNhbGwoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAg
ICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxl
ckFSTTY0OjpjYWxsKGFkZHJlc3MsIHRhZyk7Ci0KKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVu
Y3Rpb25QdHJUYWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBsb2FkNjQoYWRkcmVz
cywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKICAgICAgICAg
cmV0dXJuIGNhbGwoZGF0YVRlbXBSZWdpc3RlciwgdGFnKTsKICAgICB9CkBAIC0xOTcsOTAgKzIx
MCwxMjkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NEUgOiBwdWJsaWMgTWFjcm9Bc3NlbWJs
ZXJBUk02NCB7CiAKICAgICBBTFdBWVNfSU5MSU5FIEp1bXAganVtcCgpIHsgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyQVJNNjQ6Omp1bXAoKTsgfQogCi0gICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQg
dGFyZ2V0LCBQdHJUYWcgdGFnKQorICAgIHRlbXBsYXRlPEp1bXBTaWduYXR1cmVUeXBlIHR5cGU+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZhckp1bXBSZWdpc3RlcihSZWdpc3RlcklEIHRhcmdl
dEdQUiwgUmVnaXN0ZXJJRCB0YWdHUFIgPSBJbnZhbGlkR1BSKQorICAgIHsKKyAgICAgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdldEdQUik7Cisj
aWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7
CisgICAgICAgICAgICBKU0NfSklUX0NBR0VEX0ZBUl9KVU1QKHR5cGUsIHRhcmdldEdQUiwgdGFn
R1BSKTsKKyAgICAgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJy
YWIodGFyZ2V0R1BSLCB0YWdHUFIpOworICAgIH0KKworICAgIHZvaWQgZmFySnVtcChSZWdpc3Rl
cklEIHRhcmdldEdQUiwgUHRyVGFnIHRhZykKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9Q
dHJUYWcpCi0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcCh0
YXJnZXQsIHRhZyk7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRh
ZyAhPSBOb1B0clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKTsKIAogICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0clRh
Zyk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcp
LCBkaXZlcnNpdHlHUFIpOwotICAgICAgICBmYXJKdW1wKHRhcmdldCwgZGl2ZXJzaXR5R1BSKTsK
KyAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisg
ICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRh
cmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFySnVt
cFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1wPih0YXJnZXRHUFIsIGRpdmVy
c2l0eUdQUik7CiAgICAgfQogCi0gICAgdm9pZCBmYXJKdW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBS
ZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJnZXQsIFB0
clRhZyB0YWcpCiAgICAgewotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldCk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0LCB0YWcpOworICAgICAgICBBU1NFUlQodGFnICE9IENG
dW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVy
VHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CisgICAgICAgIFJlZ2lzdGVySUQg
dGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwor
ICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdp
c3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICBtb3ZlKHRhcmdldCwgdGFyZ2V0R1BSKTsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwgZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAg
aWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAg
ICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwg
ZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVy
PEp1bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7
CiAgICAgfQogCi0gICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykK
KyAgICB2b2lkIGZhckp1bXAoUmVnaXN0ZXJJRCB0YXJnZXRHUFIsIFJlZ2lzdGVySUQgdGFnR1BS
KQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJKdW1wKGFkZHJlc3MsIHRhZyk7CisgICAgICAgIEFT
U0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBT
aWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CisgICAgfQogCi0gICAg
ICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnKTsKKyAgICB2b2lkIGZhckp1bXAoQWRk
cmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZ0dQUikKKyAgICB7CiAgICAgICAgIFJlZ2lzdGVy
SUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
OwotICAgICAgICBSZWdpc3RlcklEIGRpdmVyc2l0eUdQUiA9IGdldENhY2hlZE1lbW9yeVRlbXBS
ZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOworICAgICAgICBBU1NFUlQodGFnR1BSICE9IHRhcmdl
dEdQUik7CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOwotICAgICAgICBtX2Fzc2VtYmxlci5i
cmFiKHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1
bXBTaWduYXR1cmVUeXBlOjpKSVRKdW1wPih0YXJnZXRHUFIsIHRhZ0dQUik7CiAgICAgfQogCi0g
ICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCB0YWcpCisgICAgdm9p
ZCBmYXJKdW1wKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7CiAg
ICAgICAgIFJlZ2lzdGVySUQgdGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpOwotICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7CisgICAg
ICAgIEFTU0VSVCh0YWdHUFIgIT0gdGFyZ2V0R1BSKTsKICAgICAgICAgbG9hZDY0KGFkZHJlc3Ms
IHRhcmdldEdQUik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJyYWIodGFyZ2V0R1BSLCB0YWcpOwor
ICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdl
dEdQUiwgdGFnR1BSKTsKICAgICB9CiAKLSAgICB2b2lkIGZhckp1bXAoQmFzZUluZGV4IGFkZHJl
c3MsIFB0clRhZyB0YWcpCisgICAgdm9pZCBmYXJKdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHRhZ0dQUikKICAgICB7Ci0gICAgICAgIGlmICh0YWcgPT0gTm9QdHJUYWcp
Ci0gICAgICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJBUk02NDo6ZmFySnVtcChhZGRyZXNz
LCB0YWcpOworICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9IGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKKyAgICAgICAgQVNTRVJUKHRhZ0dQUiAhPSB0YXJn
ZXRHUFIpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHRhcmdl
dEdQUik7CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKHRhcmdldEdQUiksIHRhcmdldEdQUik7Cisg
ICAgICAgIGZhckp1bXBSZWdpc3RlcjxKdW1wU2lnbmF0dXJlVHlwZTo6SklUSnVtcD4odGFyZ2V0
R1BSLCB0YWdHUFIpOworICAgIH0KIAotICAgICAgICBBU1NFUlQodGFnICE9IENGdW5jdGlvblB0
clRhZyk7CisgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVzcywgUHRyVGFnIHRhZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVCh0YWcgIT0gQ0Z1bmN0aW9uUHRyVGFnICYmIHRhZyAhPSBOb1B0
clRhZyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJUeXBlKHRhZykgPT0gUHRyVGFnQ2FsbGVyVHlw
ZTo6SklUKTsKICAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgZGl2ZXJzaXR5
R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAgICAg
ICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02
NCh0YWcpLCBkaXZlcnNpdHlHUFIpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQ
UiwgZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdD
YWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVy
ZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1w
Pih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CiAgICAgfQogCi0gICAgdm9pZCBmYXJKdW1wKEJh
c2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIHRhZykKKyAgICB2b2lkIGZhckp1bXAoQmFzZUlu
ZGV4IGFkZHJlc3MsIFB0clRhZyB0YWcpCiAgICAgeworICAgICAgICBBU1NFUlQodGFnICE9IENG
dW5jdGlvblB0clRhZyAmJiB0YWcgIT0gTm9QdHJUYWcpOworICAgICAgICBBU1NFUlQoY2FsbGVy
VHlwZSh0YWcpID09IFB0clRhZ0NhbGxlclR5cGU6OkpJVCk7CiAgICAgICAgIFJlZ2lzdGVySUQg
dGFyZ2V0R1BSID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwot
ICAgICAgICBBU1NFUlQodGFnICE9IHRhcmdldEdQUik7CisgICAgICAgIFJlZ2lzdGVySUQgZGl2
ZXJzaXR5R1BSID0gZ2V0Q2FjaGVkTWVtb3J5VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7
CiAgICAgICAgIGxvYWQ2NChhZGRyZXNzLCB0YXJnZXRHUFIpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tNjQodGFnKSwg
ZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgaWYgKGNhbGxlZVR5cGUodGFnKSA9PSBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQpCisgICAgICAgICAgICBmYXJKdW1wUmVnaXN0ZXI8SnVtcFNpZ25hdHVyZVR5
cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1cmVUeXBlOjpOYXRpdmVKdW1wPih0
YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CiAgICAgfQogCiAgICAgdm9pZCBmYXJKdW1wKEFic29s
dXRlQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcgdGFnKQogICAgIHsKLSAgICAgICAgaWYgKHRhZyA9
PSBOb1B0clRhZykKLSAgICAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpmYXJK
dW1wKGFkZHJlc3MsIHRhZyk7Ci0KKyAgICAgICAgQVNTRVJUKHRhZyAhPSBDRnVuY3Rpb25QdHJU
YWcgJiYgdGFnICE9IE5vUHRyVGFnKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlclR5cGUodGFnKSA9
PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgICAgICBSZWdpc3RlcklEIHRhcmdldEdQUiA9
IGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsKICAgICAgICAgUmVn
aXN0ZXJJRCBkaXZlcnNpdHlHUFIgPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0
YXJnZXRHUFIpOwogICAgICAgICBsb2FkNjQoQWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIp
OwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NCh0YWcpLCBkaXZlcnNpdHlHUFIpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BSKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGZhckp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgdGFnKQot
ICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCB0YXJnZXRHUFIgPSBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCk7Ci0gICAgICAgIEFTU0VSVCh0YWcgIT0gdGFyZ2V0R1BS
KTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCB0YXJnZXRHUFIp
OwotICAgICAgICBsb2FkNjQoQWRkcmVzcyh0YXJnZXRHUFIpLCB0YXJnZXRHUFIpOwotICAgICAg
ICBtX2Fzc2VtYmxlci5icmFiKHRhcmdldEdQUiwgdGFnKTsKKyAgICAgICAgaWYgKGNhbGxlZVR5
cGUodGFnKSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpKSVQpCisgICAgICAgICAgICBmYXJKdW1wUmVn
aXN0ZXI8SnVtcFNpZ25hdHVyZVR5cGU6OkpJVEp1bXA+KHRhcmdldEdQUiwgZGl2ZXJzaXR5R1BS
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmFySnVtcFJlZ2lzdGVyPEp1bXBTaWduYXR1
cmVUeXBlOjpOYXRpdmVKdW1wPih0YXJnZXRHUFIsIGRpdmVyc2l0eUdQUik7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHJldCgpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5y
ZXRhYigpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkgeworICAgICAgICAgICAgSlNDX0pJVF9DQUdFRF9SRVQoKTsKKyAgICAgICAgfSBl
bHNlCisjZW5kaWYKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnJldGFiKCk7CiAgICAgfQogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAppbmRleCAwYzc1OTdiYWY2NDI2NjQ5OTYzNGE1OTgwMTdiZmI2NGMzMTZhNTY0
Li4yYzliOGZmODA5NTE2ZWIwNzc0NGJkZmY4MjY3N2EwYzZjNGZkZjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApA
QCAtMTcxOSw2ICsxNzE5LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNdjcgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3NlbWJsZXIu
YngodGFyZ2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGZhckp1bXAoVHJ1c3RlZEltbVB0ciB0YXJn
ZXQsIFB0clRhZykKKyAgICB7CisgICAgICAgIG1vdmUodGFyZ2V0LCBkYXRhVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAg
ICAgLy8gQWRkcmVzcyBpcyBhIG1lbW9yeSBsb2NhdGlvbiBjb250YWluaW5nIHRoZSBhZGRyZXNz
IHRvIGp1bXAgdG8KICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQdHJUYWcpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKaW5kZXggZTYzYWI0NzU1ZmY4YTFiMDY5N2NjZDczYjYyMjAyMmQ2ZWMwMTk2
My4uYWRhZDU0Y2IwMjYxN2QxMTk3MWJiMjQ1ZTBhMDNmNGQ4ZGFkZmI1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBA
IC0yMDA0LDYgKzIwMDQsMTMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJNSVBTIDogcHVibGljIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5v
cCgpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1tUHRyIHRhcmdldCwgUHRy
VGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuanIoTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKKyAgICB9CisKICAgICB2b2lkIGZhckp1bXAoQWRkcmVzcyBhZGRyZXNzLCBQ
dHJUYWcpCiAgICAgewogICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oCmluZGV4IDI4ZmFlMmU3MmYyNTY1N2U2MTMzMDVmMjAwM2RmY2JlYTVlZWNhOWEuLjc2ZGRi
NTc2OTRkYTI0ZjRhZTgwNWIwNDkzYjQyYThlNjQyZjMwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
QEAgLTI3NTAsNiArMjc1MCwxMiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2Vt
Ymxlci5qbXBfcih0YXJnZXQpOwogICAgIH0KIAorICAgIHZvaWQgZmFySnVtcChUcnVzdGVkSW1t
UHRyIHRhcmdldCwgUHRyVGFnKQorICAgIHsKKyAgICAgICAgbW92ZSh0YXJnZXQsIHNjcmF0Y2hS
ZWdpc3RlcigpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuam1wX3Ioc2NyYXRjaFJlZ2lzdGVyKCkp
OworICAgIH0KKwogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmlu
ZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBmYXJKdW1wKEFkZHJlc3MgYWRkcmVz
cywgUHRyVGFnKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCmluZGV4IDJmZWQxODJlNDU3Zjc0NjYyNjVmNjViMTRjNTk0MzFmMjNlODRh
ZDEuLjA1N2IzMDc4YzJiN2U4NjkzOTMyYjkwNWYxOTRkM2Y3N2I0NjQxOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTQwMyw2ICsx
NDAzLDcgQEAKIG9wIDpsbGludF9pbnRlcm5hbF9mdW5jdGlvbl9jb25zdHJ1Y3RfdHJhbXBvbGlu
ZQogb3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZQog
b3AgOmNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZQorb3AgOm5vcm1hbF9vc3JfZXhpdF90
cmFtcG9saW5lCiBvcCA6ZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludAogb3AgOmxs
aW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3ZhbHVlCiBvcCA6bGxpbnRfaGFuZGxlX3VuY2F1Z2h0
X2V4Y2VwdGlvbgpAQCAtMTQxOSw2ICsxNDIwLDQwIEBACiBvcCA6d2FzbV9mdW5jdGlvbl9wcm9s
b2d1ZQogb3AgOndhc21fZnVuY3Rpb25fcHJvbG9ndWVfbm9fdGxzCiAKK29wIDpvcF9jYWxsX3Ns
b3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9u
CitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJh
dG9yX25leHRfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWlsX2NhbGxfcmV0dXJuX2xv
Y2F0aW9uCitvcCA6b3BfdGFpbF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfdGFp
bF9jYWxsX3ZhcmFyZ3Nfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF9jYWxsX2V2YWxfc2xv
d19yZXR1cm5fbG9jYXRpb24KKworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbAorb3AgOmpzX3Ry
YW1wb2xpbmVfb3BfdGFpbF9jYWxsCitvcCA6anNfdHJhbXBvbGluZV9vcF9jb25zdHJ1Y3QKK29w
IDpqc190cmFtcG9saW5lX29wX2l0ZXJhdG9yX25leHQKK29wIDpqc190cmFtcG9saW5lX29wX2l0
ZXJhdG9yX29wZW4KK29wIDpqc190cmFtcG9saW5lX29wX2NhbGxfc2xvdworb3AgOmpzX3RyYW1w
b2xpbmVfb3BfdGFpbF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF9z
bG93CitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsX3ZhcmFyZ3Nfc2xvdworb3AgOmpzX3RyYW1w
b2xpbmVfb3BfdGFpbF9jYWxsX3ZhcmFyZ3Nfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2NvbnN0
cnVjdF92YXJhcmdzX3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2NhbGxfZXZhbF9zbG93Citv
cCA6anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3cKK29wIDpqc190cmFtcG9saW5l
X29wX2l0ZXJhdG9yX29wZW5fc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50YWcKK29wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZworb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZworb3AgOmpzX3RyYW1wb2xpbmVf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja190YWcKK29wIDp3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsCitvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMK
K29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CitvcCA6d2FzbV90cmFtcG9s
aW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMKKwogZW5kX3NlY3Rpb24gOk5hdGl2ZUhlbHBl
cnMKIAogYmVnaW5fc2VjdGlvbiA6V2FzbSwKQEAgLTE0MzMsNiArMTQ2OCwxMSBAQAogCiBvcCA6
dGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQogCitvcCA6Y2FsbF9yZXR1cm5fbG9jYXRp
b24KK29wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRpb24KK29wIDpjYWxsX2luZGlyZWN0X3Jl
dHVybl9sb2NhdGlvbgorb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzX3JldHVybl9sb2NhdGlvbgor
CiAjIEZJWE1FOiBXYXNtIGFuZCBKUyBMTEludCBzaG91bGQgc2hhcmUgY29tbW9uIG9wY29kZXMK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY1NgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDE1MDNi
ZjAzODQ3YTY0ODUzMzkxMTI3NzY4ZDcwMjUwZTg5YTUzOC4uYjA2MTUwZmNjZjRjN2RkYTVlNTFj
YzVmYWQ2M2NkMzExZDE4MjM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcApAQCAtMzIwLDYgKzMyMCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBJCiAgICAgY2FzZSBsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uOgogICAgIGNhc2Ug
Y2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGluZWRfY2FsbF90cmFtcG9saW5lOgogICAgIGNh
c2UgY2hlY2twb2ludF9vc3JfZXhpdF90cmFtcG9saW5lOgorICAgIGNhc2Ugbm9ybWFsX29zcl9l
eGl0X3RyYW1wb2xpbmU6CiAgICAgY2FzZSBmdXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9o
aW50OgogICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb246CiAgICAgY2Fz
ZSBvcF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbjoKQEAgLTMzMSw4ICszMzIsNDAgQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIG9wX2dldF9ieV92YWxfcmV0dXJuX2xv
Y2F0aW9uOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbjoKICAgICBjYXNl
IG9wX3B1dF9ieV92YWxfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfY2FsbF9zbG93X3Jl
dHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX2NvbnN0cnVjdF9zbG93X3JldHVybl9sb2NhdGlv
bjoKKyAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW5fc2xvd19yZXR1cm5fbG9jYXRpb246CisgICAg
Y2FzZSBvcF9pdGVyYXRvcl9uZXh0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3Bf
dGFpbF9jYWxsX3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9zbG93X3Jl
dHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19z
bG93X3JldHVybl9sb2NhdGlvbjoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzX3Nsb3df
cmV0dXJuX2xvY2F0aW9uOgorICAgIGNhc2Ugb3BfY2FsbF9ldmFsX3Nsb3dfcmV0dXJuX2xvY2F0
aW9uOgogICAgIGNhc2Ugd2FzbV9mdW5jdGlvbl9wcm9sb2d1ZToKICAgICBjYXNlIHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWVfbm9fdGxzOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF9jYWxsOgor
ICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGw6CisgICAgY2FzZSBqc190cmFtcG9s
aW5lX29wX2NvbnN0cnVjdDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3JfbmV4
dDoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3BlbjoKKyAgICBjYXNlIGpz
X3RyYW1wb2xpbmVfb3BfY2FsbF9zbG93OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9vcF90YWls
X2NhbGxfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3c6Cisg
ICAgY2FzZSBqc190cmFtcG9saW5lX29wX2NhbGxfdmFyYXJnc19zbG93OgorICAgIGNhc2UganNf
dHJhbXBvbGluZV9vcF90YWlsX2NhbGxfdmFyYXJnc19zbG93OgorICAgIGNhc2UganNfdHJhbXBv
bGluZV9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdzoKKyAgICBjYXNlIGpzX3Ry
YW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xp
bmVfb3BfY2FsbF9ldmFsX3Nsb3c6CisgICAgY2FzZSBqc190cmFtcG9saW5lX29wX2l0ZXJhdG9y
X25leHRfc2xvdzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfb3BfaXRlcmF0b3Jfb3Blbl9zbG93
OgorICAgIGNhc2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVja191bnRhZzoKKyAgICBjYXNlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2tfdGFnOgorICAgIGNhc2UganNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3VudGFnOgorICAgIGNhc2UganNfdHJhbXBvbGlu
ZV9sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrX3RhZzoKKyAgICBjYXNl
IHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJl
Y3Q6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoK
ICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgfQogICAgIHJldHVybiBDYW5ub3RD
b21waWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IGRkNjY2ZmFhODNlODM1MDllNjViMDc1NTc2MjJmMDhh
OTQ5NDIxYmQuLjlkMjFiNWIxNjRlZmJhNGMyZWIzMTJiYTUwYjNkNmYzYzdjNjU3MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKQEAgLTEzOCwyMSArMTM4LDIxIEBAIHZvaWQgaGFuZGxlRXhpdENvdW50cyhWTSYg
dm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICBkb25l
QWRqdXN0aW5nLmxpbmsoJmppdCk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5
UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2Fs
bGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUluZGV4LCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQgdHJ1ZUNhbGxlckNhbGxLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KQorc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjYWxsZXJSZXR1cm5QQyhDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLCBCeXRlY29kZUluZGV4IGNhbGxCeXRlY29kZUlu
ZGV4LCBJbmxpbmVDYWxsRnJhbWU6OktpbmQgdHJ1ZUNhbGxlckNhbGxLaW5kLCBib29sJiBjYWxs
ZXJJc0xMSW50KQogewogICAgIGNhbGxlcklzTExJbnQgPSBPcHRpb25zOjpmb3JjZU9TUkV4aXRU
b0xMSW50KCkgfHwgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmppdFR5cGUoKSA9PSBKSVRU
eXBlOjpJbnRlcnByZXRlclRodW5rOwogCiAgICAgaWYgKGNhbGxCeXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKSkgewogICAgICAgICBpZiAoIWNhbGxlcklzTExJbnQpCiAgICAgICAgICAgICBiYXNl
bGluZUNvZGVCbG9ja0ZvckNhbGxlci0+bV9oYXNMaW5rZWRPU1JFeGl0ID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3Ny
X2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGluZSk7CisgICAgICAgIHJldHVybiBMTElu
dDo6Y2hlY2twb2ludE9TUkV4aXRGcm9tSW5saW5lZENhbGxUcmFtcG9saW5lVGh1bmsoKS5jb2Rl
KCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGp1
bXBUYXJnZXQ7CiAKICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY2FsbEluc3RydWN0aW9uID0gKmJh
c2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5pbnN0cnVjdGlvbnMoKS5hdChjYWxsQnl0ZWNvZGVJ
bmRleCkucHRyKCk7CiAgICAgaWYgKGNhbGxlcklzTExJbnQpIHsKLSNkZWZpbmUgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG5hbWUpIChjYWxsSW5zdHJ1Y3Rpb24uaXNXaWRlMTYoKSA/IExMSW50Ojpn
ZXRXaWRlMTZDb2RlUHRyPEpTRW50cnlQdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pIDog
KGNhbGxJbnN0cnVjdGlvbi5pc1dpZGUzMigpID8gTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNF
bnRyeVB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikgOiBMTEludDo6Z2V0Q29kZVB0cjxK
U0VudHJ5UHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSkpCisjZGVmaW5lIExMSU5UX1JF
VFVSTl9MT0NBVElPTihuYW1lKSBMTEludDo6cmV0dXJuTG9jYXRpb25UaHVuayhuYW1lIyNfcmV0
dXJuX2xvY2F0aW9uLCBjYWxsSW5zdHJ1Y3Rpb24ud2lkdGgoKSkuY29kZSgpCiAKICAgICAgICAg
c3dpdGNoICh0cnVlQ2FsbGVyQ2FsbEtpbmQpIHsKICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJh
bWU6OkNhbGw6IHsKQEAgLTQwNCw5ICs0MDQsOSBAQCB2b2lkIGFkanVzdEFuZEp1bXBUb1Rhcmdl
dChWTSYgdm0sIENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAg
ICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9ICpjb2RlQmxvY2tG
b3JFeGl0LT5pbnN0cnVjdGlvbnMoKS5hdChieXRlY29kZUluZGV4KS5wdHIoKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAg
ICBpZiAoYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpCi0gICAgICAgICAgICBkZXN0aW5hdGlv
biA9IExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRf
dHJhbXBvbGluZSk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IExMSW50OjpjaGVja3BvaW50
T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKTsKICAgICAgICAgZWxzZSAKLSAgICAgICAg
ICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY3VycmVu
dEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6Om5vcm1hbE9T
UkV4aXRUcmFtcG9saW5lVGh1bmsoKS5jb2RlKCk7CiAKICAgICAgICAgaWYgKGV4aXQuaXNFeGNl
cHRpb25IYW5kbGVyKCkpIHsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cigmY3VycmVudEluc3RydWN0aW9uKSwgR1BSSW5mbzo6cmVnVDIpOwpAQCAtNDIz
LDcgKzQyMyw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KFZNJiB2bSwgQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICBCeXRlY29kZUluZGV4
IGV4aXRJbmRleCA9IGV4aXQubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGRlc3RpbmF0aW9uOwogICAgICAg
ICBpZiAoZXhpdEluZGV4LmNoZWNrcG9pbnQoKSkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
TExJbnQ6OmdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4oY2hlY2twb2ludF9vc3JfZXhpdF90cmFt
cG9saW5lKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gTExJbnQ6OmNoZWNrcG9pbnRPU1JF
eGl0VHJhbXBvbGluZVRodW5rKCkuY29kZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChjb2RlQmxvY2tGb3JFeGl0LT5ieXRlY29kZUluZGV4Rm9yRXhpdChleGl0SW5kZXgp
ID09IGV4aXRJbmRleCk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNvZGVCbG9ja0ZvckV4
aXQtPmppdENvZGVNYXAoKS5maW5kKGV4aXRJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAppbmRleCAzOTExNGVhNjc3
MDAyYTk4MmYyZWI4MWU3ZDI4Zjg2ZjIyOGY2ZDBkLi5kYmEwZmUzMjJiZjg4MWM5NWMyMmRiODUw
NjE2MjQyMDRhNmFhYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogdm9pZCBoYW5kbGVFeGl0Q291bnRzKFZNJiwgQ0NhbGxIZWxw
ZXJzJiwgY29uc3QgT1NSRXhpdEJhc2UmKTsKIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhD
Q2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwogdm9pZCBhZGp1c3RBbmRKdW1wVG9U
YXJnZXQoVk0mLCBDQ2FsbEhlbHBlcnMmLCBjb25zdCBPU1JFeGl0QmFzZSYpOwotTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNhbGxlclJldHVyblBDKENvZGVCbG9jayogYmFz
ZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIsIEJ5dGVjb2RlSW5kZXggY2FsbEJ5dGVjb2RlSW5kZXgs
IElubGluZUNhbGxGcmFtZTo6S2luZCBjYWxsZXJLaW5kLCBib29sJiBjYWxsZXJJc0xMSW50KTsK
IENDYWxsSGVscGVyczo6QWRkcmVzcyBjYWxsZWVTYXZlU2xvdChJbmxpbmVDYWxsRnJhbWUqLCBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBHUFJSZWcgY2FsbGVlU2F2ZSk7CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBKSVRDb2RlVHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IGZmOWE4YWZkMDU5NDVjMjliOTc4YzFm
ZjNjZjk3YTIyMmJiNGI5MjEuLjliZTY0YmJkZjBmMjhmZDU3NGE0MjU4ODRjZDUzNDFkZjFhNjY0
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcApAQCAtNDgsNiArNDgsMTggQEAKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNpbmNs
dWRlIDxtYWNoL21hY2hfdGltZS5oPgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9KSVRDYWdlQWRkaXRpb25zLmg+CisjZWxzZSAvLyBFTkFCTEUoSklU
X0NBR0UpCisjaWYgT1MoREFSV0lOKQorI2RlZmluZSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklUIE1B
UF9KSVQKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9XSVRIX0pJVF9DQUdFIE1BUF9K
SVQKKyNlbHNlIC8vIE9TKERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCAw
CisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSAwCisjZW5kaWYg
Ly8gT1MoREFSV0lOKQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKKwogZXh0ZXJuICJDIiB7
CiAgICAgLyogUm91dGluZSBtYWNoX3ZtX3JlbWFwICovCiAjaWZkZWYgbWlnX2V4dGVybmFsCkBA
IC0xMzksOCArMTUxLDggQEAgdm9pZCBFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIAogICAgICAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUgPSAxOwogICAg
ICAgICBjb25zdGV4cHIgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwg
UFJPVF9FWEVDOwotICAgICAgICBjb25zdGV4cHIgaW50IGZsYWdzID0gTUFQX1BSSVZBVEUgfCBN
QVBfQU5PTiB8IE1BUF9KSVQ7CiAgICAgICAgIGNvbnN0ZXhwciBpbnQgZmQgPSBPU0FsbG9jYXRv
cjo6SlNKSVRDb2RlUGFnZXM7CisgICAgICAgIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQ
X0FOT04gfCAoT3B0aW9uczo6dXNlSklUQ2FnZSgpID8gTUFQX0VYRUNVVEFCTEVfRk9SX0pJVF9X
SVRIX0pJVF9DQUdFIDogTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCk7CiAgICAgICAgIHZvaWQqIGFs
bG9jYXRpb24gPSBtbWFwKG51bGxwdHIsIHNpemUsIHByb3RlY3Rpb24sIGZsYWdzLCBmZCwgMCk7
CiAgICAgICAgIGNvbnN0IHZvaWQqIGV4ZWN1dGFibGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KC0xKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbiAhPSBleGVjdXRhYmxlTWVtb3J5QWxs
b2NhdGlvbkZhaWx1cmUsICJXZSBzaG91bGQgbm90IGhhdmUgYWxsb2NhdGVkIGV4ZWN1dGFibGUg
bWVtb3J5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIEpJVC4iKTsKQEAgLTMyNCw5ICszMzYsOSBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBKSVRSZXNlcnZhdGlvbiBpbml0aWFsaXplSklUUGFnZVJlc2Vy
dmF0aW9uKCkKICAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgZm9sbG93aW5nIEpJVCBjb2RlIGxv
Z2dpbmcgYnJva2VuIGFuZCBzb21lIG9mIEpJVCBjb2RlIGlzIG5vdCByZWNvcmRlZCBjb3JyZWN0
bHkuCiAgICAgICAgIC8vIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgd2UgdXNlIGNvbW1pdHRlZCBy
ZXNlcnZhdGlvbiBpZiB3ZSBuZWVkIHBlcmYgSklURHVtcCBsb2dnaW5nLgogICAgICAgICBpZiAo
T3B0aW9uczo6bG9nSklUQ29kZUZvclBlcmYoKSkKLSAgICAgICAgICAgIHJldHVybiBQYWdlUmVz
ZXJ2YXRpb246OnJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUs
IE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQYWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0
cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb246OnJlc2VydmVBbmRDb21t
aXRXaXRoR3VhcmRQYWdlcyhyZXNlcnZhdGlvblNpemUsIE9TQWxsb2NhdG9yOjpKU0pJVENvZGVQ
YWdlcywgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFLCB0cnVlLCBmYWxzZSk7CiAjZW5kaWYKLSAg
ICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZVdpdGhHdWFyZFBhZ2VzKHJlc2Vy
dmF0aW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTSklUQ29kZVBhZ2VzLCBFWEVDVVRBQkxFX1BPT0xf
V1JJVEFCTEUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZl
V2l0aEd1YXJkUGFnZXMocmVzZXJ2YXRpb25TaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFn
ZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSwgT3B0aW9uczo6dXNlSklUQ2FnZSgp
KTsKICAgICB9OwogCiAgICAgcmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uID0gdHJ5Q3JlYXRl
UGFnZVJlc2VydmF0aW9uKHJlc2VydmF0aW9uLnNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQ
UkluZm8uaAppbmRleCA3NGRhZTIyNmY1NDViN2FhYWYzNDc4NzQ0MzM2NDI3MDAxNWJkMGE0Li44
ZjQ1YjM3N2MxNjk2YTUxNmE4NDMwMGI4OTIxZjZhZGQ2YTNkNGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dQUkluZm8uaApAQCAtNDY1LDYgKzQ2NSwxMCBAQCBjbGFzcyBHUFJJbmZvIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBYODZS
ZWdpc3RlcnM6OnIxMDsgLy8gcmVnVDUgKHJlZ1Q0IG9uIFdpbmRvd3MpCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uQXJndW1lbnRHUFIwID0gWDg2UmVnaXN0ZXJz
OjpyMTA7IC8vIHJlZ1Q1IChyZWdUNCBvbiBXaW5kb3dzKQogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMSA9IFg4NlJlZ2lzdGVyczo6ZWF4Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMCA9IFg4NlJlZ2lzdGVy
czo6ZWF4OworI2lmICFPUyhXSU5ET1dTKQorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdh
c21TY3JhdGNoR1BSMSA9IFg4NlJlZ2lzdGVyczo6cjEwOworI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogSSBiZWxpZXZlIHRoYXQgYWxsIHVzZXMgb2YgdGhpcyBhcmUgZGVhZCBpbiB0aGUgc2Vuc2Ug
dGhhdCBpdCBqdXN0IGNhdXNlcyB0aGUgc2NyYXRjaAogICAgIC8vIHJlZ2lzdGVyIGFsbG9jYXRv
ciB0byBzZWxlY3QgYSBkaWZmZXJlbnQgcmVnaXN0ZXIgYW5kIHBvdGVudGlhbGx5IHNwaWxsIHRo
aW5ncy4gSXQgd291bGQgYmUgYmV0dGVyCkBAIC02MzQsNyArNjM4LDcgQEAgY2xhc3MgR1BSSW5m
byB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gQVJNNjRSZWdpc3RlcnM6
OngyMjsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJl
Z0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBVc2Vk
IGJ5IEZUTCBvbmx5Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJNNjRS
ZWdpc3RlcnM6OngyNTsgLy8gVXNlZCBieSBGVEwgb25seQorICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHJlZ0NTNiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyBudW1iZXJUYWcKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBBUk02NFJlZ2lzdGVyczo6eDI4OyAv
LyBub3RDZWxsTWFzawpAQCAtNjU0LDYgKzY1OCw4IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCA9IEFSTTY0
UmVnaXN0ZXJzOjp4ODsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWRO
b25Bcmd1bWVudEdQUjEgPSBBUk02NFJlZ2lzdGVyczo6eDk7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjppcDA7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgd2FzbVNjcmF0Y2hHUFIwID0gQVJNNjRSZWdp
c3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHdhc21TY3JhdGNoR1BSMSA9
IEFSTTY0UmVnaXN0ZXJzOjp4MTA7CiAKICAgICAvLyBHUFJSZWcgbWFwcGluZyBpcyBkaXJlY3Qs
IHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG51bWJlcnMgY2FuCiAgICAgLy8gYmUgdXNlZCBkaXJlY3Rs
eSBhcyBpbmRpY2VzIGludG8gdGhlIEdQUiBSZWdpc3RlckJhbmsuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmlu
ZGV4IDE4ZTVmZmVlOWNhMzkzYjZlOWZjYzE0ODBlMDcyNzUwYzQ1MjhmZDUuLmM0NTM0NmU5MDRh
OWQxMzdkNzk2ZGYxZjUxYzY4ZDk3ZjQwZWI4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIFBvbHltb3JwaGljQ2FsbE5vZGU6On5Qb2x5bW9ycGhpY0NhbGxOb2RlKCkKIHZv
aWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBpZiAobV9jYWxs
TGlua0luZm8pIHsKLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5
KCksICJVbmxpbmtpbmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+Y2Fs
bFJldHVybkxvY2F0aW9uKCksICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkpOwor
ICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSwgIlVubGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24oKSwgIiwgYmMjIiwgbV9jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4
KCkpOwogICAgICAgICBtX2NhbGxMaW5rSW5mby0+dW5saW5rKHZtKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA3MWRkOTgw
MjhmNDdlOTk3ZTUyNTMwMGI3YzBkNmFhYjljYmYyYTgzLi4zNjI3MjU1MTRjMTBjOGE5MjJkNWYw
MzIwNWZjOTMyM2QwZTU3YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCkBAIC00NCwxMyArNDQsMTUgQEAgaW5saW5lIHZvaWQgZW1pdFBvaW50
ZXJWYWxpZGF0aW9uKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcG9pbnRlckdQUiwgVGFnVHlw
ZQogewogICAgIGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKLSAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJz
OjpOb25aZXJvLCBwb2ludGVyR1BSKTsKLSAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRHSW52YWxp
ZFBvaW50ZXIpOwotICAgIGlzTm9uWmVyby5saW5rKCZqaXQpOwotICAgIGppdC5wdXNoVG9TYXZl
KHBvaW50ZXJHUFIpOwotICAgIGppdC51bnRhZ1B0cih0YWcsIHBvaW50ZXJHUFIpOwotICAgIGpp
dC5sb2FkOChwb2ludGVyR1BSLCBwb2ludGVyR1BSKTsKLSAgICBqaXQucG9wVG9SZXN0b3JlKHBv
aW50ZXJHUFIpOworICAgIGlmICghT3B0aW9uczo6dXNlSklUQ2FnZSgpKSB7CisgICAgICAgIEND
YWxsSGVscGVyczo6SnVtcCBpc05vblplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIHBvaW50ZXJHUFIpOworICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKFRH
SW52YWxpZFBvaW50ZXIpOworICAgICAgICBpc05vblplcm8ubGluaygmaml0KTsKKyAgICAgICAg
aml0LnB1c2hUb1NhdmUocG9pbnRlckdQUik7CisgICAgICAgIGppdC51bnRhZ1B0cih0YWcsIHBv
aW50ZXJHUFIpOworICAgICAgICBqaXQubG9hZDgocG9pbnRlckdQUiwgcG9pbnRlckdQUik7Cisg
ICAgICAgIGppdC5wb3BUb1Jlc3RvcmUocG9pbnRlckdQUik7CisgICAgfQogfQogCiAvLyBXZSB3
aWxsIGp1bXAgaGVyZSBpZiB0aGUgSklUIGNvZGUgdHJpZXMgdG8gbWFrZSBhIGNhbGwsIGJ1dCB0
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNjJkY2E4
ZmYyOWRlNTA4MTAyYTNiNjAzNDAyNzdiYzdiMGQyNTYwNS4uZDhlOTQ0MzM2N2Y1MGM4NDljNjgx
MDE3MDY5ODA1MTg2MGYxMzY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKQEAgLTMwLDEyICszMCwxMyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkpTQ0NvbmZpZy5oIgogI2luY2x1ZGUgIkxMSW50Q0xvb3AuaCIKKyNpbmNsdWRlICJM
TEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJPcGNv
ZGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKIAogI2RlZmluZSBTVEFUSUNfQVNTRVJU
KGNvbmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkxMSW50IGFzc3VtZXMgIiAjY29uZCkKIAotCiBu
YW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIExMSW50IHsKQEAgLTQ5LDEyICs1MCwyMiBAQCBl
eHRlcm4gIkMiIHZvaWQgd2FzbV9lbnRyeSh2b2lkKiwgdm9pZCosIHZvaWQqKTsKIAogI2VuZGlm
IC8vICFFTkFCTEUoQ19MT09QKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB2
b2lkIHZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lKHZvaWQpOworZXh0ZXJuICJDIiB2b2lk
IHZtRW50cnlUb05hdGl2ZVRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgdGFpbENh
bGxKU0VudHJ5VHJhbXBvbGluZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCB0YWlsQ2FsbEpTRW50
cnlTbG93UGF0aFRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgZXhjZXB0aW9uSGFu
ZGxlclRyYW1wb2xpbmUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQgcmV0dXJuRnJvbUxMSW50VHJh
bXBvbGluZSh2b2lkKTsKKyNlbmRpZgorCiB2b2lkIGluaXRpYWxpemUoKQogewogI2lmIEVOQUJM
RShDX0xPT1ApCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIAogI2Vsc2UgLy8gIUVOQUJMRShD
X0xPT1ApCisKICAgICBsbGludF9lbnRyeSgmZ19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwLCAm
Z19qc2NDb25maWcubGxpbnQub3Bjb2RlTWFwV2lkZTE2LCAmZ19qc2NDb25maWcubGxpbnQub3Bj
b2RlTWFwV2lkZTMyKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTcyLDYgKzgzLDEz
MiBAQCB2b2lkIGluaXRpYWxpemUoKQogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5leGNlcHRp
b25JbnN0cnVjdGlvbnNbaV0gPSBsbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5l
OwogICAgICAgICBnX2pzY0NvbmZpZy5sbGludC53YXNtRXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ld
ID0gd2FzbV90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOwogICAgIH0KKworICAgIEpJ
VE9wZXJhdGlvbkxpc3Q6OnBvcHVsYXRlUG9pbnRlcnNJbkphdmFTY3JpcHRDb3JlRm9yTExJbnQo
KTsKKworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICBpZiAoT3B0aW9uczo6dXNlSklUQ2FnZSgp
KQorICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihHYXRlOjpqaXRDYWdlUHRyKV0gPSBqaXRDYWdlUHRyVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKworI2RlZmluZSBJTklUSUFMSVpFX0pTX0dBVEUobmFtZSwgdGFnKSBcCisg
ICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4OyBcCisgICAgICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVm
MzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwKKyAgICAgICAgICAgIGNv
ZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENG
dW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRy
PENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1lKSk7
IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoY3JlYXRlSlNHYXRlVGh1bmsocmV0
YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlvblB0clRhZz4oTExJbnQ6
OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxDRnVuY3Rpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5f
bG9jYXRpb24pKSwgdGFnLCAjbmFtZSAiX3dpZGUxNiIpKTsgXAorICAgICAgICAgICAgY29kZVJl
ZjMyLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5j
dGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9u
UHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9sb2NhdGlvbikpLCB0YWcsICNuYW1l
ICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIGNvZGVSZWY4
LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3Ry
YW1wb2xpbmVfIyNuYW1lKSk7IFwKKyAgICAgICAgICAgIGNvZGVSZWYxNi5jb25zdHJ1Y3QoTExJ
bnQ6OmdldFdpZGUxNkNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPihqc190cmFtcG9saW5l
XyMjbmFtZSkpOyBcCisgICAgICAgICAgICBjb2RlUmVmMzIuY29uc3RydWN0KExMSW50OjpnZXRX
aWRlMzJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUp
KTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSldID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjX3dpZGUxNildID0gY29kZVJlZjE2Lmdl
dCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxs
aW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9
IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hp
bGUgKDApOworCisgICAgSlNDX0pTX0dBVEVfT1BDT0RFUyhJTklUSUFMSVpFX0pTX0dBVEUpCisK
KyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSU5JVElBTElaRV9XQVNNX0dBVEUo
bmFtZSwgdGFnKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWY4
OyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IGNvZGVSZWYxNjsgXAorICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+PiBjb2RlUmVmMzI7IFwKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKSB7IFwK
KyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChjcmVhdGVXYXNtR2F0ZVRodW5rKHJldGFn
Q29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9u
KSksIHRhZywgI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJlZjE2LmNvbnN0cnVjdChjcmVh
dGVXYXNtR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBPcGVy
YXRpb25QdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8Q0Z1bmN0aW9uUHRy
VGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSksIHRhZywgI25hbWUgIl93aWRlMTYiKSk7IFwK
KyAgICAgICAgICAgIGNvZGVSZWYzMi5jb25zdHJ1Y3QoY3JlYXRlV2FzbUdhdGVUaHVuayhyZXRh
Z0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPihMTEludDo6
Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPENGdW5jdGlvblB0clRhZz4obmFtZSMjX3JldHVybl9s
b2NhdGlvbikpLCB0YWcsICNuYW1lICJfd2lkZTMyIikpOyBcCisgICAgICAgIH0gZWxzZSB7IFwK
KyAgICAgICAgICAgIGNvZGVSZWY4LmNvbnN0cnVjdChMTEludDo6Z2V0Q29kZVJlZjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAg
Y29kZVJlZjE2LmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTE2Q29kZVJlZjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICAgICAgY29kZVJl
ZjMyLmNvbnN0cnVjdChMTEludDo6Z2V0V2lkZTMyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJU
YWc+KHdhc21fdHJhbXBvbGluZV8jI25hbWUpKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19q
c2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSld
ID0gY29kZVJlZjguZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFt
ZSMjX3dpZGUxNildID0gY29kZVJlZjE2LmdldCgpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
OyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEdhdGU6Om5hbWUjI193aWRlMzIpXSA9IGNvZGVSZWYzMi5nZXQoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsgXAorICAgIH0gd2hpbGUgKDApOworCisgICAgSlNDX1dBU01fR0FURV9P
UENPREVTKElOSVRJQUxJWkVfV0FTTV9HQVRFKQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQorCisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVh
dGVKU0dhdGVUaHVuayhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0
aW9uUHRyVGFnPigmdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlciksIEpTRW50cnlQdHJUYWcs
ICJ2bUVudHJ5VG9KYXZhU2NyaXB0IikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVU
b0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRy
PHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnZtRW50cnlU
b0phdmFTY3JpcHRUcmFtcG9saW5lKSkpKTsKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0
ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCldID0g
Y29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgewor
ICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNl
SklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChjcmVhdGVKU0dhdGVUaHVuayhy
ZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgT3BlcmF0aW9uUHRyVGFnPih2bUVu
dHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpLCBIb3N0RnVuY3Rpb25QdHJUYWcsICJ2bUVudHJ5VG9OYXRp
dmUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNy
ZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0
clRhZywgTmF0aXZlVG9KSVRHYXRlUHRyVGFnPigmdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZSkp
KSk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEdhdGU6OnZtRW50cnlUb05hdGl2ZSldID0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVz
dHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2Rl
UmVmOworICAgICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChjcmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVB0clRhZykpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJs
ZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklU
R2F0ZVB0clRhZz4oJnRhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pz
Y0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPihHYXRlOjp0YWlsQ2Fs
bEpTRW50cnlQdHJUYWcpXT0gY29kZVJlZi5nZXQoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICB9CisgICAgeworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChj
cmVhdGVUYWlsQ2FsbEdhdGUoSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRk
cmVzcyhyZXRhZ0NvZGVQdHI8dm9pZCosIENGdW5jdGlvblB0clRhZywgTmF0aXZlVG9KSVRHYXRl
UHRyVGFnPigmdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lKSkpKTsKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6dGFp
bENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CisgICAgfQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29k
ZVJlZjsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+KCZleGNlcHRpb25IYW5kbGVyVHJhbXBvbGluZSkpKSk7CisgICAgICAgIGdfanNjQ29u
ZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmV4Y2VwdGlvbkhh
bmRsZXIpXSA9IGNvZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
fQorICAgIHsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVCgpKQorICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QocmV0dXJuRnJv
bUxMSW50R2F0ZVRodW5rKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUmVmLmNv
bnN0cnVjdChNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOYXRpdmVUb0pJVEdh
dGVQdHJUYWc+OjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0YWdDb2RlUHRyPHZvaWQq
LCBDRnVuY3Rpb25QdHJUYWcsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oJnJldHVybkZyb21MTElu
dFRyYW1wb2xpbmUpKSkpOworICAgICAgICBnX2pzY0NvbmZpZy5sbGludC5nYXRlTWFwW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihHYXRlOjpyZXR1cm5Gcm9tTExJbnQpXSA9IGNvZGVSZWYuZ2V0KCku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgfQorCisgICAgaWYgKE9wdGlvbnM6OnVz
ZUpJVCgpKSB7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50LmdhdGVNYXBbc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEdhdGU6Omxvb3BPU1JFbnRyeSldID0gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lmdh
dGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6OmVudHJ5T1NSRW50cnkpXSA9IGVudHJ5
T1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAg
Z19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6d2Fz
bU9TUkVudHJ5KV0gPSB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKS5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKTsKKyAgICB9CisKKyNkZWZpbmUgSU5JVElBTElaRV9UQUdfQU5EX1VOVEFHX1RIVU5L
UyhuYW1lKSBcCisgICAgZG8geyBcCisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4+IHRhZ0NvZGVSZWY7
IFwKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gdW50YWdDb2RlUmVmOyBcCisgICAgICAgIGlmIChP
cHRpb25zOjp1c2VKSVQoKSkgeyBcCisgICAgICAgICAgICB0YWdDb2RlUmVmLmNvbnN0cnVjdCh0
YWdHYXRlVGh1bmsocmV0YWdDb2RlUHRyPHZvaWQqLCBDRnVuY3Rpb25QdHJUYWcsIE9wZXJhdGlv
blB0clRhZz4obmFtZSMjVGFnR2F0ZUFmdGVyKSkpOyBcCisgICAgICAgICAgICB1bnRhZ0NvZGVS
ZWYuY29uc3RydWN0KHVudGFnR2F0ZVRodW5rKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9u
UHRyVGFnLCBPcGVyYXRpb25QdHJUYWc+KG5hbWUjI1VudGFnR2F0ZUFmdGVyKSkpOyBcCisgICAg
ICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgIHRhZ0NvZGVSZWYuY29uc3RydWN0KExMSW50Ojpn
ZXRDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4oanNfdHJhbXBvbGluZV8jI25hbWUjI190
YWcpKTsgXAorICAgICAgICAgICAgdW50YWdDb2RlUmVmLmNvbnN0cnVjdChMTEludDo6Z2V0Q29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+KGpzX3RyYW1wb2xpbmVfIyNuYW1lIyNfdW50YWcp
KTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZ19qc2NDb25maWcubGxpbnQuZ2F0ZU1hcFtzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oR2F0ZTo6bmFtZSMjVGFnKV0gPSB0YWdDb2RlUmVmLmdldCgpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOyBcCisgICAgICAgIGdfanNjQ29uZmlnLmxsaW50Lmdh
dGVNYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdhdGU6Om5hbWUjI1VudGFnKV0gPSB1bnRhZ0Nv
ZGVSZWYuZ2V0KCkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7IFwKKyAgICB9IHdoaWxlICgw
KTsKKworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVOS1MobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgIElOSVRJQUxJWkVfVEFHX0FORF9VTlRBR19USFVO
S1MobGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7CisjZW5kaWYgLy8g
RU5BQkxFKEpJVF9DQUdFKQogI2VuZGlmIC8vIEVOQUJMRShDX0xPT1ApCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjYjQ0NWY1ZTkyY2U1MjY0ZTI3MzY1
OWNkMDg3MDU0NjNlM2RjMDdkLi4wNWMwMjFhMTg4MjBmNTkzMTc5ZTQ1NmIwZGY0ZTMxZmVhMjgx
OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0yMDQsNiAr
MjA0LDkzIEBAIEFMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlvblB0
cihPcGNvZGVJRCBvcGNvZGVJRCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorCitpbmxpbmUgT3Bjb2RlIGdldE9wY29kZShXYXNtT3Bjb2RlSUQgaWQpCit7CisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKKyAgICByZXR1cm4gZ19qc2NDb25maWcubGxpbnQu
b3Bjb2RlTWFwW251bU9wY29kZUlEcyArIGlkXTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE9wY29kZT4oaWQpOworI2VuZGlmCit9CisKK2lubGluZSBPcGNvZGUgZ2V0T3Bjb2RlV2lk
ZTE2KFdhc21PcGNvZGVJRCBpZCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVT
KQorICAgIHJldHVybiBnX2pzY0NvbmZpZy5sbGludC5vcGNvZGVNYXBXaWRlMTZbbnVtT3Bjb2Rl
SURzICsgaWRdOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworaW5saW5lIE9wY29kZSBnZXRPcGNvZGVX
aWRlMzIoV2FzbU9wY29kZUlEIGlkKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09E
RVMpCisgICAgcmV0dXJuIGdfanNjQ29uZmlnLmxsaW50Lm9wY29kZU1hcFdpZGUzMltudW1PcGNv
ZGVJRHMgKyBpZF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgor
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPiBnZXRDb2RlUHRyKFdhc21P
cGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICB2b2lkKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZ2V0T3Bjb2RlKG9wY29kZUlEKSk7CisgICAgYWRkcmVzcyA9IHJldGFnQ29kZVB0
cjxCeXRlY29kZVB0clRhZywgdGFnPihhZGRyZXNzKTsKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPHRhZz46OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhhZGRyZXNzKTsKK30K
KwordGVtcGxhdGU8UHRyVGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPHRhZz4gZ2V0V2lkZTE2Q29kZVB0cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAg
dm9pZCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldE9wY29kZVdpZGUxNihv
cGNvZGVJRCkpOworICAgIGFkZHJlc3MgPSByZXRhZ0NvZGVQdHI8Qnl0ZWNvZGVQdHJUYWcsIHRh
Zz4oYWRkcmVzcyk7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+OjpjcmVh
dGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYWRkcmVzcyk7Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0
YWc+CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjx0YWc+IGdldFdpZGUzMkNv
ZGVQdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHZvaWQqIGFkZHJlc3MgPSByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRPcGNvZGVXaWRlMzIob3Bjb2RlSUQpKTsKKyAgICBhZGRy
ZXNzID0gcmV0YWdDb2RlUHRyPEJ5dGVjb2RlUHRyVGFnLCB0YWc+KGFkZHJlc3MpOworICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8dGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKGFkZHJlc3MpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorQUxXQVlTX0lOTElORSBM
TEludENvZGUgZ2V0Q29kZUZ1bmN0aW9uUHRyKFdhc21PcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyNp
ZiBDT01QSUxFUihNU1ZDKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PExMSW50Q29kZT4o
Z2V0Q29kZVB0cjx0YWc+KG9wY29kZUlEKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbHNlCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRDb2RlUHRyPHRhZz4ob3Bj
b2RlSUQpLnRlbXBsYXRlIGV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCit9CisKK3RlbXBs
YXRlPFB0clRhZyB0YWc+CitBTFdBWVNfSU5MSU5FIExMSW50Q29kZSBnZXRXaWRlMTZDb2RlRnVu
Y3Rpb25QdHIoV2FzbU9wY29kZUlEIG9wY29kZUlEKQoreworI2lmIENPTVBJTEVSKE1TVkMpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TExJbnRDb2RlPihnZXRXaWRlMTZDb2RlUHRyPHRh
Zz4ob3Bjb2RlSUQpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2Vsc2UKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUxNkNvZGVQdHI8dGFnPihvcGNvZGVJRCku
dGVtcGxhdGUgZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGU8UHRy
VGFnIHRhZz4KK0FMV0FZU19JTkxJTkUgTExJbnRDb2RlIGdldFdpZGUzMkNvZGVGdW5jdGlvblB0
cihXYXNtT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxMTEludENvZGU+KGdldFdpZGUzMkNvZGVQdHI8dGFnPihvcGNv
ZGVJRCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PExMSW50Q29kZT4oZ2V0V2lkZTMyQ29kZVB0cjx0YWc+KG9wY29kZUlEKS50ZW1wbGF0
ZSBleGVjdXRhYmxlQWRkcmVzcygpKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKwogI2Vsc2UKIEFM
V0FZU19JTkxJTkUgdm9pZCogZ2V0Q29kZVB0cihPcGNvZGVJRCBpZCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAKaW5kZXggNmQ2ZDI0OWZh
NjM0ZmQ3ZGU1NmI5YzE1ZTM4NDFhM2YyYjlmMTFlOC4uYzFhMjhmMGE0OWU1MWM4NTRhZDM2MWJl
NWRiMGU4MTgzZTk0NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludC5jcHAKQEAgLTM1LDYgKzM1LDIyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgewogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB2b2lk
IGpzVHJhbXBvbGluZVByb2dyYW1Qcm9sb2d1ZSh2b2lkKTsKK2V4dGVybiAiQyIgdm9pZCBqc1Ry
YW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQganNU
cmFtcG9saW5lRXZhbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGlu
ZUZ1bmN0aW9uRm9yQ2FsbFByb2xvZ3VlKHZvaWQpOworZXh0ZXJuICJDIiB2b2lkIGpzVHJhbXBv
bGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0UHJvbG9ndWUodm9pZCk7CitleHRlcm4gIkMiIHZvaWQg
anNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Byb2xvZ3VlKHZvaWQpOworZXh0
ZXJuICJDIiB2b2lkIGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1By
b2xvZ3VlKHZvaWQpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgorc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBlbnRyeXBvaW50VHJhbXBvbGluZShQdHJU
eXBlIGFkZHJlc3MpCit7CisgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldGFnQ29kZVB0cjx2
b2lkKiwgQ0Z1bmN0aW9uUHRyVGFnLCBKU0VudHJ5UHRyVGFnPihhZGRyZXNzKSkpOworfQorI2Vu
ZGlmCisKIHN0YXRpYyB2b2lkIHNldEZ1bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVC
bG9jaykKIHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjb2RlQmxvY2stPnNw
ZWNpYWxpemF0aW9uS2luZCgpOwpAQCAtNzIsMTQgKzg4LDIyIEBAIHN0YXRpYyB2b2lkIHNldEZ1
bmN0aW9uRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgc3RhdGljIERp
cmVjdEpJVENvZGUqIGppdENvZGU7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShK
SVRfQ0FHRSkKKyAgICAgICAgICAgIGppdENvZGUgPSBuZXcgRGlyZWN0SklUQ29kZShlbnRyeXBv
aW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNhbGxQcm9sb2d1ZSksIGVudHJ5
cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQcm9s
b2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpTaGFyZUF0
dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAgICAgICBqaXRDb2RlID0gbmV3IERpcmVj
dEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSksIGdldENvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBKSVRDb2RlOjpT
aGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbmRpZgogICAgICAgICB9KTsKICAgICAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmppdENvZGUpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBzdGF0aWMgRGlyZWN0SklUQ29kZSogaml0Q29kZTsKICAgICAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAgICAgICAgaml0Q29kZSA9IG5ldyBEaXJlY3RK
SVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0UHJvbG9ndWUpLCBlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xpbmVGdW5jdGlvbkZv
ckNvbnN0cnVjdEFyaXR5Q2hlY2tQcm9sb2d1ZSkuY29kZSgpLCBKSVRUeXBlOjpJbnRlcnByZXRl
clRodW5rLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAgICAgICAg
ICAgICBqaXRDb2RlID0gbmV3IERpcmVjdEpJVENvZGUoZ2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFn
PihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSwgZ2V0Q29kZVB0cjxKU0Vu
dHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSwgSklU
VHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7
CisjZW5kaWYKICAgICAgICAgfSk7CiAgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtl
UmVmKCpqaXRDb2RlKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEyNywxMSBAQCBzdGF0aWMgdm9pZCBz
ZXRFdmFsRW50cnlwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICBzdGF0aWMgTmF0aXZl
SklUQ29kZSogaml0Q29kZTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAg
ICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGVudHJ5cG9pbnRUcmFtcG9saW5lKGpz
VHJhbXBvbGluZUV2YWxQcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmssIEludHJp
bnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQpOworI2Vs
c2UKICAgICAgICAgaml0Q29kZSA9IG5ldyBOYXRpdmVKSVRDb2RlKGdldENvZGVSZWY8SlNFbnRy
eVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSksIEpJVFR5cGU6OkludGVycHJldGVyVGh1bmss
IEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0cmlidXRlOjpTaGFyZWQp
OworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1ha2VSZWYoKmpp
dENvZGUpKTsKIH0KQEAgLTEyNiw3ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgc2V0UHJvZ3JhbUVu
dHJ5cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RhdGljIE5hdGl2ZUpJVENvZGUq
IGppdENvZGU7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGpp
dENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShlbnRyeXBvaW50VHJhbXBvbGluZShqc1RyYW1wb2xp
bmVQcm9ncmFtUHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJbnRyaW5zaWM6
Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsKKyNlbHNlCiAg
ICAgICAgIGppdENvZGUgPSBuZXcgTmF0aXZlSklUQ29kZShnZXRDb2RlUmVmPEpTRW50cnlQdHJU
YWc+KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpLCBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rLCBJ
bnRyaW5zaWM6Ok5vSW50cmluc2ljLCBKSVRDb2RlOjpTaGFyZUF0dHJpYnV0ZTo6U2hhcmVkKTsK
KyNlbmRpZgogICAgIH0pOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShtYWtlUmVmKCpqaXRD
b2RlKSk7CiB9CkBAIC0xNDksNyArMTgxLDExIEBAIHN0YXRpYyB2b2lkIHNldE1vZHVsZVByb2dy
YW1FbnRyeXBvaW50KENvZGVCbG9jayogY29kZUJsb2NrKQogICAgIHN0YXRpYyBOYXRpdmVKSVRD
b2RlKiBqaXRDb2RlOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisjaWYgRU5BQkxFKEpJVF9DQUdFKQorICAgICAg
ICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZW50cnlwb2ludFRyYW1wb2xpbmUoanNUcmFt
cG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlKSwgSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaywg
SW50cmluc2ljOjpOb0ludHJpbnNpYywgSklUQ29kZTo6U2hhcmVBdHRyaWJ1dGU6OlNoYXJlZCk7
CisjZWxzZQogICAgICAgICBqaXRDb2RlID0gbmV3IE5hdGl2ZUpJVENvZGUoZ2V0Q29kZVJlZjxK
U0VudHJ5UHRyVGFnPihsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZSksIEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bmssIEludHJpbnNpYzo6Tm9JbnRyaW5zaWMsIEpJVENvZGU6OlNoYXJlQXR0
cmlidXRlOjpTaGFyZWQpOworI2VuZGlmCiAgICAgfSk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKG1ha2VSZWYoKmppdENvZGUpKTsKIH0KQEAgLTE2MCw3ICsxOTYsMzQgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBv
aW50KCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpCiAgICAgICAgIHJldHVybiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlVGh1bmsoKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQotICAgIHJldHVy
biBnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2dldF9ob3N0X2NhbGxfcmV0dXJuX3Zh
bHVlKTsKKyAgICByZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRf
Z2V0X2hvc3RfY2FsbF9yZXR1cm5fdmFsdWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCkK
K3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1c2VKSVQoKSkKKyAgICAgICAg
cmV0dXJuIGZ1enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKQorICAgIHJldHVybiBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihm
dXp6ZXJfcmV0dXJuX2Vhcmx5X2Zyb21fbG9vcF9oaW50KTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2Rl
U2l6ZSBzaXplKQoreworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgp
KQorICAgICAgICByZXR1cm4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoc2l6ZSk7CisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKKyAgICBzd2l0Y2ggKHNpemUpIHsKKyAgICBjYXNlIE9wY29kZVNpemU6
Ok5hcnJvdzoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUx
NjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMTZDb2RlUmVmPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICBjYXNlIE9wY29kZVNpemU6OldpZGUz
MjoKKyAgICAgICAgcmV0dXJuIExMSW50OjpnZXRXaWRlMzJDb2RlUmVmPEpTRW50cnlQdHJUYWc+
KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIHNldEVudHJ5cG9pbnQo
Q29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmgKaW5kZXggNDNlYjI4NjQwODY1Nzg1NmQwYjliMWQyZGE3NjFjODQ4NDFk
YmZkOC4uMjVlZTgyM2FlOWNiY2VhZWE1Y2RkOTU4YmM4MmI0ZTk4Yjg0N2I4OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaApAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKKyNpbmNsdWRlICJP
cGNvZGVTaXplLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw1ICs0Miw3IEBAIHZvaWQg
c2V0RW50cnlwb2ludChDb2RlQmxvY2sqKTsKIHVuc2lnbmVkIGZyYW1lUmVnaXN0ZXJDb3VudEZv
cihDb2RlQmxvY2sqKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRFbnRyeXBvaW50KCk7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBvaW50
RW50cnlwb2ludChPcGNvZGVTaXplKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBi
YmExMjBhN2M1NTg1OGYzNzdlNzliYjQyOWY1OWQ3OThlMTYzNGRhLi43NzI4OTc1NzVkY2UyN2Ix
YWE2YjM1NGUzMTNkMmZhZWFjYjc5YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBpbmxpbmUgSlNWYWx1
ZSBnZXRPcGVyYW5kKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkgeyByZXR1cgogICAgIH0gd2hpbGUgKGZhbHNlKQogCiAjZGVmaW5lIExMSU5UX0NBTExfRU5E
X0lNUEwoY2FsbEZyYW1lLCBjYWxsVGFyZ2V0LCBjYWxsVGFyZ2V0VGFnKSBcCi0gICAgTExJTlRf
UkVUVVJOX1RXTygocmV0YWdDb2RlUHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFnPihj
YWxsVGFyZ2V0KSksIChjYWxsRnJhbWUpKQorICAgIExMSU5UX1JFVFVSTl9UV08oKHJldGFnQ29k
ZVB0cjxjYWxsVGFyZ2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwg
KGNhbGxGcmFtZSkpCiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhnbG9iYWxPYmplY3QsIGV4
Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogX19jdF9nbG9iYWxPYmplY3QgPSAoZ2xvYmFsT2JqZWN0KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXApAQCAtNDY3LDcgKzQ2Nyw3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKGxvb3Bfb3NyKQogICAgICAgICB1aW50NjRfdCogcHRyID0gdm0uZ2V0TG9vcEhpbnRF
eGVjdXRpb25Db3VudGVyKHBjKTsKICAgICAgICAgKnB0ciArPSBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKS5tX2FjdGl2ZVRocmVzaG9sZDsKICAgICAgICAgaWYgKCpwdHIgPj0gT3B0
aW9uczo6ZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0KCkpCi0gICAgICAgICAgICBM
TElOVF9SRVRVUk5fVFdPKExMSW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KGZ1enplcl9y
ZXR1cm5fZWFybHlfZnJvbV9sb29wX2hpbnQpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGNhbGxGcmFt
ZS0+dG9wT2ZGcmFtZSgpKTsKKyAgICAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oTExJbnQ6OmZ1
enplclJldHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpLmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpLCBjYWxsRnJhbWUtPnRvcE9mRnJhbWUoKSk7CiAgICAgfQogICAgIAogICAgIApA
QCAtMTk0NSw3ICsxOTQ1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0
cnVjdF92YXJhcmdzKQogICAgIHJldHVybiB2YXJhcmdzU2V0dXA8T3BDb25zdHJ1Y3RWYXJhcmdz
PihjYWxsRnJhbWUsIHBjLCBDb2RlRm9yQ29uc3RydWN0LCBTZXRBcmd1bWVudHNXaXRoOjpPYmpl
Y3QpOwogfQogCi1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGNvbW1vbkNhbGxFdmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVjdGlvbiogcGMsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjxKU0VudHJ5UHRyVGFnPiByZXR1cm5Qb2ludCkKK2lubGluZSBTbG93UGF0aFJldHVyblR5
cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3RydWN0aW9u
KiBwYywgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVyblBvaW50KQog
ewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BDYWxsRXZhbD4oKTsKQEAgLTE5NTYsNyArMTk1Niw3IEBAIGlubGluZSBTbG93UGF0aFJl
dHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0IEluc3Ry
dWN0aW9uCiAgICAgY2FsbGVlRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGJ5
dGVjb2RlLm1fYXJnYyk7CiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlckZyYW1lKGNhbGxGcmFt
ZSk7CiAgICAgY2FsbGVlRnJhbWUtPnVuY2hlY2tlZFIoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSkpID0gY2FsbGVlQXNWYWx1ZTsKLSAgICBjYWxsZWVGcmFtZS0+c2V0UmV0
dXJuUEMocmV0dXJuUG9pbnQuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgY2FsbGVlRnJhbWUt
PnNldFJldHVyblBDKHJldHVyblBvaW50LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKICAg
ICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIGNhbGxGcmFtZS0+c2V0
Q3VycmVudFZQQyhwYyk7CiAgICAgCkBAIC0xOTcwLDE3ICsxOTcwLDE3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgY29tbW9uQ2FsbEV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIGNvbnN0
IEluc3RydWN0aW9uCiAgICAgCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9l
dmFsKQogewotICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6
Z2V0Q29kZVB0cjxKU0VudHJ5UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOwor
ICAgIHJldHVybiBjb21tb25DYWxsRXZhbChjYWxsRnJhbWUsIHBjLCBMTEludDo6Z2VuZXJpY1Jl
dHVyblBvaW50RW50cnlwb2ludChPcGNvZGVTaXplOjpOYXJyb3cpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbF93aWRlMTYpCiB7Ci0gICAgcmV0dXJuIGNv
bW1vbkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZXRXaWRlMTZDb2RlUHRyPEpTRW50
cnlQdHJUYWc+KGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgcmV0dXJuIGNvbW1v
bkNhbGxFdmFsKGNhbGxGcmFtZSwgcGMsIExMSW50OjpnZW5lcmljUmV0dXJuUG9pbnRFbnRyeXBv
aW50KE9wY29kZVNpemU6OldpZGUxNikpOwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfY2FsbF9ldmFsX3dpZGUzMikKIHsKLSAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2Fs
bEZyYW1lLCBwYywgTExJbnQ6OmdldFdpZGUzMkNvZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICByZXR1cm4gY29tbW9uQ2FsbEV2YWwoY2FsbEZy
YW1lLCBwYywgTExJbnQ6OmdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZTo6
V2lkZTMyKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpCkBA
IC0yMjY1LDggKzIyNjUsMTEgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkaXNwYXRjaFRv
TmV4dEluc3RydWN0aW9uKFRocm93U2NvcGUmIHNjb3BlLCBDb2RlQmxvY2sKIAogICAgIGlmIChP
cHRpb25zOjpmb3JjZU9TUkV4aXRUb0xMSW50KCkgfHwgY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykgewogICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiog
bmV4dFBDID0gcGMubmV4dCgpLnB0cigpOwotICAgICAgICBhdXRvIG5leHRCeXRlY29kZSA9IExM
SW50OjpnZXRDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCpwYy5uZXh0KCkucHRyKCkpOwotICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KG5leHRQQywgbmV4dEJ5dGVjb2RlLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpOworI2lmIEVOQUJMRShKSVQpCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobmV4
dFBDLCBMTEludDo6bm9ybWFsT1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpLmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobmV4dFBD
LCBMTEludDo6Z2V0Q29kZVJlZjxKU0VudHJ5UHRyVGFnPihub3JtYWxfb3NyX2V4aXRfdHJhbXBv
bGluZSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworI2VuZGlmCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
CmluZGV4IDc4NTM2MGY0ODc2MDcxYWZkNjRhZDFjZmUxYmE4YmVhODM4YWIzZDIuLmRjZTk5ZTcz
YjM0OGFlZjUxMzhlZDQ3ZjA2MDE1NmQxMTgzM2NlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApAQCAtNDAsNiArNDAsMjcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICNpZiBFTkFCTEUoSklUKQogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorCisjZGVmaW5l
IEpTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BFUkFUSU9OKG5hbWUpIFwKKyAgICBKU0NfQU5OT1RB
VEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0XyMjbmFtZSwgbmFtZSkKKworI2RlZmluZSBKU0Nf
QU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTl9XSVRIX0RFQ0xBUkUobmFtZSkgXAorICAgIGV4
dGVybiAiQyIgdm9pZCBuYW1lKHZvaWQpOyBcCisgICAgSlNDX0FOTk9UQVRFX0pJVF9PUEVSQVRJ
T04oX0pJVFRhcmdldF8jI25hbWUsIG5hbWUpCisKK0pTQ19BTk5PVEFURV9MTElOVF9KSVRfT1BF
UkFUSU9OKGppdENhZ2VQdHJHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVS
QVRJT04odm1FbnRyeVRvSmF2YVNjcmlwdCk7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJB
VElPTih2bUVudHJ5VG9OYXRpdmUpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04o
dm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09Q
RVJBVElPTih2bUVudHJ5VG9OYXRpdmVHYXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJ
VF9PUEVSQVRJT04obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVB
ZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklUX09QRVJBVElPTihsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcik7CitKU0NfQU5OT1RBVEVfTExJTlRfSklU
X09QRVJBVElPTihsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrVW50YWdH
YXRlQWZ0ZXIpOworSlNDX0FOTk9UQVRFX0xMSU5UX0pJVF9PUEVSQVRJT04obGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcik7CisKKyNlbmRpZgorCiBu
YW1lc3BhY2UgTExJbnQgewogCiAvLyBUaGVzZSB0aHVua3MgYXJlIG5lY2Vzc2FyeSBiZWNhdXNl
IG9mIG5lYXJDYWxsIHVzZWQgb24gSklUZWQgY29kZS4KQEAgLTUyLDcgKzczLDcgQEAgc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKExMSW50
Q29kZSB0YXJnZXQsIGNvbnMKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CiAKLSAgICBhc3Nl
cnRJc1RhZ2dlZFdpdGg8SlNFbnRyeVB0clRhZz4odGFyZ2V0KTsKKyAgICBhc3NlcnRJc1RhZ2dl
ZFdpdGg8T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBzY3JhdGNoID0gV2FzbTo6d2FzbUNhbGxp
bmdDb252ZW50aW9uKCkucHJvbG9ndWVTY3JhdGNoR1BSc1swXTsKQEAgLTYwLDE2ICs4MSw1MyBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oTExJbnRDb2RlIHRhcmdldCwgY29ucwogICAgIENDYWxsSGVscGVyczo6UmVnaXN0ZXJJRCBz
Y3JhdGNoID0gSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwOwogI2VuZGlmCiAgICAgaml0Lm1vdmUoSlNJ
bnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFyZ2V0KSwgc2NyYXRjaCk7Ci0gICAgaml0LmZh
ckp1bXAoc2NyYXRjaCwgSlNFbnRyeVB0clRhZyk7CisgICAgaml0LmZhckp1bXAoc2NyYXRjaCwg
T3BlcmF0aW9uUHRyVGFnKTsKIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9C
QUxfVEhVTktfSUQpOwotICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcs
ICJMTEludCAlcyBwcm9sb2d1ZSB0aHVuayIsIHRodW5rS2luZCk7CisgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUocGF0Y2hCdWZmZXIsIHRhZywgIkxMSW50ICVzIHRodW5rIiwgdGh1bmtLaW5kKTsK
IH0KIAogdGVtcGxhdGU8UHRyVGFnIHRhZz4KIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hh
ciAqdGh1bmtLaW5kKQogewotICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzx0YWc+
KExMSW50OjpnZXRDb2RlRnVuY3Rpb25QdHI8SlNFbnRyeVB0clRhZz4ob3Bjb2RlSUQpLCB0aHVu
a0tpbmQpOworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzx0YWc+KExMSW50Ojpn
ZXRDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGNvZGVJRCksIHRodW5rS2luZCk7
Cit9CisKK3RlbXBsYXRlPFB0clRhZyB0YWc+CitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PHRhZz4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZShPcGNvZGVJRCBvcGNvZGVJRCwg
Y29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKworICAg
IExMSW50Q29kZSB0YXJnZXQgPSBMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0
clRhZz4ob3Bjb2RlSUQpOworICAgIGFzc2VydElzVGFnZ2VkV2l0aDxPcGVyYXRpb25QdHJUYWc+
KHRhcmdldCk7CisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgQ0NhbGxIZWxwZXJzOjpS
ZWdpc3RlcklEIHNjcmF0Y2ggPSBXYXNtOjp3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKS5wcm9sb2d1
ZVNjcmF0Y2hHUFJzWzBdOworI2Vsc2UKKyAgICBDQ2FsbEhlbHBlcnM6OlJlZ2lzdGVySUQgc2Ny
YXRjaCA9IEpTSW50ZXJmYWNlSklUOjpyZWdUMDsKKyNlbmRpZgorICAgIGppdC50YWdSZXR1cm5B
ZGRyZXNzKCk7CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGFy
Z2V0KSwgc2NyYXRjaCk7CisgICAgaml0LmZhckp1bXAoc2NyYXRjaCwgT3BlcmF0aW9uUHRyVGFn
KTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOwor
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyBqdW1w
IHRvIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKTsKK30KKwordGVtcGxhdGU8UHRyVGFnIHRh
Zz4KK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8dGFnPiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUb0xMSW50UmV0dXJuUG9pbnQoTExJbnRDb2RlIHRhcmdldCwgY29uc3QgY2hhciAqdGh1bmtL
aW5kKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8
T3BlcmF0aW9uUHRyVGFnPih0YXJnZXQpOworICAgIGppdC5mYXJKdW1wKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih0YXJnZXQpLCBPcGVyYXRpb25QdHJUYWcpOworICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBGSU5BTElaRV9D
T0RFKHBhdGNoQnVmZmVyLCB0YWcsICJMTEludCAlcyByZXR1cm4gcG9pbnQgdGh1bmsiLCB0aHVu
a0tpbmQpOworfQorCit0ZW1wbGF0ZTxQdHJUYWcgdGFnPgorc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjx0YWc+IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludChPcGNv
ZGVJRCBvcGNvZGVJRCwgY29uc3QgY2hhciAqdGh1bmtLaW5kKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQ8dGFnPihMTEludDo6Z2V0Q29kZUZ1
bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3Bjb2RlSUQpLCB0aHVua0tpbmQpOwogfQogCiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlU
aHVuaygpCkBAIC03Nyw3ICsxMzUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0
clRhZz4gZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAg
ICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25j
ZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUsICJm
dW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOwogICAgIH0pOwogICAgIHJldHVy
biBjb2RlUmVmOwogfQpAQCAtODcsNyArMTQ1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpT
RW50cnlQdHJUYWc+IGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVuaygpCiAgICAgc3RhdGlj
IExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+
IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKLSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjb25zdHJ1Y3QiKSk7CisgICAgICAgIGNvZGVS
ZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRh
Zz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBj
b25zdHJ1Y3QiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC05Nyw3ICsx
NTUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewot
ICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKU0VudHJ5
UHRyVGFnPihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaywgImZ1bmN0aW9uIGZv
ciBjYWxsIHdpdGggYXJpdHkgY2hlY2siKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2ssICJmdW5jdGlvbiBmb3IgY2FsbCB3aXRoIGFyaXR5IGNo
ZWNrIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVmOwogfQpAQCAtMTA3LDcgKzE2NSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBmdW5jdGlvbkZvckNvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRy
eVB0clRhZz4obGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaywgImZ1bmN0
aW9uIGZvciBjb25zdHJ1Y3Qgd2l0aCBhcml0eSBjaGVjayIpKTsKKyAgICAgICAgY29kZVJlZi5j
b25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0VudHJ5UHRyVGFnPihs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrLCAiZnVuY3Rpb24gZm9yIGNv
bnN0cnVjdCB3aXRoIGFyaXR5IGNoZWNrIikpOwogICAgIH0pOwogICAgIHJldHVybiBjb2RlUmVm
OwogfQpAQCAtMTE3LDcgKzE3NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBldmFsRW50cnlUaHVuaygpCiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsK
LSAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRy
eVB0clRhZz4obGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CisgICAgICAgIGNvZGVSZWYu
Y29uc3RydWN0KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4o
bGxpbnRfZXZhbF9wcm9sb2d1ZSwgImV2YWwiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNvZGVS
ZWY7CiB9CkBAIC0xMjcsNyArMTg1LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IHByb2dyYW1FbnRyeVRodW5rKCkKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKICAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBb
Jl0gewotICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxK
U0VudHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJvZ3JhbSIpKTsKKyAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKU0Vu
dHJ5UHRyVGFnPihsbGludF9wcm9ncmFtX3Byb2xvZ3VlLCAicHJvZ3JhbSIpKTsKICAgICB9KTsK
ICAgICByZXR1cm4gY29kZVJlZjsKIH0KQEAgLTEzNyw3ICsxOTUsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gbW9kdWxlUHJvZ3JhbUVudHJ5VGh1bmsoKQogICAgIHN0
YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJU
YWc+PiBjb2RlUmVmOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0
ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvPEpTRW50cnlQdHJUYWc+KGxsaW50X21vZHVsZV9wcm9ncmFt
X3Byb2xvZ3VlLCAibW9kdWxlX3Byb2dyYW0iKSk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SlNFbnRyeVB0clRhZz4obGxpbnRfbW9k
dWxlX3Byb2dyYW1fcHJvbG9ndWUsICJtb2R1bGVfcHJvZ3JhbSIpKTsKICAgICB9KTsKICAgICBy
ZXR1cm4gY29kZVJlZjsKIH0KQEAgLTE0OSw5ICsyMDcsOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHdhc21GdW5jdGlvbkVudHJ5VGh1bmsoKQogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CiAgICAgICAgIGlmIChXYXNtOjpDb250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgICAgICBj
b2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxKSVRUaHVua1B0clRhZz4o
d2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikpOworICAgICAgICAg
ICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9Qcm9sb2d1ZTxKSVRU
aHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZSwgImZ1bmN0aW9uIGZvciBjYWxsIikp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbzxKSVRUaHVua1B0clRhZz4od2FzbV9mdW5jdGlvbl9wcm9sb2d1ZV9ub190
bHMsICJmdW5jdGlvbiBmb3IgY2FsbCIpKTsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvUHJvbG9ndWU8SklUVGh1bmtQdHJUYWc+KHdhc21fZnVu
Y3Rpb25fcHJvbG9ndWVfbm9fdGxzLCAiZnVuY3Rpb24gZm9yIGNhbGwiKSk7CiAgICAgfSk7CiAg
ICAgcmV0dXJuIGNvZGVSZWY7CiB9CkBAIC0yMTcsNyArMjc1LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6
ZSBzaXplKQogICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7Ci0gICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0Q29kZUZ1bmN0aW9uUHRyPEpT
RW50cnlQdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2NhdGNoIikpOworICAgICAgICAgICAgY29kZVJl
Zi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRh
Zz4oTExJbnQ6OmdldENvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwg
Im9wX2NhdGNoIikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIGNvZGVSZWY7CiAgICAg
fQpAQCAtMjI1LDcgKzI4Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5k
bGVyUHRyVGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICAgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFu
ZGxlclB0clRhZz4+IGNvZGVSZWY7CiAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OwogICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewotICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxl
clB0clRhZz4oTExJbnQ6OmdldFdpZGUxNkNvZGVGdW5jdGlvblB0cjxKU0VudHJ5UHRyVGFnPihv
cF9jYXRjaCksICJvcF9jYXRjaDE2IikpOworICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3Qo
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG88RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oTExJbnQ6Omdl
dFdpZGUxNkNvZGVGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wX2NhdGNoKSwgIm9wX2Nh
dGNoMTYiKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gY29kZVJlZjsKICAgICB9CkBA
IC0yMzMsNyArMjkxLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IGhhbmRsZUNhdGNoVGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQogICAgICAgICBzdGF0aWMg
TGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVy
UHRyVGFnPj4gY29kZVJlZjsKICAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VLZXk7
CiAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7Ci0gICAgICAgICAgICBjb2Rl
UmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPihMTEludDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPEpTRW50cnlQdHJUYWc+KG9wX2Nh
dGNoKSwgIm9wX2NhdGNoMzIiKSk7CisgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbzxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPihMTEludDo6Z2V0V2lk
ZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BfY2F0Y2gpLCAib3BfY2F0Y2gz
MiIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiBjb2RlUmVmOwogICAgIH0KQEAgLTI0
Miw2ICszMDAsMjg5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRy
VGFnPiBoYW5kbGVDYXRjaFRodW5rKE9wY29kZVNpemUgc2l6ZSkKICAgICByZXR1cm4geyB9Owog
fQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBv
aW50VGh1bmsoT3Bjb2RlU2l6ZSBzaXplKQoreworICAgIHN3aXRjaCAoc2l6ZSkgeworICAgIGNh
c2UgT3Bjb2RlU2l6ZTo6TmFycm93OiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVmOworICAgICAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTEludDo6Z2V0Q29k
ZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQp
LCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQiKSk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm4gY29kZVJlZjsKKyAgICB9CisgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMTY6IHsKKyAg
ICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNF
bnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
S2V5OworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9u
UHRyVGFnPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCksICJsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludDE2IikpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGNvZGVSZWY7CisgICAg
fQorICAgIGNhc2UgT3Bjb2RlU2l6ZTo6V2lkZTMyOiB7CisgICAgICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVm
OworICAgICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICAgICAgc3RkOjpj
YWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihMTElu
dDo6Z2V0V2lkZTMyQ29kZUZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4obGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQpLCAibGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQzMiIpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBjb2RlUmVmOworICAgIH0KKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9vcEhpbnRU
aHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAgY29k
ZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG88SlNFbnRyeVB0clRhZz4oZnV6
emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3BfaGludCwgImZ1enplcl9yZXR1cm5fZWFybHlfZnJv
bV9sb29wX2hpbnQiKSk7CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKKyNpZiBF
TkFCTEUoSklUX0NBR0UpCisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IGNyZWF0ZUpTR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0
IGNoYXIqIG5hbWUpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQ
UkluZm86OnJlZ1QzLCB0YWcpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihwb2ludGVyKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86
OnJlZ1QzLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZm
ZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50ICVzIGNhbGwgZ2F0ZSB0aHVuayIsIG5h
bWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBj
cmVhdGVXYXNtR2F0ZVRodW5rKHZvaWQqIHBvaW50ZXIsIFB0clRhZyB0YWcsIGNvbnN0IGNoYXIq
IG5hbWUpCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIGppdC5jYWxsKEdQUkluZm86
Ondhc21TY3JhdGNoR1BSMCwgdGFnKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86Ondhc21TY3JhdGNoR1BSMSk7CisgICAgaml0LmZh
ckp1bXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIxLCBPcGVyYXRpb25QdHJUYWcpOworCisgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50
ICVzIHdhc20gY2FsbCBnYXRlIHRodW5rIiwgbmFtZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxsR2F0ZShQdHJUYWcgdGFn
KQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6
YXJndW1lbnRHUFIyLCBBUk02NFJlZ2lzdGVyczo6bHIpOworICAgIGppdC5mYXJKdW1wKEdQUklu
Zm86OnJlZ1QwLCB0YWcpOworCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgIkxMSW50IHRhaWwgY2FsbCBnYXRlIHRodW5rIik7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGxvb3BPU1JFbnRyeUdh
dGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0gewor
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgSlNFbnRyeVB0clRhZyk7CisKKyAgICAgICAgTGlua0J1ZmZlciBwYXRj
aEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0
KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2ZVRvSklUR2F0ZVB0clRhZywgImxvb3Ag
T1NSIGVudHJ5IHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5
R2F0ZVRodW5rKCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7
CisgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICAgICAgaml0LnVudGFnUmV0dXJuQWRk
cmVzcygpOworICAgICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpTRW50
cnlQdHJUYWcpOworCisgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxf
VEhVTktfSUQpOworICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNo
QnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcsICJlbnRyeSBPU1IgZW50cnkgdGh1bmsiKSk7
CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IHdhc21PU1JFbnRyeUdhdGVUaHVuaygpCit7CisgICAg
c3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9K
SVRHYXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtl
eTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBl
cnMgaml0OworCisgICAgICAgIGppdC51bnRhZ1JldHVybkFkZHJlc3MoKTsKKyAgICAgICAgaml0
LmZhckp1bXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIwLCBXYXNtRW50cnlQdHJUYWcpOworCisg
ICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
ICAgICBjb2RlUmVmLmNvbnN0cnVjdChGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcsICJ3YXNtIE9TUiBlbnRyeSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gZXhjZXB0aW9uSGFuZGxlckdhdGVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlO
ZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFn
Pj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OworCisg
ICAgICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFn
KTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwg
TmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAiZXhjZXB0aW9uIGhhbmRsZXIgdGh1bmsiKSk7CisgICAg
fSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRp
dmVUb0pJVEdhdGVQdHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpCit7CisgICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRH
YXRlUHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsK
KyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBDQ2FsbEhlbHBlcnMg
aml0OworCisgICAgICAgIGppdC5yZXQoKTsKKworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAicmV0dXJuRnJv
bUxMSW50IHRodW5rIikpOworICAgIH0pOworICAgIHJldHVybiBjb2RlUmVmOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB0YWdHYXRlVGh1bmsodm9p
ZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBlcnMgaml0OworCisgICAgaml0LmFkZFB0cihD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxNiksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LnRhZ1B0cihHUFJJbmZvOjpyZWdUMywgQVJNNjRS
ZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuc3RvcmVQdHIoQVJNNjRSZWdpc3RlcnM6OmxyLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIDgpKTsKKyAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9pbnRlciksIEdQUkluZm86OnJl
Z1QzKTsKKyAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMywgT3BlcmF0aW9uUHRyVGFnKTsK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcs
ICJ0YWcgdGh1bmsiKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0
ZVB0clRhZz4gdW50YWdHYXRlVGh1bmsodm9pZCogcG9pbnRlcikKK3sKKyAgICBDQ2FsbEhlbHBl
cnMgaml0OworCisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCA4KSwgQVJNNjRSZWdpc3RlcnM6OmxyKTsKKyAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDE2KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OnJlZ1QzKTsKKyAgICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMs
IEFSTTY0UmVnaXN0ZXJzOjpscik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmZhckp1bXAoR1BSSW5m
bzo6cmVnVDMsIE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1
ZmZlciwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnLCAidW50YWcgdGh1bmsiKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCkK
K3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxO
YXRpdmVUb0pJVEdhdGVQdHJUYWc+PiBjb2RlUmVmOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXksIFsmXSB7CisgICAgICAgIEND
YWxsSGVscGVycyBqaXQ7CisgICAgICAgIEpTQ19KSVRfQ0FHRV9DT01QSUxFX0lNUEwoaml0KTsK
KyAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCk7Cisg
ICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsIE5hdGl2
ZVRvSklUR2F0ZVB0clRhZywgImppdENhZ2VQdHIgdGh1bmsiKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNvZGVSZWY7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBub3JtYWxPU1JFeGl0VHJhbXBvbGluZVRodW5r
KCkKK3sKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUtleTsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geworICAgICAgICBjb2RlUmVm
LmNvbnN0cnVjdChnZW5lcmF0ZVRodW5rV2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQ8SlNFbnRy
eVB0clRhZz4obm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsICJub3JtYWxfb3NyX2V4aXRfdHJh
bXBvbGluZSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworI2lm
IEVOQUJMRShERkdfSklUKQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4g
Y2hlY2twb2ludE9TUkV4aXRUcmFtcG9saW5lVGh1bmsoKQoreworICAgIHN0YXRpYyBMYXp5TmV2
ZXJEZXN0cm95ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+PiBjb2RlUmVm
OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VLZXksIFsmXSB7CisgICAgICAgIGNvZGVSZWYuY29uc3RydWN0KGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvTExJbnRSZXR1cm5Qb2ludDxKU0VudHJ5UHRyVGFnPihjaGVja3BvaW50X29zcl9l
eGl0X3RyYW1wb2xpbmUsICJjaGVja3BvaW50X29zcl9leGl0X3RyYW1wb2xpbmUgdGh1bmsiKSk7
CisgICAgfSk7CisgICAgcmV0dXJuIGNvZGVSZWY7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdEZyb21JbmxpbmVkQ2FsbFRyYW1wb2xp
bmVUaHVuaygpCit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VLZXk7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUtleSwgWyZdIHsKKyAgICAgICAg
Y29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50
PEpTRW50cnlQdHJUYWc+KGNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJh
bXBvbGluZSwgImNoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGlu
ZSB0aHVuayIpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gY29kZVJlZjsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHJldHVybkxvY2F0aW9uVGh1bmsoT3Bjb2RlSUQg
b3Bjb2RlSUQsIE9wY29kZVNpemUgc2l6ZSkKK3sKKyNkZWZpbmUgTExJTlRfUkVUVVJOX0xPQ0FU
SU9OKG5hbWUpIFwKKyAgICBjYXNlIG5hbWUjI19yZXR1cm5fbG9jYXRpb246IHsgXAorICAgICAg
ICBzd2l0Y2ggKHNpemUpIHsgXAorICAgICAgICBjYXNlIE9wY29kZVNpemU6Ok5hcnJvdzogeyBc
CisgICAgICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsgXAorICAgICAgICAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VLZXk7IFwKKyAgICAgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VLZXks
IFsmXSB7IFwKKyAgICAgICAgICAgICAgICBjb2RlUmVmLmNvbnN0cnVjdChnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUb0xMSW50UmV0dXJuUG9pbnQ8SlNFbnRyeVB0clRhZz4oTExJbnQ6OmdldENvZGVG
dW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG5hbWUjI19yZXR1cm5fbG9jYXRpb24pLCAgI25h
bWUgIl9yZXR1cm5fbG9jYXRpb24gdGh1bmsiKSk7IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAg
ICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNv
ZGVTaXplOjpXaWRlMTY6IHsgXAorICAgICAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAg
ICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6
OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisgICAgICAgICAgICAgICAgY29kZVJlZi5jb25z
dHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9MTEludFJldHVyblBvaW50PEpTRW50cnlQdHJU
YWc+KExMSW50OjpnZXRXaWRlMTZDb2RlRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihuYW1l
IyNfcmV0dXJuX2xvY2F0aW9uKSwgICNuYW1lICJfcmV0dXJuX2xvY2F0aW9uMTYgdGh1bmsiKSk7
IFwKKyAgICAgICAgICAgIH0pOyBcCisgICAgICAgICAgICByZXR1cm4gY29kZVJlZjsgXAorICAg
ICAgICB9IFwKKyAgICAgICAgY2FzZSBPcGNvZGVTaXplOjpXaWRlMzI6IHsgXAorICAgICAgICAg
ICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4+IGNvZGVSZWY7IFwKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlS2V5OyBcCisgICAgICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5LCBbJl0geyBcCisg
ICAgICAgICAgICAgICAgY29kZVJlZi5jb25zdHJ1Y3QoZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG9M
TEludFJldHVyblBvaW50PEpTRW50cnlQdHJUYWc+KExMSW50OjpnZXRXaWRlMzJDb2RlRnVuY3Rp
b25QdHI8T3BlcmF0aW9uUHRyVGFnPihuYW1lIyNfcmV0dXJuX2xvY2F0aW9uKSwgI25hbWUgIl9y
ZXR1cm5fbG9jYXRpb24zMiB0aHVuayIpKTsgXAorICAgICAgICAgICAgfSk7IFwKKyAgICAgICAg
ICAgIHJldHVybiBjb2RlUmVmOyBcCisgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAg
cmV0dXJuIHsgfTsgXAorICAgIH0KKworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBMTElO
VF9SRVRVUk5fTE9DQVRJT04ob3BfY2FsbCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3Bf
aXRlcmF0b3Jfb3BlbikKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfaXRlcmF0b3JfbmV4
dCkKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJT04ob3BfY29uc3RydWN0KQorICAgIExMSU5UX1JF
VFVSTl9MT0NBVElPTihvcF9jYWxsX3ZhcmFyZ3Nfc2xvdykKKyAgICBMTElOVF9SRVRVUk5fTE9D
QVRJT04ob3BfY29uc3RydWN0X3ZhcmFyZ3Nfc2xvdykKKyAgICBMTElOVF9SRVRVUk5fTE9DQVRJ
T04ob3BfZ2V0X2J5X2lkKQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9nZXRfYnlfdmFs
KQorICAgIExMSU5UX1JFVFVSTl9MT0NBVElPTihvcF9wdXRfYnlfaWQpCisgICAgTExJTlRfUkVU
VVJOX0xPQ0FUSU9OKG9wX3B1dF9ieV92YWwpCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cit9CisK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBMTEludAogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKaW5kZXggMDM2OGNlOWEy
ZGEwNjA0ZjQzNzI0NTJlZTEyZjg3YzRlNjM4ZGIwZC4uMDcxNTczZjc3ZGFkZjY5MDcxMDgxNWVk
ODFhN2I5ZDNiMGU0OGNmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgKQEAgLTQwLDYgKzQwLDE5IEBAIGV4dGVybiAiQyIgewogICAgIEVuY29kZWRKU1ZhbHVl
IHZtRW50cnlUb05hdGl2ZSh2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSopOwogfQogCisjaWYg
RU5BQkxFKEpJVF9DQUdFKQorZXh0ZXJuICJDIiB7CisgICAgdm9pZCBqaXRDYWdlUHRyR2F0ZUFm
dGVyKHZvaWQpOworICAgIHZvaWQgdm1FbnRyeVRvSmF2YVNjcmlwdEdhdGVBZnRlcih2b2lkKTsK
KyAgICB2b2lkIHZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcih2b2lkKTsKKworICAgIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcih2b2lkKTsKKyAg
ICB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrVGFnR2F0ZUFmdGVyKHZv
aWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1Vu
dGFnR2F0ZUFmdGVyKHZvaWQpOworICAgIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcih2b2lkKTsKK30KKyNlbmRpZgorCiBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgdm1FbnRyeVRvV2FzbSh2b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZy
YW1lKiBmcmFtZSkKIHsKICAgICBhdXRvIGNsb2JiZXJpemVWYWxpZGF0b3IgPSBtYWtlU2NvcGVF
eGl0KFsmXSB7CkBAIC01OSwxMSArNzIsMzIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50
cnlQdHJUYWc+IGV2YWxFbnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4gcHJvZ3JhbUVudHJ5VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0Vu
dHJ5UHRyVGFnPiBtb2R1bGVQcm9ncmFtRW50cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVUaHVuaygpOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludFRodW5rKE9w
Y29kZVNpemUpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJl
dHVybkVhcmx5RnJvbUxvb3BIaW50VGh1bmsoKTsKIAogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEV4
Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGNhbGxUb1Rocm93VGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBoYW5kbGVVbmNhdWdodEV4Y2VwdGlvblRo
dW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gaGFu
ZGxlQ2F0Y2hUaHVuayhPcGNvZGVTaXplKTsKIAorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2
ZVRvSklUR2F0ZVB0clRhZz4gaml0Q2FnZVB0clRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiBjcmVhdGVKU0dhdGVUaHVuayh2b2lkKiwgUHRyVGFn
LCBjb25zdCBjaGFyKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRy
VGFnPiBjcmVhdGVXYXNtR2F0ZVRodW5rKHZvaWQqLCBQdHJUYWcsIGNvbnN0IGNoYXIqKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGNyZWF0ZVRhaWxDYWxs
R2F0ZShQdHJUYWcpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRh
Zz4gbG9vcE9TUkVudHJ5R2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8TmF0aXZl
VG9KSVRHYXRlUHRyVGFnPiBlbnRyeU9TUkVudHJ5R2F0ZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8TmF0aXZlVG9KSVRHYXRlUHRyVGFnPiB3YXNtT1NSRW50cnlHYXRlVGh1bmsoKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQdHJUYWc+IGV4Y2VwdGlvbkhh
bmRsZXJHYXRlVGh1bmsoKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxOYXRpdmVUb0pJVEdhdGVQ
dHJUYWc+IHJldHVybkZyb21MTEludEdhdGVUaHVuaygpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdW50YWdHYXRlVGh1bmsodm9pZCopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPE5hdGl2ZVRvSklUR2F0ZVB0clRhZz4gdGFnR2F0ZVRodW5rKHZvaWQqKTsK
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IG5vcm1hbE9TUkV4aXRUcmFt
cG9saW5lVGh1bmsoKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiBjaGVja3BvaW50T1NSRXhpdFRyYW1wb2xpbmVUaHVuaygpOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGNoZWNrcG9pbnRPU1JFeGl0RnJvbUlu
bGluZWRDYWxsVHJhbXBvbGluZVRodW5rKCk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRy
eVB0clRhZz4gcmV0dXJuTG9jYXRpb25UaHVuayhPcGNvZGVJRCwgT3Bjb2RlU2l6ZSk7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gd2FzbUZ1bmN0aW9uRW50cnlUaHVuaygpOwogI2VuZGlmIC8vIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCA5ZTNjZGU5OTA0YzEwMmJlZWVmNDdiMTRmMzVmZjY5NTE2
OWZhOTdmLi4xNTVkNWU2NDU5NzZkYmRkYWI1Y2JiMDM2MzY4NTliZTM2NWVjYWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0yNTYsOSArMjU2LDEyIEBAIGNvbnN0IEFyaXRoUHJvZmlsZU51bWJlck51bWJlciA9IGNv
bnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlOjpvYnNlcnZlZE51bWJlck51CiBjb25zdCBCeXRl
Y29kZVB0clRhZyA9IGNvbnN0ZXhwciBCeXRlY29kZVB0clRhZwogY29uc3QgSlNFbnRyeVB0clRh
ZyA9IGNvbnN0ZXhwciBKU0VudHJ5UHRyVGFnCiBjb25zdCBIb3N0RnVuY3Rpb25QdHJUYWcgPSBj
b25zdGV4cHIgSG9zdEZ1bmN0aW9uUHRyVGFnCitjb25zdCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcg
PSBjb25zdGV4cHIgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCitjb25zdCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgPSBjb25zdGV4cHIgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCiBjb25zdCBFeGNlcHRpb25I
YW5kbGVyUHRyVGFnID0gY29uc3RleHByIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKK2NvbnN0IFlh
cnJFbnRyeVB0clRhZyA9IGNvbnN0ZXhwciBZYXJyRW50cnlQdHJUYWcKIGNvbnN0IE5vUHRyVGFn
ID0gY29uc3RleHByIE5vUHRyVGFnCi1jb25zdCBTbG93UGF0aFB0clRhZyA9IGNvbnN0ZXhwciBT
bG93UGF0aFB0clRhZworIAogCiAjIFNvbWUgcmVnaXN0ZXIgY29udmVudGlvbnMuCiAjIC0gV2Ug
dXNlIGEgcGFpciBvZiByZWdpc3RlcnMgdG8gcmVwcmVzZW50IHRoZSBQQzogb25lIHJlZ2lzdGVy
IGZvciB0aGUKQEAgLTEwMjYsNyArMTAyOSw3IEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBlbmQKIGVuZAogCi1tYWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwg
c2l6ZSkKK21hY3JvIGRlZmluZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCiAgICAgbWFj
cm8gZGVmaW5lTmFycm93KCkKICAgICAgICAgaWYgbm90IENfTE9PUF9XSU4KICAgICAgICAgICAg
IF8lb3Bjb2RlTmFtZSVfcmV0dXJuX2xvY2F0aW9uOgpAQCAtMTA0OCwzMiArMTA1MSw4MiBAQCBt
YWNybyBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKICAgICBzaXpl
KGRlZmluZU5hcnJvdywgZGVmaW5lV2lkZTE2LCBkZWZpbmVXaWRlMzIsIG1hY3JvIChmKSBmKCkg
ZW5kKQogZW5kCiAKK2lmIEFSTTY0RQorICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcgorICAgIGdsb2JhbCBfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2tUYWdHYXRlQWZ0ZXIKKyAgICBnbG9iYWwgX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tVbnRhZ0dhdGVBZnRlcgorICAgIGdsb2JhbCBf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja1RhZ0dhdGVBZnRlcgorZW5k
CisKIG1hY3JvIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxl
ZSwgY2FsbFB0clRhZykKICAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjbG9v
cENhbGxKU0Z1bmN0aW9uIGNhbGxlZQorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBtYWNybyBj
YWxsTmFycm93KCkKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSUp
ICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSU6
CisgICAgICAgICAgICBjYWxsIHQzLCBjYWxsUHRyVGFnCisgICAgICAgIGVuZAorCisgICAgICAg
IG1hY3JvIGNhbGxXaWRlMTYoKQorICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4
cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OiVvcGNv
ZGVOYW1lJV93aWRlMTYpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBbYTJdLCBOYXRp
dmVUb0pJVEdhdGVQdHJUYWcgIyBjYWxsUHRyVGFnCisgICAgICAgICAgICBfanNfdHJhbXBvbGlu
ZV8lb3Bjb2RlTmFtZSVfd2lkZTE2OgorICAgICAgICAgICAgY2FsbCB0MywgY2FsbFB0clRhZwor
ICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBjYWxsV2lkZTMyKCkKKyAgICAgICAgICAgIGxl
YXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsg
KGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIGEyCisgICAg
ICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgY2FsbFB0clRhZworICAg
ICAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAgICAgICAgICAg
IGNhbGwgdDMsIGNhbGxQdHJUYWcKKyAgICAgICAgZW5kCisKKyAgICAgICAgbW92ZSBjYWxsZWUs
IHQzCisgICAgICAgIHNpemUoY2FsbE5hcnJvdywgY2FsbFdpZGUxNiwgY2FsbFdpZGUzMiwgbWFj
cm8gKGdlbikgZ2VuKCkgZW5kKQogICAgIGVsc2UKICAgICAgICAgY2FsbCBjYWxsZWUsIGNhbGxQ
dHJUYWcKKyAgICAgICAgaWYgQVJNdjcgb3IgTUlQUworICAgICAgICAgICAgIyBJdCBpcyByZXF1
aXJlZCBpbiBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZpbml0aW9ucwor
ICAgICAgICAgICAgIyBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2Yg
aW5zdHJ1Y3Rpb25zCisgICAgICAgICAgICAjIHRoYXQgY2FuIGNsb2JiZXIgTExJbnQgZXhlY3V0
aW9uLCByZXN1bHRpbmcgaW4gdW5leHBlY3RlZAorICAgICAgICAgICAgIyBjcmFzaGVzLgorICAg
ICAgICAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCisgICAgICAgICAgICBkaXNw
YXRjaEFmdGVyQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gpCisgICAgICAgIGVuZAogICAgIGVuZAorICAgIGRlZmlu
ZVJldHVybkxhYmVsKG9wY29kZU5hbWUsIHNpemUpCisgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFm
dGVyQ2FsbCgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQogCi0gICAgaWYgQVJN
djcgb3IgTUlQUworICAgIGlmIG5vdCBBUk02NEUKICAgICAgICAgIyBJdCBpcyByZXF1aXJlZCBp
biBBUk12NyBhbmQgTUlQcyBiZWNhdXNlIGdsb2JhbCBsYWJlbCBkZWZpbml0aW9ucwogICAgICAg
ICAjIGZvciB0aG9zZSBhcmNoaXRlY3R1cmVzIGdlbmVyYXRlcyBhIHNldCBvZiBpbnN0cnVjdGlv
bnMKICAgICAgICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5n
IGluIHVuZXhwZWN0ZWQKICAgICAgICAgIyBjcmFzaGVzLgotICAgICAgICByZXN0b3JlU3RhY2tQ
b2ludGVyQWZ0ZXJDYWxsKCkKLSAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoKQor
ICAgICAgICBtYWNybyBsYWJlbE5hcnJvdygpCisgICAgICAgICAgICBfanNfdHJhbXBvbGluZV8l
b3Bjb2RlTmFtZSU6CisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGxhYmVsV2lkZTE2KCkK
KyAgICAgICAgICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMTY6CisgICAgICAg
IGVuZAorCisgICAgICAgIG1hY3JvIGxhYmVsV2lkZTMyKCkKKyAgICAgICAgICAgIF9qc190cmFt
cG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6CisgICAgICAgIGVuZAorICAgICAgICBzaXplKGxh
YmVsTmFycm93LCBsYWJlbFdpZGUxNiwgbGFiZWxXaWRlMzIsIG1hY3JvIChnZW4pIGdlbigpIGVu
ZCkKKyAgICAgICAgY3Jhc2goKQogICAgIGVuZAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJl
bChvcGNvZGVOYW1lLCBzaXplKQotICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQot
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCkKIGVuZAogCi1tYWNybyBwcmVwYXJlRm9y
UmVndWxhckNhbGwoY2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFj
cm8gcHJlcGFyZUZvclJlZ3VsYXJDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVt
cDQsIGNhbGxQdHJUYWcpCiAgICAgYWRkcCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKIGVuZAog
CiAjIHNwIHBvaW50cyB0byB0aGUgbmV3IGZyYW1lCi1tYWNybyBwcmVwYXJlRm9yVGFpbENhbGwo
Y2FsbGVlLCB0ZW1wMSwgdGVtcDIsIHRlbXAzLCBjYWxsUHRyVGFnKQorbWFjcm8gcHJlcGFyZUZv
clRhaWxDYWxsKGNhbGxlZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIGNhbGxQdHJUYWcp
CiAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5TExJbnQoKQogCiAgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHRlbXAyCkBAIC0xMTA5
LDggKzExNjIsNyBAQCBtYWNybyBwcmVwYXJlRm9yVGFpbENhbGwoY2FsbGVlLCB0ZW1wMSwgdGVt
cDIsIHRlbXAzLCBjYWxsUHRyVGFnKQogICAgIGVuZAogCiAgICAgaWYgQVJNNjRFCi0gICAgICAg
IGFkZHAgMTYsIGNmciwgdGVtcDMKLSAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHRlbXAzCisg
ICAgICAgIGFkZHAgMTYsIGNmciwgdGVtcDQKICAgICBlbmQKIAogICAgIHN1YnAgdGVtcDIsIHRl
bXAxCkBAIC0xMTMwLDcgKzExODIsMTQgQEAgbWFjcm8gcHJlcGFyZUZvclRhaWxDYWxsKGNhbGxl
ZSwgdGVtcDEsIHRlbXAyLCB0ZW1wMywgY2FsbFB0clRhZykKICAgICBlbmQKIAogICAgIG1vdmUg
dGVtcDEsIHNwCi0gICAgam1wIGNhbGxlZSwgY2FsbFB0clRhZworICAgIGlmIEFSTTY0RQorICAg
ICAgICBtb3ZlIHRlbXA0LCBhMgorICAgICAgICBtb3ZlIGNhbGxlZSwgYTAKKyAgICAgICAgbGVh
cCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAo
Y29uc3RleHByIEdhdGU6OnRhaWxDYWxsJWNhbGxQdHJUYWclKSAqIFB0clNpemUsIGExCisgICAg
ICAgIGptcCBbYTFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyAlY2FsbFB0clRhZyUKKyAgICBl
bHNlCisgICAgICAgIGptcCBjYWxsZWUsIGNhbGxQdHJUYWcKKyAgICBlbmQKIGVuZAogCiBtYWNy
byBzbG93UGF0aEZvckNvbW1vbkNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpAQCAtMTE0NCwxNiArMTIwMywxNiBAQCBt
YWNybyBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dQogICAgICAgICBtYWNybyAoY2FsbGVlLCBjYWxsZWVGcmFt
ZVB0cikKICAgICAgICAgICAgIGJ0cHogY2FsbGVlRnJhbWVQdHIsIC5kb250VXBkYXRlU1AKICAg
ICAgICAgICAgIG1vdmUgY2FsbGVlRnJhbWVQdHIsIHNwCi0gICAgICAgICAgICBwcmVwYXJlQ2Fs
bChjYWxsZWUsIHQyLCB0MywgdDQsIFNsb3dQYXRoUHRyVGFnKQorICAgICAgICAgICAgcHJlcGFy
ZUNhbGwoY2FsbGVlLCB0MiwgdDMsIHQ0LCB0MSwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKQogICAg
ICAgICAuZG9udFVwZGF0ZVNQOgotICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNv
ZGVOYW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIGNhbGxlZSwgU2xvd1BhdGhQdHJUYWcpCisgICAgICAg
ICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNpemUsIG9wY29kZVN0
cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgY2Fs
bGVlLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpCiAgICAgICAgIGVuZCkKIGVuZAogCiBtYWNybyBn
ZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BOYW1lLCBzaXplKQogICAgIGNyYXNoKCkg
IyBXZSBkb24ndCByZWFjaCB0aGlzIGluIHN0cmFpZ2h0IGxpbmUgY29kZS4gV2Ugb25seSByZWFj
aCBpdCB2aWEgcmV0dXJuaW5nIHRvIHRoZSBjb2RlIGJlbG93IHdoZW4gcmVjb25zdHJ1Y3Rpbmcg
c3RhY2sgZnJhbWVzIGR1cmluZyBPU1IgZXhpdC4KIAotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5M
YWJlbChvcE5hbWUsIHNpemUpCisgICAgZGVmaW5lUmV0dXJuTGFiZWwob3BOYW1lLCBzaXplKQog
CiAgICAgcmVzdG9yZVN0YWNrUG9pbnRlckFmdGVyQ2FsbCgpCiAgICAgbG9hZGkgTExJbnRSZXR1
cm5QQ1tjZnJdLCBQQwpAQCAtMTM1MSw3ICsxNDEwLDYgQEAgZW5kCiAjIGluIHQxLiBNYXkgYWxz
byB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dl
dHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAgICAj
IFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KLSAgICB0
YWdSZXR1cm5BZGRyZXNzIHNwCiAgICAgcHJlc2VydmVDYWxsZXJQQ0FuZENGUigpCiAKICAgICBp
ZiBUUkFDSU5HCkBAIC0xMzc5LDE2ICsxNDM3LDI1IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9j
a0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwgdHJhY2VTbG93UGF0aCkKICAg
ICAgICAgYnRweiByMCwgLnJlY292ZXIKICAgICAgICAgbW92ZSBjZnIsIHNwICMgcmVzdG9yZSB0
aGUgcHJldmlvdXMgc3AKICAgICAgICAgIyBwb3AgdGhlIGNhbGxlckZyYW1lIHNpbmNlIHdlIHdp
bGwganVtcCB0byBhIGZ1bmN0aW9uIHRoYXQgd2FudHMgdG8gc2F2ZSBpdAotICAgICAgICBpZiBB
Uk02NCBvciBBUk02NEUKKyAgICAgICAgaWYgQVJNNjQKKyAgICAgICAgICAgIHBvcCBsciwgY2Zy
CisgICAgICAgIGVsc2lmIEFSTTY0RQorICAgICAgICAgICAgIyB1bnRhZ1JldHVybkFkZHJlc3Mg
d2lsbCBiZSBwZXJmb3JtZWQgaW4gR2F0ZTo6ZW50cnlPU1JFbnRyeS4KICAgICAgICAgICAgIHBv
cCBsciwgY2ZyCi0gICAgICAgICAgICB1bnRhZ1JldHVybkFkZHJlc3Mgc3AKICAgICAgICAgZWxz
aWYgQVJNdjcgb3IgTUlQUwogICAgICAgICAgICAgcG9wIGNmcgogICAgICAgICAgICAgcG9wIGxy
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcCBjZnIKICAgICAgICAgZW5kCi0gICAgICAg
IGptcCByMCwgSlNFbnRyeVB0clRhZworCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAg
bW92ZSByMCwgYTAKKyAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6
b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjplbnRyeU9TUkVudHJ5
KSAqIFB0clNpemUsIGEyCisgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRy
VGFnICMgSlNFbnRyeVB0clRhZworICAgICAgICBlbHNlCisgICAgICAgICAgICBqbXAgcjAsIEpT
RW50cnlQdHJUYWcKKyAgICAgICAgZW5kCiAgICAgLnJlY292ZXI6CiAgICAgICAgIG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyKHQxKQogICAgIC5jb250aW51ZToKQEAgLTE0OTQsNyArMTU2MSwx
MiBAQCBlbmQKIG1hY3JvIGRvUmV0dXJuKCkKICAgICByZXN0b3JlQ2FsbGVlU2F2ZXNVc2VkQnlM
TEludCgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICByZXQKKyAgICBpZiBBUk02
NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0Nv
bmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJldHVybkZyb21MTEludCkgKiBQdHJTaXpl
LCBhMgorICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgZWxzZQor
ICAgICAgICByZXQKKyAgICBlbmQKIGVuZAogCiAjIFRoaXMgYnJlYWsgaW5zdHJ1Y3Rpb24gaXMg
bmVlZGVkIHNvIHRoYXQgdGhlIHN5bnRoZXNpemVkIGxsaW50UENSYW5nZVN0YXJ0IGxhYmVsCkBA
IC0xNTI1LDYgKzE1OTcsMTkgQEAgZWxzZQogZW5kCiAgICAgZG9WTUVudHJ5KG1ha2VIb3N0RnVu
Y3Rpb25DYWxsKQogCitpZiBBUk02NCBvciBBUk02NEUKKyAgICBnbG9iYWwgX3ZtRW50cnlUb1lh
cnJKSVRBZnRlcgorZW5kCitnbG9iYWwgX3ZtRW50cnlUb1lhcnJKSVQKK192bUVudHJ5VG9ZYXJy
SklUOgorICAgIGZ1bmN0aW9uUHJvbG9ndWUoKQoraWYgQVJNNjQgb3IgQVJNNjRFCisgICAgam1w
IHQ1LCBZYXJyRW50cnlQdHJUYWcKKyAgICBfdm1FbnRyeVRvWWFyckpJVEFmdGVyOgorZW5kCisg
ICAgZnVuY3Rpb25FcGlsb2d1ZSgpCisgICAgcmV0CisKIAogaWYgbm90IChDX0xPT1Agb3IgQ19M
T09QX1dJTikKICAgICAjIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNSW1wbChWTSogdm0pCkBAIC0x
NTcwLDYgKzE2NTUsNzEgQEAgaWYgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKICAgICAgICAg
cmV0CiBlbmQKIAoraWYgQVJNNjRFCisgICAgIyB2b2lkKiBqaXRDYWdlUHRyKHZvaWQqIHBvaW50
ZXIsIHVpbnRwdHJfdCB0YWcpCisgICAgZW1pdCAiLmdsb2JsIF9qaXRDYWdlUHRyIgorICAgIGVt
aXQgIl9qaXRDYWdlUHRyOiIKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBs
ZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCAr
IChjb25zdGV4cHIgR2F0ZTo6aml0Q2FnZVB0cikgKiBQdHJTaXplLCB0MgorICAgICAgICBqbXAg
W3QyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnCisgICAgICAgIGdsb2JhbCBfaml0Q2FnZVB0ckdh
dGVBZnRlcgorICAgICAgICBfaml0Q2FnZVB0ckdhdGVBZnRlcjoKKyAgICAgICAgcmV0CisKKyAg
ICBnbG9iYWwgX3RhaWxDYWxsSlNFbnRyeVRyYW1wb2xpbmUKKyAgICBfdGFpbENhbGxKU0VudHJ5
VHJhbXBvbGluZToKKyAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIGEyCisgICAgICAgIGptcCBh
MCwgSlNFbnRyeVB0clRhZworCisgICAgZ2xvYmFsIF90YWlsQ2FsbEpTRW50cnlTbG93UGF0aFRy
YW1wb2xpbmUKKyAgICBfdGFpbENhbGxKU0VudHJ5U2xvd1BhdGhUcmFtcG9saW5lOgorICAgICAg
ICB1bnRhZ1JldHVybkFkZHJlc3MgYTIKKyAgICAgICAgam1wIGEwLCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcKKworICAgIGdsb2JhbCBfZXhjZXB0aW9uSGFuZGxlclRyYW1wb2xpbmUKKyAgICBfZXhj
ZXB0aW9uSGFuZGxlclRyYW1wb2xpbmU6CisgICAgICAgIGptcCBhMCwgRXhjZXB0aW9uSGFuZGxl
clB0clRhZworCisgICAgZ2xvYmFsIF9yZXR1cm5Gcm9tTExJbnRUcmFtcG9saW5lCisgICAgX3Jl
dHVybkZyb21MTEludFRyYW1wb2xpbmU6CisgICAgICAgIHJldAorCisgICAgZ2xvYmFsIF9qc1Ry
YW1wb2xpbmVQcm9ncmFtUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lUHJvZ3JhbVByb2xvZ3Vl
OgorICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfcHJvZ3Jh
bV9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVNb2R1bGVQcm9ncmFtUHJvbG9n
dWUKKyAgICBfanNUcmFtcG9saW5lTW9kdWxlUHJvZ3JhbVByb2xvZ3VlOgorICAgICAgICB0YWdS
ZXR1cm5BZGRyZXNzIHNwCisgICAgICAgIGptcCBfbGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9n
dWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRXZhbFByb2xvZ3VlCisgICAgX2pzVHJhbXBv
bGluZUV2YWxQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBq
bXAgX2xsaW50X2V2YWxfcHJvbG9ndWUKKworICAgIGdsb2JhbCBfanNUcmFtcG9saW5lRnVuY3Rp
b25Gb3JDYWxsUHJvbG9ndWUKKyAgICBfanNUcmFtcG9saW5lRnVuY3Rpb25Gb3JDYWxsUHJvbG9n
dWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZQorCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlv
bkZvckNvbnN0cnVjdFByb2xvZ3VlCisgICAgX2pzVHJhbXBvbGluZUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0UHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFkZHJlc3Mgc3AKKyAgICAgICAgam1wIF9s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlCisKKyAgICBnbG9iYWwgX2pzVHJh
bXBvbGluZUZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xp
bmVGdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrUHJvbG9ndWU6CisgICAgICAgIHRhZ1JldHVybkFk
ZHJlc3Mgc3AKKyAgICAgICAgam1wIF9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aworCisgICAgZ2xvYmFsIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tQcm9sb2d1ZQorICAgIF9qc1RyYW1wb2xpbmVGdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tQcm9sb2d1ZToKKyAgICAgICAgdGFnUmV0dXJuQWRkcmVzcyBzcAorICAgICAgICBqbXAgX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2sKK2VuZAorCiBpZiBDX0xPT1Ag
b3IgQ19MT09QX1dJTgogICAgICMgRHVtbXkgZW50cnkgcG9pbnQgdGhlIEMgTG9vcCB1c2VzIHRv
IGluaXRpYWxpemUuCiAgICAgX2xsaW50X2VudHJ5OgpAQCAtMTcyNCwyMSArMTg3NCwzMCBAQCBl
bmQpCiAKIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrLCBtYWNybyAoKQog
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVj
aywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCi0gICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCisg
ICAgZnVuY3Rpb25Bcml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
LCAuZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQogLmZ1
bmN0aW9uRm9yQ2FsbEJlZ2luOgogICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKICAgICBk
aXNwYXRjaCgwKQogZW5kKQogCi0KIG9wKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2ssIG1hY3JvICgpCiAgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NvbnN0cnVjdCkKLSAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QmVnaW4sIF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCisgICAgZnVuY3Rpb25B
cml0eUNoZWNrKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2ssIC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQog
LmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CiAgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigx
KQogICAgIGRpc3BhdGNoKDApCiBlbmQpCiAKKyMgTmVlZCB0aGVzZSBzdHViIGxhYmVscyB0byBt
YWtlIGpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2tfdW50
YWcgZXRjLiBMTEludCBoZWxwZXIgb3Bjb2Rlcy4KK19qc190cmFtcG9saW5lX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnX3dpZGUxNjoKK19qc190cmFtcG9saW5lX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3VudGFnX3dpZGUzMjoKK19qc190cmFt
cG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrX3RhZ193aWRlMTY6Citf
anNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVja190YWdfd2lk
ZTMyOgorX2pzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9j
aGVja191bnRhZ193aWRlMTY6CitfanNfdHJhbXBvbGluZV9sbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrX3VudGFnX3dpZGUzMjoKK19qc190cmFtcG9saW5lX2xsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnX3dpZGUxNjoKK19qc190cmFtcG9s
aW5lX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2tfdGFnX3dpZGUzMjoK
KyAgICBjcmFzaCgpCiAKICMgVmFsdWUtcmVwcmVzZW50YXRpb24tc3BlY2lmaWMgY29kZS4KIGlm
IEpTVkFMVUU2NApAQCAtMjEwOSw3ICsyMjY4LDcgQEAgZW5kKQogCiBfbGxpbnRfb3BfY2FsbF9l
dmFsOgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAgICAgICAgb3BfY2FsbF9ldmFsX25h
cnJvdywKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAgICBuYXJyb3csCiAgICAgICAgIE9w
Q2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNoT3AobmFycm93LCBvcF9jYWxsX2V2
YWwpIGVuZCwKQEAgLTIxMTgsNyArMjI3Nyw3IEBAIF9sbGludF9vcF9jYWxsX2V2YWw6CiAKIF9s
bGludF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogICAgIHNsb3dQYXRoRm9yQ29tbW9uQ2FsbCgKLSAg
ICAgICAgb3BfY2FsbF9ldmFsX3dpZGUxNiwKKyAgICAgICAgb3BfY2FsbF9ldmFsLAogICAgICAg
ICB3aWRlMTYsCiAgICAgICAgIE9wQ2FsbEV2YWwsCiAgICAgICAgIG1hY3JvICgpIGRpc3BhdGNo
T3Aod2lkZTE2LCBvcF9jYWxsX2V2YWwpIGVuZCwKQEAgLTIxMjcsNyArMjI4Niw3IEBAIF9sbGlu
dF9vcF9jYWxsX2V2YWxfd2lkZTE2OgogCiBfbGxpbnRfb3BfY2FsbF9ldmFsX3dpZGUzMjoKICAg
ICBzbG93UGF0aEZvckNvbW1vbkNhbGwoCi0gICAgICAgIG9wX2NhbGxfZXZhbF93aWRlMzIsCisg
ICAgICAgIG9wX2NhbGxfZXZhbCwKICAgICAgICAgd2lkZTMyLAogICAgICAgICBPcENhbGxFdmFs
LAogICAgICAgICBtYWNybyAoKSBkaXNwYXRjaE9wKHdpZGUzMiwgb3BfY2FsbF9ldmFsKSBlbmQs
CkBAIC0yMjEyLDcgKzIzNzEsMTMgQEAgb3AoY2hlY2twb2ludF9vc3JfZXhpdF9mcm9tX2lubGlu
ZWRfY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQogCiAgICAgICAgIHJlc3RvcmVTdGF0ZUFmdGVy
Q0NhbGwoKQogICAgICAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93
X3BhdGhfdHJhbXBvbGluZSkKLSAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAg
IGlmIEFSTTY0RQorICAgICAgICAgICAgbW92ZSByMSwgYTAKKyAgICAgICAgICAgIGxlYXAgSlND
Q29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0
ZXhwciBHYXRlOjpsb29wT1NSRW50cnkpICogUHRyU2l6ZSwgYTIKKyAgICAgICAgICAgIGptcCBb
YTJdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGptcCByMSwgSlNFbnRyeVB0clRhZworICAgICAgICBlbmQKICAgICBlbHNl
CiAgICAgICAgIG5vdFN1cHBvcnRlZCgpCiAgICAgZW5kCkBAIC0yMjI5LDEyICsyMzk0LDIzIEBA
IG9wKGNoZWNrcG9pbnRfb3NyX2V4aXRfdHJhbXBvbGluZSwgbWFjcm8gKCkKICAgICAgICAgY0Nh
bGwyKF9sbGludF9zbG93X3BhdGhfY2hlY2twb2ludF9vc3JfZXhpdCkKICAgICAgICAgcmVzdG9y
ZVN0YXRlQWZ0ZXJDQ2FsbCgpCiAgICAgICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJv
d19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQotICAgICAgICBqbXAgcjEsIEpTRW50cnlQdHJU
YWcKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICBtb3ZlIHIxLCBhMAorICAgICAgICAg
ICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVN
YXAgKyAoY29uc3RleHByIEdhdGU6Omxvb3BPU1JFbnRyeSkgKiBQdHJTaXplLCBhMgorICAgICAg
ICAgICAgam1wIFthMl0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEpTRW50cnlQdHJUYWcKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgam1wIHIxLCBKU0VudHJ5UHRyVGFnCisgICAgICAgIGVu
ZAogICAgIGVsc2UKICAgICAgICAgbm90U3VwcG9ydGVkKCkKICAgICBlbmQKIGVuZCkKIAorb3Ao
bm9ybWFsX29zcl9leGl0X3RyYW1wb2xpbmUsIG1hY3JvICgpCisgICAgZGlzcGF0Y2goMCkKK2Vu
ZCkKKworCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2gg
d2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2
ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMg
bXVjaC4KQEAgLTIyNzksNCArMjQ1NSwxOCBAQCBvcCh3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlX25v
X3RscywgbWFjcm8gKCkKICAgICBjcmFzaCgpCiBlbmQpCiAKK193YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgorX3dhc21fdHJhbXBv
bGluZV93YXNtX2NhbGxfaW5kaXJlY3Q6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRp
cmVjdF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRlMTY6Citfd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Rfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJl
Y3Rfbm9fdGxzX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUzMjoKK193
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9pbmRpcmVjdF93aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9p
bmRpcmVjdF9ub190bHNfd2lkZTMyOgorICAgIGNyYXNoKCkKKwogZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDYyNmE0NjgxN2IxNTNiM2Q1NDY0N2MzZDgyYzFiNDc0OWZlNjI2ODQuLjhlNzMzN2Q3
NjIyNzQ1YTA5NmYwZWYyNGVjMDQ0MDNhNjZjNmQ4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC02
ODYsNyArNjg2LDcgQEAgZW5kCiAjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCiAK
ICMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1
ZSgpIGxlYXZlcyBiZWhpbmQuCi1tYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBz
bG93UGF0aCkKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhvcGNvZGVOYW1lLCBkb25lTGFiZWws
IHNsb3dQYXRoKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1tjZnJdLCB0MAogICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVy
c1t0MV0sIGRvbmVMYWJlbAogICAgIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkKQEAgLTc1Nyw2ICs3
NTcsMTQgQEAgbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1Jhd1BvaW50ZXJbdDFdLCBQQgogICAg
IG1vdmUgMCwgUEMKICAgICBqbXAgZG9uZUxhYmVsCisKKyAgICAjIEl0IGlzIHJlcXVpcmVkIGlu
IEFSTXY3IGFuZCBNSVBzIGJlY2F1c2UgZ2xvYmFsIGxhYmVsIGRlZmluaXRpb25zCisgICAgIyBm
b3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyBnZW5lcmF0ZXMgYSBzZXQgb2YgaW5zdHJ1Y3Rpb25zCisg
ICAgIyB0aGF0IGNhbiBjbG9iYmVyIExMSW50IGV4ZWN1dGlvbiwgcmVzdWx0aW5nIGluIHVuZXhw
ZWN0ZWQKKyAgICAjIGNyYXNoZXMuCisgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3Vu
dGFnOgorICAgIF9qc190cmFtcG9saW5lXyVvcGNvZGVOYW1lJV90YWc6CisgICAgY3Jhc2goKQog
ZW5kCiAKICMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCkBAIC0yMTE1LDcgKzIxMjMsNyBA
QCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YQogICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxs
ZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgbW92ZSB0Mywgc3AKLSAgICBwcmVwYXJlQ2FsbCglb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRb
dDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIHByZXBhcmVDYWxsKCVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0s
IHQyLCB0MywgdDQsIHQxLCBKU0VudHJ5UHRyVGFnKQogICAgIGNhbGxUYXJnZXRGdW5jdGlvbihv
cGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1
YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKIC5vcENhbGxT
bG93OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCBhYTE1NzIzYzY0MGYyZDc3ZWE4YTdmZTg4YTk4YmFlYTg2ZDJi
OWI5Li41MzRlMGRmM2RlMzAwMDYyZjc1ZjE1Y2JlNTEzNjQ5YTdkYWE3YTBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMzAwLDE1ICszMDAsMjUgQEAgbWFjcm8gZG9WTUVudHJ5KG1ha2VDYWxsKQogICAgIHJl
dAogZW5kCiAKLQogIyBhMCwgYTIsIHQzLCB0NAogbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVu
dHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgIGFkZHAgMTYsIHNwCiAgICAg
aWYgQ19MT09QIG9yIENfTE9PUF9XSU4KICAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBlbnRy
eQorICAgIGVsc2lmIEFSTTY0RQorICAgICAgICBtb3ZlIGVudHJ5LCB0MworICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6dm1FbnRyeVRvSmF2YVNjcmlwdCkgKiBQdHJTaXplLCBhMgorICAgICAg
ICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNFbnRyeVB0clRhZworICAgICAg
ICBnbG9iYWwgX3ZtRW50cnlUb0phdmFTY3JpcHRUcmFtcG9saW5lCisgICAgICAgIF92bUVudHJ5
VG9KYXZhU2NyaXB0VHJhbXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSlNFbnRyeVB0clRhZwog
ICAgIGVsc2UKICAgICAgICAgY2FsbCBlbnRyeSwgSlNFbnRyeVB0clRhZwogICAgIGVuZAorICAg
IGlmIEFSTTY0RQorICAgICAgICBnbG9iYWwgX3ZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXIK
KyAgICAgICAgX3ZtRW50cnlUb0phdmFTY3JpcHRHYXRlQWZ0ZXI6CisgICAgZW5kCiAgICAgc3Vi
cCAxNiwgc3AKIGVuZAogCkBAIC0zMjYsOSArMzM2LDIwIEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rp
b25DYWxsKGVudHJ5LCBwcm90b0NhbGxGcmFtZSwgdGVtcDEsIHRlbXAyKQogICAgICAgICBzdWJw
IDMyLCBzcAogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcKICAgICAgICAg
YWRkcCAzMiwgc3AKKyAgICBlbHNpZiBBUk02NEUKKyAgICAgICAgbW92ZSB0ZW1wMSwgdDMKKyAg
ICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dh
dGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnZtRW50cnlUb05hdGl2ZSkgKiBQdHJTaXplLCBhMgor
ICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSG9zdEZ1bmN0aW9uUHRy
VGFnCisgICAgICAgIGdsb2JhbCBfdm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZQorICAgICAgICBf
dm1FbnRyeVRvTmF0aXZlVHJhbXBvbGluZToKKyAgICAgICAgY2FsbCB0MywgSG9zdEZ1bmN0aW9u
UHRyVGFnCiAgICAgZWxzZQogICAgICAgICBjYWxsIHRlbXAxLCBIb3N0RnVuY3Rpb25QdHJUYWcK
ICAgICBlbmQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgZ2xvYmFsIF92bUVudHJ5VG9OYXRpdmVH
YXRlQWZ0ZXIKKyAgICAgICAgX3ZtRW50cnlUb05hdGl2ZUdhdGVBZnRlcjoKKyAgICBlbmQKIGVu
ZAogCiBvcChsbGludF9oYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uLCBtYWNybyAoKQpAQCAtNDMx
LDggKzQ1MiwxNCBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAg
ICBtb3ZlIFBDLCBhMQogICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zcikKICAgICAg
ICAgICAgIGJ0cHogcjAsIC5yZWNvdmVyCisKICAgICAgICAgICAgIG1vdmUgcjEsIHNwCi0gICAg
ICAgICAgICBqbXAgcjAsIEpTRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAg
ICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0ND
b25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjpsb29wT1NSRW50cnkpICogUHRyU2l6ZSwg
YTIKKyAgICAgICAgICAgICAgICBqbXAgW2EyXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNF
bnRyeVB0clRhZworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGptcCByMCwgSlNF
bnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgogICAgICAgICAg
ICAgbG9hZFBDKCkKICAgICAgICAgZW5kKQpAQCAtNjQ1LDcgKzY3Miw3IEBAIGVuZAogIyBFbnRy
eXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIAogIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2Nr
IGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KLW1hY3Jv
IGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dQYXRoKQorbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKG9wY29kZU5hbWUsIGRvbmVMYWJlbCwgc2xvd1BhdGgpCiAgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzW2Nmcl0sIHQwCiAgICAgYmlh
ZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCiAgICAgcHJl
cGFyZVN0YXRlRm9yQ0NhbGwoKQpAQCAtNjgyLDkgKzcwOSwxNSBAQCBtYWNybyBmdW5jdGlvbkFy
aXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKIAogLm5vRXh0cmFTbG90OgogICAgIGlmIEFS
TTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlVW50YWcpICogUHRy
U2l6ZSwgdDMKKyAgICAgICAgam1wIFt0M10sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZworICAgICAg
ICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdW50YWc6CiAgICAgICAgIGxvYWRwIDhbY2Zy
XSwgbHIKICAgICAgICAgYWRkcCAxNiwgY2ZyLCB0MwogICAgICAgICB1bnRhZ1JldHVybkFkZHJl
c3MgdDMKKyAgICAgICAgXyVvcGNvZGVOYW1lJVVudGFnR2F0ZUFmdGVyOgorICAgIGVsc2UKKyAg
ICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3VudGFnOgogICAgIGVuZAogCiAgICAg
Ly8gTW92ZSBmcmFtZSB1cCB0MSBzbG90cwpAQCAtNzEyLDkgKzc0NSwxNSBAQCBtYWNybyBmdW5j
dGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93UGF0aCkKICAgICBiYWRkaW56IDEsIHQyLCAu
ZmlsbExvb3AKIAogICAgIGlmIEFSTTY0RQorICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0
ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9w
Y29kZU5hbWUlVGFnKSAqIFB0clNpemUsIHQzCisgICAgICAgIGptcCBbdDNdLCBOYXRpdmVUb0pJ
VEdhdGVQdHJUYWcKKyAgICAgICAgX2pzX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3RhZzoKICAg
ICAgICAgYWRkcCAxNiwgY2ZyLCB0MQogICAgICAgICB0YWdSZXR1cm5BZGRyZXNzIHQxCiAgICAg
ICAgIHN0b3JlcCBsciwgOFtjZnJdCisgICAgICAgIF8lb3Bjb2RlTmFtZSVUYWdHYXRlQWZ0ZXI6
CisgICAgZWxzZQorICAgICAgICBfanNfdHJhbXBvbGluZV8lb3Bjb2RlTmFtZSVfdGFnOgogICAg
IGVuZAogCiAuY29udGludWU6CkBAIC0yMTc1LDkgKzIyMTQsMTUgQEAgbWFjcm8gY2FsbEhlbHBl
cihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWEKICAgICBzdG9yZVBDKCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KICAgICBtb3ZlIHQzLCBzcAotICAgIHByZXBh
cmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykK
LQorICAgIGlmIEFSTTY0RQorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MAorICAgICAgICBwcmVw
YXJlQ2FsbCh0MCwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGxvYWRw
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIHQwCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXpl
LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlz
cGF0Y2gsIHQwLCBKU0VudHJ5UHRyVGFnKQorICAgIGVsc2UKKyAgICAgICAgcHJlcGFyZUNhbGwo
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFy
Z2V0W3Q1XSwgdDIsIHQzLCB0NCwgdDEsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcp
CisgICAgZW5kCiAub3BDYWxsU2xvdzoKICAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCiBlbmQKQEAgLTIyNDUsNyArMjI5MCw3
IEBAIGxsaW50T3BXaXRoUmV0dXJuKG9wX3RvX3Byb3BlcnR5X2tleSwgT3BUb1Byb3BlcnR5S2V5
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiBlbmQpCiAKIAotY29tbW9uT3AobGxpbnRfb3Bf
Y2F0Y2gsIG1hY3JvKCkgZW5kLCBtYWNybyAoc2l6ZSkKK2NvbW1vbk9wKGxsaW50X29wX2NhdGNo
LCBtYWNybyAoKSBlbmQsIG1hY3JvIChzaXplKQogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQg
dXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1h
Y2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gp
LCBhbmQgZnJvbQogICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2Vl
IF9sbGludF90aHJvd190cmFtcG9saW5lKS4KQEAgLTIzMTAsNyArMjM1NSwxMyBAQCBvcChsbGlu
dF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgICMgVGhpcyBl
c3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCiAgICAgbG9h
ZHAgQ2FsbGVlW2Nmcl0sIHQxCiAgICAgY29udmVydENhbGxlZVRvVk0odDEpCi0gICAgam1wIFZN
Ojp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0sIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAg
ICBpZiBBUk02NEUKKyAgICAgICAgbG9hZHAgVk06OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3Qx
XSwgYTAKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpvZmZzZXRPZkpT
Q0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OmV4Y2VwdGlvbkhhbmRsZXIpICogUHRy
U2l6ZSwgYTEKKyAgICAgICAgam1wIFthMV0sIE5hdGl2ZVRvSklUR2F0ZVB0clRhZyAjIEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIGptcCBWTTo6dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3dbdDFdLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZW5kCiBlbmQpCiAK
IApAQCAtMzAxOCw0ICszMDY5LDMgQEAgb3AoZnV6emVyX3JldHVybl9lYXJseV9mcm9tX2xvb3Bf
aGludCwgbWFjcm8gKCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwg
dDAKICAgICBkb1JldHVybigpCiBlbmQpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
V2ViQXNzZW1ibHkuYXNtCmluZGV4IGI5MzIyMTM0ODM0MmU5YWE4ODg4MzJkNWM3YmFkMTY2NDdh
Y2I0NWIuLmE5ZGE4YmFkZTY3N2M2MDMzNDRiYmZkNjQyNjA5ODVhODkzNDYwNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtMTM5LDggKzEzOSwx
MiBAQCBtYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoY29kZUJsb2NrUmVnaXN0ZXIp
CiAKICAgICAgICAgICAgIHJlc3RvcmVDYWxsZWVTYXZlc1VzZWRCeVdhc20oKQogICAgICAgICAg
ICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZSKCkKLSAgICAgICAgICAgIHVudGFnUmV0dXJuQWRkcmVz
cyBzcAotICAgICAgICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBp
ZiBBUk02NEUKKyAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6
Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6d2FzbU9TUkVudHJ5
KSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRH
YXRlUHRyVGFnICMgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgam1wIHdzMCwgV2FzbUVudHJ5UHRyVGFnCisgICAgICAgICAgICBlbmQKICAgICAgICAg
LnJlY292ZXI6CiAgICAgICAgICAgICBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcihjb2RlQmxv
Y2tSZWdpc3RlcikKICAgICAgICAgZW5kKQpAQCAtMTU5LDkgKzE2MywxNCBAQCBtYWNybyBjaGVj
a1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgICAgICBidHB6IHIxLCAucmVjb3ZlcgogICAg
ICAgICAgICAgcmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgICAgICAgICByZXN0
b3JlQ2FsbGVyUENBbmRDRlIoKQotICAgICAgICAgICAgdW50YWdSZXR1cm5BZGRyZXNzIHNwCiAg
ICAgICAgICAgICBtb3ZlIHIwLCBhMAotICAgICAgICAgICAgam1wIHIxLCBXYXNtRW50cnlQdHJU
YWcKKyAgICAgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgICAgIG1vdmUgcjEsIHdzMAor
ICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZK
U0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjp3YXNtT1NSRW50cnkpICogUHRyU2l6
ZSwgd3MxCisgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcg
IyBXYXNtRW50cnlQdHJUYWcKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBqbXAg
cjEsIFdhc21FbnRyeVB0clRhZworICAgICAgICAgICAgZW5kCiAgICAgICAgIC5yZWNvdmVyOgog
ICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKICAgICAgICAgZW5kKQpAQCAtMjUzLDcgKzI2Miw2IEBAIGVuZAogCiBtYWNybyB3
YXNtUHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIGxvYWRXYXNtSW5z
dGFuY2UpCiAgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCi0gICAgdGFnUmV0dXJuQWRkcmVzcyBzcAogICAgIHByZXNlcnZlQ2FsbGVyUENBbmRD
RlIoKQogICAgIHByZXNlcnZlQ2FsbGVlU2F2ZXNVc2VkQnlXYXNtKCkKICAgICBsb2FkV2FzbUlu
c3RhbmNlKCkKQEAgLTQ1Niw3ICs0NjQsMTIgQEAgZW5kCiBtYWNybyBkb1JldHVybigpCiAgICAg
cmVzdG9yZUNhbGxlZVNhdmVzVXNlZEJ5V2FzbSgpCiAgICAgcmVzdG9yZUNhbGxlclBDQW5kQ0ZS
KCkKLSAgICByZXQKKyAgICBpZiBBUk02NEUKKyAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25z
dGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgKyAoY29uc3RleHByIEdhdGU6OnJl
dHVybkZyb21MTEludCkgKiBQdHJTaXplLCB3czAKKyAgICAgICAgam1wIFt3czBdLCBOYXRpdmVU
b0pJVEdhdGVQdHJUYWcKKyAgICBlbHNlCisgICAgICAgIHJldAorICAgIGVuZAogZW5kCiAKICMg
RW50cnkgcG9pbnQKQEAgLTQ5Nyw3ICs1MTAsMTMgQEAgb3Aod2FzbV90aHJvd19mcm9tX3Nsb3df
cGF0aF90cmFtcG9saW5lLCBtYWNybyAoKQogICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzICsgUGF5bG9hZE9mZnNldFtjZnJdLCBhMwogICAgIGNDYWxsNChfc2xvd19wYXRoX3dh
c21fdGhyb3dfZXhjZXB0aW9uKQogCi0gICAgam1wIHIwLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFn
CisgICAgaWYgQVJNNjRFCisgICAgICAgIG1vdmUgcjAsIGEwCisgICAgICAgIGxlYXAgSlNDQ29u
ZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRlTWFwICsgKGNvbnN0ZXhw
ciBHYXRlOjpleGNlcHRpb25IYW5kbGVyKSAqIFB0clNpemUsIGExCisgICAgICAgIGptcCBbYTFd
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCisgICAgZWxz
ZQorICAgICAgICBqbXAgcjAsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcKKyAgICBlbmQKIGVuZCkK
IAogIyBEaXNhYmxlIHdpZGUgdmVyc2lvbiBvZiBuYXJyb3ctb25seSBvcGNvZGVzCkBAIC03MDUs
NyArNzI0LDM4IEBAIG1hY3JvIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBzbG93UGF0aCwgc3Rv
cmVXYXNtSW5zdGFuY2UpCiAgICAgICAgICAgICBlbmQpCiAKICAgICAgICAgICAgIGFkZHAgQ2Fs
bGVyRnJhbWVBbmRQQ1NpemUsIHNwCi0gICAgICAgICAgICBjYWxsIHdzMCwgU2xvd1BhdGhQdHJU
YWcKKworICAgICAgICAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6
ZSkKKyAgICAgICAgICAgICAgICBtYWNybyBjYWxsTmFycm93KCkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgQVJNNjRFCisgICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNv
bnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6
JW9wY29kZU5hbWUlKSAqIFB0clNpemUsIHdzMQorICAgICAgICAgICAgICAgICAgICAgICAgam1w
IFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAg
ICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xp
bmVfJW9wY29kZU5hbWUlOgorICAgICAgICAgICAgICAgICAgICBjYWxsIHdzMCwgSlNFbnRyeVNs
b3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgICAgICBtYWNy
byBjYWxsV2lkZTE2KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAg
ICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUxNikgKiBQ
dHJTaXplLCB3czEKKyAgICAgICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9K
SVRHYXRlUHRyVGFnICMgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCisgICAgICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93
aWRlMTY6CisgICAgICAgICAgICAgICAgICAgIGNhbGwgd3MwLCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIG1hY3JvIGNhbGxXaWRl
MzIoKQorICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdHYXRl
TWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTMyKSAqIFB0clNpemUsIHdz
MQorICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQdHJU
YWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUzMjoKKyAg
ICAgICAgICAgICAgICAgICAgY2FsbCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZworICAgICAg
ICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgc2l6ZShjYWxsTmFycm93LCBjYWxsV2lk
ZTE2LCBjYWxsV2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCisgICAgICAgICAgICAgICAg
ZGVmaW5lUmV0dXJuTGFiZWwob3Bjb2RlTmFtZSwgc2l6ZSkKKyAgICAgICAgICAgIGVuZCkKIAog
ICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHdzMQogICAgICAgICAgICAgbG9hZGkg
V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2s6Om1fbnVtQ2FsbGVlTG9jYWxzW3dzMV0sIHdzMQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBmOWU1NzMyZmFmMTRi
MDgwOWJjMmJiNmMxOWIxYzgwMmM1OWY4MzAyLi5mZjU3YjZhNDhhZTk3NTViNGMxMDU0ODU0M2Q3
NTlmNDQzNjI3ODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm02NC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
YgpAQCAtMzcsMzggKzM3LDQ1IEBACiAjCiAjIEdQUiBjb252ZW50aW9ucywgdG8gbWF0Y2ggdGhl
IGJhc2VsaW5lIEpJVDoKICMKLSMgIHgwICA9PiB0MCwgYTAsIHIwCi0jICB4MSAgPT4gdDEsIGEx
LCByMQotIyAgeDIgID0+IHQyLCBhMgotIyAgeDMgID0+IHQzLCBhMwotIyAgeDQgID0+IHQ0Ci0j
ICB4NSAgPT4gdDUKKyMgIHgwICA9PiB0MCwgYTAsIHdhMCwgcjAKKyMgIHgxICA9PiB0MSwgYTEs
IHdhMSwgcjEKKyMgIHgyICA9PiB0MiwgYTIsIHdhMgorIyAgeDMgID0+IHQzLCBhMywgd2EzCisj
ICB4NCAgPT4gdDQsIGE0LCB3YTQKKyMgIHg1ICA9PiB0NSwgYTUsIHdhNQorIyAgeDYgID0+IHQ2
LCBhNiwgd2E2CisjICB4NyAgPT4gdDcsIGE3LCB3YTcKKyMgIHg4ICA9PiB3czAKKyMgIHg5ICA9
PiB3czEKICMgeDEzICA9PiAgICAgICAgICAgICAgICAgIChzY3JhdGNoKQogIyB4MTYgID0+ICAg
ICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAoc2Ny
YXRjaCkKLSMgeDI2ICA9PiAgICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAg
ICAgICBjc3IxIChudW1iZXJUYWcpCi0jIHgyOCAgPT4gICAgICAgICAgICAgY3NyMiAobm90Q2Vs
bE1hc2spCisjIHgyNSAgPT4gICAgICAgICAgICAgY3NyNiAobWV0YWRhdGFUYWJsZSkKKyMgeDI2
ICA9PiAgICAgICAgICAgICBjc3I3IChQQikKKyMgeDI3ICA9PiAgICAgICAgICAgICBjc3I4IChu
dW1iZXJUYWcpCisjIHgyOCAgPT4gICAgICAgICAgICAgY3NyOSAobm90Q2VsbE1hc2spCiAjIHgy
OSAgPT4gY2ZyCiAjICBzcCAgPT4gc3AKICMgIGxyICA9PiBscgogIwogIyBGUFIgY29udmVudGlv
bnMsIHRvIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQ6CiAjCi0jICBxMCAgPT4gZnQwLCBmYTAsIGZy
Ci0jICBxMSAgPT4gZnQxLCBmYTEKLSMgIHEyICA9PiBmdDIsIGZhMgotIyAgcTMgID0+IGZ0Mywg
ZmEzCi0jICBxNCAgPT4gZnQ0ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxNSAg
PT4gZnQ1ICAgICAgICAgICh1bnVzZWQgaW4gYmFzZWxpbmUpCi0jICBxOCAgPT4gY3NmcjAgICAg
ICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyAgcTkgID0+IGNzZnIxICAgICAgICAoT25s
eSB0aGUgbG93ZXIgNjQgYml0cykKLSMgcTEwICA9PiBjc2ZyMiAgICAgICAgKE9ubHkgdGhlIGxv
d2VyIDY0IGJpdHMpCi0jIHExMSAgPT4gY3NmcjMgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBi
aXRzKQotIyBxMTIgID0+IGNzZnI0ICAgICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKLSMg
cTEzICA9PiBjc2ZyNSAgICAgICAgKE9ubHkgdGhlIGxvd2VyIDY0IGJpdHMpCi0jIHExNCAgPT4g
Y3NmcjYgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQotIyBxMTUgID0+IGNzZnI3ICAg
ICAgICAoT25seSB0aGUgbG93ZXIgNjQgYml0cykKKyMgIHEwICA9PiBmdDAsIGZhMCwgd2ZhMCwg
ZnIKKyMgIHExICA9PiBmdDEsIGZhMSwgd2ZhMQorIyAgcTIgID0+IGZ0MiwgZmEyLCB3ZmEyCisj
ICBxMyAgPT4gZnQzLCBmYTMsIHdmYTMKKyMgIHE0ICA9PiBmdDQsICAgICAgd2ZhNCAgICAgICAg
ICAodW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTUgID0+IGZ0NSwgICAgICB3ZmE1ICAgICAgICAg
ICh1bnVzZWQgaW4gYmFzZWxpbmUpCisjICBxNiAgPT4gICAgICAgICAgIHdmYTYgICAgICAgICAg
KHVudXNlZCBpbiBiYXNlbGluZSkKKyMgIHE3ICA9PiAgICAgICAgICAgd2ZhNyAgICAgICAgICAo
dW51c2VkIGluIGJhc2VsaW5lKQorIyAgcTggID0+IGNzZnIwICAgICAgICAgICAgICAgICAgIChP
bmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyAgcTkgID0+IGNzZnIxICAgICAgICAgICAgICAgICAg
IChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTAgID0+IGNzZnIyICAgICAgICAgICAgICAg
ICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTEgID0+IGNzZnIzICAgICAgICAgICAg
ICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTIgID0+IGNzZnI0ICAgICAgICAg
ICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTMgID0+IGNzZnI1ICAgICAg
ICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTQgID0+IGNzZnI2ICAg
ICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQorIyBxMTUgID0+IGNzZnI3
ICAgICAgICAgICAgICAgICAgIChPbmx5IHRoZSBsb3dlciA2NCBiaXRzKQogIyBxMzEgID0+IHNj
cmF0Y2gKIAogZGVmIGFybTY0R1BSTmFtZShuYW1lLCBraW5kKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL21pcHMucmIKaW5kZXggNDFiOGI5ZmE3YjlkOWU1MzM1NjZiZjJkMGExOGVh
MDg3NDdmMGQ3OS4uMTM3MzZhZDliNzZmZjNkY2E5YzMxMjIzN2FjOWM0YzFkOGM2MTdkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vbWlwcy5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9taXBzLnJiCkBAIC02ODEsMTcgKzY4MSw3
IEBAIGRlZiBtaXBzQWRkUElDQ29kZShsaXN0KQogICAgICAgICB8IG5vZGUgfAogICAgICAgICBt
eUxpc3QgPDwgbm9kZQogICAgICAgICBpZiBub2RlLmlzX2E/IExhYmVsCi0gICAgICAgICAgICAj
IEZJWE1FOiBbSlNDXSBjaGVja3BvaW50X29zcl9leGl0X2Zyb21faW5saW5lZF9jYWxsX3RyYW1w
b2xpbmUgaXMgYSByZXR1cm4gbG9jYXRpb24KLSAgICAgICAgICAgICMgYW5kIHdlIHNob3VsZCBu
YW1lIGl0IHByb3Blcmx5LgotICAgICAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA4MjM2Ci0gICAgICAgICAgICBpZiBub2RlLm5hbWUgPX4gL14uKl9y
ZXR1cm5fbG9jYXRpb24oPzpfKD86d2lkZTE2fHdpZGUzMikpPyQvIG9yIG5vZGUubmFtZS5zdGFy
dF93aXRoPygiX2NoZWNrcG9pbnRfb3NyX2V4aXRfZnJvbV9pbmxpbmVkX2NhbGxfdHJhbXBvbGlu
ZSIpIG9yIG5vZGUubmFtZS5zdGFydF93aXRoPygiX2Z1enplcl9yZXR1cm5fZWFybHlfZnJvbV9s
b29wX2hpbnQiKQotICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBoYXZlIGEgc3BlY2lhbCBj
YXNlIGZvciByZXR1cm4gbG9jYXRpb24gbGFiZWxzIGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzCi0g
ICAgICAgICAgICAgICAgIyByZWFjaGVkIGZyb20gYSBgcmV0YCBpbnN0cnVjdGlvbi4gSW4gdGhp
cyBjYXNlLCB3ZSBuZWVkIHRvIHByb3BlciByZWNvbmZpZ3VyZSBgJGdwYAotICAgICAgICAgICAg
ICAgICMgdXNpbmcgYCRyYWAgaW5zdGVhZCBvZiB1c2luZyBgJHQ5YC4KLSAgICAgICAgICAgICAg
ICBteUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInBpY2hkciIsIFtN
SVBTX1JFVFVSTl9BRERSRVNTX1JFR10pCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbXlMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJwaWNoZHIiLCBb
TUlQU19DQUxMX1JFR10pCi0gICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG15TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAicGljaGRyIiwgW01JUFNfQ0FMTF9SRUdd
KQogICAgICAgICBlbmQKICAgICB9CiAgICAgbXlMaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTVkMDI3MTI4Y2FiMWY5OWViYjI0YzdkZmIyOThhM2IyNzg0
OTQyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dh
dGUuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgRU5BQkxF
KEpJVF9PUEVSQVRJT05fVkFMSURBVElPTikKKworI2RlZmluZSBKU0NfVVRJTElUWV9HQVRFUyh2
KSBcCisgICAgdihqaXRDYWdlUHRyLCBOb1B0clRhZykgXAorICAgIHYodGFpbENhbGxKU0VudHJ5
UHRyVGFnLCBOb1B0clRhZykgXAorICAgIHYodGFpbENhbGxKU0VudHJ5U2xvd1BhdGhQdHJUYWcs
IE5vUHRyVGFnKSBcCisgICAgdihsb29wT1NSRW50cnksIE5vUHRyVGFnKSBcCisgICAgdihlbnRy
eU9TUkVudHJ5LCBOb1B0clRhZykgXAorICAgIHYod2FzbU9TUkVudHJ5LCBOb1B0clRhZykgXAor
ICAgIHYoZXhjZXB0aW9uSGFuZGxlciwgTm9QdHJUYWcpIFwKKyAgICB2KHJldHVybkZyb21MTElu
dCwgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
VW50YWcsIE5vUHRyVGFnKSBcCisgICAgdihsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVja1RhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2tVbnRhZywgTm9QdHJUYWcpIFwKKyAgICB2KGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2tUYWcsIE5vUHRyVGFnKSBcCisgICAgdih2bUVudHJ5VG9KYXZh
U2NyaXB0LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdih2bUVudHJ5VG9OYXRpdmUsIEhvc3RGdW5j
dGlvblB0clRhZykgXAorCisjZGVmaW5lIEpTQ19KU19HQVRFX09QQ09ERVModikgXAorICAgIHYo
b3BfY2FsbCwgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfdGFpbF9jYWxsLCBKU0VudHJ5UHRy
VGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3QsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2l0
ZXJhdG9yX25leHQsIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2l0ZXJhdG9yX29wZW4sIEpT
RW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFn
KSBcCisgICAgdihvcF90YWlsX2NhbGxfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisg
ICAgdihvcF9jb25zdHJ1Y3Rfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihv
cF9jYWxsX3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdihvcF90
YWlsX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KG9w
X3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50c19zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcp
IFwKKyAgICB2KG9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRh
ZykgXAorICAgIHYob3BfY2FsbF9ldmFsX3Nsb3csIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAor
ICAgIHYob3BfaXRlcmF0b3JfbmV4dF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAg
ICB2KG9wX2l0ZXJhdG9yX29wZW5fc2xvdywgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisKKyNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisKKyNkZWZpbmUgSlNDX1dBU01fR0FURV9PUENPREVTKHYp
IFwKKyAgICB2KHdhc21fY2FsbCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNt
X2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdhc21fY2FsbF9p
bmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfaW5kaXJl
Y3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKworI2Vsc2UKKyNkZWZpbmUgSlND
X1dBU01fR0FURV9PUENPREVTKHYpCisjZW5kaWYKKworZW51bSBjbGFzcyBHYXRlIDogdWludDhf
dCB7CisjZGVmaW5lIEpTQ19ERUZJTkVfR0FURV9FTlVNKGdhdGVOYW1lLCB0YWcpIGdhdGVOYW1l
LAorI2RlZmluZSBKU0NfREVGSU5FX09QQ09ERV9HQVRFX0VOVU0oZ2F0ZU5hbWUsIHRhZykgZ2F0
ZU5hbWUsIGdhdGVOYW1lIyNfd2lkZTE2LCBnYXRlTmFtZSMjX3dpZGUzMiwKKyAgICBKU0NfVVRJ
TElUWV9HQVRFUyhKU0NfREVGSU5FX0dBVEVfRU5VTSkKKyAgICBKU0NfSlNfR0FURV9PUENPREVT
KEpTQ19ERUZJTkVfT1BDT0RFX0dBVEVfRU5VTSkKKyAgICBKU0NfV0FTTV9HQVRFX09QQ09ERVMo
SlNDX0RFRklORV9PUENPREVfR0FURV9FTlVNKQorI3VuZGVmIEpTQ19ERUZJTkVfR0FURV9FTlVN
Cit9OworCisjZGVmaW5lIEpTQ19DT1VOVChnYXRlTmFtZSwgdGFnKSArIDEKKyNkZWZpbmUgSlND
X09QQ09ERV9DT1VOVChnYXRlTmFtZSwgdGFnKSArIDMKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZHYXRlcyA9IChKU0NfVVRJTElUWV9HQVRFUyhKU0NfQ09VTlQpKSArIChKU0Nf
SlNfR0FURV9PUENPREVTKEpTQ19PUENPREVfQ09VTlQpKSArIChKU0NfV0FTTV9HQVRFX09QQ09E
RVMoSlNDX09QQ09ERV9DT1VOVCkpOworI3VuZGVmIEpTQ19DT1VOVAorI3VuZGVmIEpTQ19PUENP
REVfQ09VTlQKKyNlbHNlCisvLyBLZWVwIGl0IG5vbi16ZXJvIHRvIG1ha2UgSlNDQ29uZmlnJ3Mg
YXJyYXkgbm90IFswXS4KK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZHYXRlcyA9
IDE7CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDQ29uZmlnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcu
aAppbmRleCA1YTQ3MzE3YzYyYTVlYmE2NjY2NzU3MzVmNzc0MDM1MDBjNjgwYjQxLi43Zjk2ZWM1
MmVkMjFhZmRlMzNkYTEzMGRiN2RkNDY5NGVjNjE5OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NDb25maWcuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkdhdGUuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJPcHRp
b25zTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTkyLDYgKzkzLDcgQEAg
c3RydWN0IENvbmZpZyB7CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBbbnVtT3Bjb2RlSURzICsg
bnVtV2FzbU9wY29kZUlEc107CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBXaWRlMTZbbnVtT3Bj
b2RlSURzICsgbnVtV2FzbU9wY29kZUlEc107CiAgICAgICAgIE9wY29kZSBvcGNvZGVNYXBXaWRl
MzJbbnVtT3Bjb2RlSURzICsgbnVtV2FzbU9wY29kZUlEc107CisgICAgICAgIGNvbnN0IHZvaWQq
IGdhdGVNYXBbbnVtYmVyT2ZHYXRlc107CiAgICAgfSBsbGludDsKIAogI2lmIENQVShBUk02NEUp
ICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQpAQCAtMTE3LDYgKzExOSw3IEBAIGV4dGVybiAi
QyIgSlNfRVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfanNjQ29uZmlnOwogY29uc3RleHByIHNpemVf
dCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGlu
dC5vcGNvZGVNYXApOwogY29uc3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1h
cFdpZGUxNiA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5vcGNvZGVNYXBXaWRlMTYpOwog
Y29uc3RleHByIHNpemVfdCBvZmZzZXRPZkpTQ0NvbmZpZ09wY29kZU1hcFdpZGUzMiA9IG9mZnNl
dG9mKEpTQzo6Q29uZmlnLCBsbGludC5vcGNvZGVNYXBXaWRlMzIpOworY29uc3RleHByIHNpemVf
dCBvZmZzZXRPZkpTQ0NvbmZpZ0dhdGVNYXAgPSBvZmZzZXRvZihKU0M6OkNvbmZpZywgbGxpbnQu
Z2F0ZU1hcCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDUHRyVGFnLmNwcAppbmRleCBhOTQxNjM0YmZmZGE3YTQ2MzE1NmM0NTkwNmY3
NzQ5YmVhMjI2YWM3Li5lYWIzN2VlODc4NDE2NDliYmQ5MWFjNDk0MjNlOWUzYmQ3YzUyZWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5jcHAKQEAgLTI4LDYg
KzI4LDEyIEBACiAKICNpbmNsdWRlICJKU0NDb25maWcuaCIKIAorI2lmIEVOQUJMRShKSVRfQ0FH
RSkKKyNpbmNsdWRlIDxtYWNoaW5lL2NwdV9jYXBhYmlsaXRpZXMuaD4KKyNpbmNsdWRlIDxzeXMv
bW1hbi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0Mg
ewogCiAjaWYgQ1BVKEFSTTY0RSkgJiYgRU5BQkxFKFBUUlRBR19ERUJVR0dJTkcpCkBAIC0zNSw4
ICs0MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBjb25zdCBjaGFyKiB0YWdGb3JQdHIo
Y29uc3Qgdm9pZCogcHRyKQogewogI2RlZmluZSBSRVRVUk5fTkFNRV9JRl9UQUdfTUFUQ0hFUyh0
YWcsIGNhbGxlZVR5cGUsIGNhbGxlclR5cGUpIFwKLSAgICBpZiAocHRyID09IFdURjo6dGFnQ29k
ZVB0ckltcGw8V1RGOjpQdHJUYWdBY3Rpb246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4ocmVtb3ZlQ29k
ZVB0clRhZyhwdHIpKSkgXAotICAgICAgICByZXR1cm4gI3RhZzsKKyAgICBpZiAoY2FsbGVyVHlw
ZSAhPSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQgfHwgY2FsbGVlVHlwZSAhPSBQdHJUYWdDYWxsZXJU
eXBlOjpOYXRpdmUpIHsgXAorICAgICAgICBpZiAocHRyID09IFdURjo6dGFnQ29kZVB0ckltcGw8
V1RGOjpQdHJUYWdBY3Rpb246Ok5vQXNzZXJ0LCBKU0M6OnRhZz4ocmVtb3ZlQ29kZVB0clRhZyhw
dHIpKSkgXAorICAgICAgICAgICAgcmV0dXJuICN0YWc7IFwKKyAgICB9CiAgICAgRk9SX0VBQ0hf
SlNDX1BUUlRBRyhSRVRVUk5fTkFNRV9JRl9UQUdfTUFUQ0hFUykKICN1bmRlZiBSRVRVUk5fTkFN
RV9JRl9UQUdfTUFUQ0hFUwogICAgIHJldHVybiBudWxscHRyOyAvLyBNYXRjaGluZyB0YWcgbm90
IGZvdW5kLgpAQCAtNjEsNCArNjksMzIgQEAgdm9pZCBpbml0aWFsaXplUHRyVGFnTG9va3VwKCkK
IAogI2VuZGlmIC8vIENQVShBUk02NEUpICYmIEVOQUJMRShQVFJUQUdfREVCVUdHSU5HKQogCisj
aWYgQ1BVKEFSTTY0RSkKKworUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyB0YWcp
Cit7CisjZGVmaW5lIFJFVFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2Fs
bGVyVHlwZSkgY2FzZSBfdGFnTmFtZTogcmV0dXJuIGNhbGxlclR5cGU7CisgICAgc3dpdGNoICh0
YWcpIHsKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZTsKKyAg
ICB9CisjdW5kZWYgUkVUVVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlclR5
cGU6Ok5hdGl2ZTsKK30KKworUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlKFB0clRhZyB0YWcp
Cit7CisjZGVmaW5lIFJFVFVSTl9QVFJUQUdfVFlQRShfdGFnTmFtZSwgY2FsbGVlVHlwZSwgY2Fs
bGVyVHlwZSkgY2FzZSBfdGFnTmFtZTogcmV0dXJuIGNhbGxlZVR5cGU7CisgICAgc3dpdGNoICh0
YWcpIHsKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BUUlRBRyhSRVRVUk5fUFRSVEFHX1RZUEUpCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZTsKKyAg
ICB9CisjdW5kZWYgUkVUVVJOX1BUUlRBR19UWVBFCisgICAgcmV0dXJuIFB0clRhZ0NhbGxlZVR5
cGU6Ok5hdGl2ZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUHRyVGFnLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAppbmRleCBkZjhiNDAyMjY2ZTBlMDIwMTlh
ZjM1ZjY4ZTkxZmFhNzhiZTc5MzViLi40NjQ1YjA1Yzk3MzY1MTdlN2FhNTA0OWJlODc2ZWU0OGIy
ZTgyMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJU
YWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaApAQCAt
MjcsNDYgKzI3LDUzIEBACiAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25MaXN0LmgiCiAjaW5jbHVk
ZSA8d3RmL1B0clRhZy5oPgorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSklUX0NB
R0UpCitleHRlcm4gIkMiIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGppdENhZ2VQdHIodm9pZCog
cG9pbnRlciwgdWludHB0cl90IHRhZyk7CisjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHVz
aW5nIFB0clRhZyA9IFdURjo6UHRyVGFnOwogCiAjZGVmaW5lIEZPUl9FQUNIX0pTQ19QVFJUQUco
dikgXAotICAgIC8qIE5hdGl2ZSBOb25lICovIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxl
cjpOb25lICovIFwKICAgICB2KERPTUpJVEZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KERpc2Fzc2VtYmx5UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwK
ICAgICB2KFB1dFZhbHVlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0Nh
bGxlclR5cGU6Ok5vbmUpIFwKLSAgICAvKiBKSVQgTm9uZSAqLyBcCisgICAgLyogQ2FsbGVlOkpJ
VCBDYWxsZXI6Tm9uZSAqLyBcCiAgICAgdihCM0NvbXBpbGF0aW9uUHRyVGFnLCBQdHJUYWdDYWxs
ZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5vbmUpIFwKICAgICB2KEV4ZWN1dGFibGVN
ZW1vcnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9u
ZSkgXAogICAgIHYoTGlua0J1ZmZlclB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJU
YWdDYWxsZXJUeXBlOjpOb25lKSBcCi0gICAgLyogTmF0aXZlIE5hdGl2ZSAqLyBcCisgICAgdihZ
YXJyOEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpO
b25lKSBcCisgICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRy
VGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFyck1hdGNoT25seThCaXRQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6Tm9uZSkgXAorICAgIHYoWWFy
ck1hdGNoT25seTE2Qml0UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxl
clR5cGU6Ok5vbmUpIFwKKyAgICAvKiBDYWxsZWU6TmF0aXZlIENhbGxlcjpOYXRpdmUgKi8gXAog
ICAgIHYoQnl0ZWNvZGVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2Fs
bGVyVHlwZTo6TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFByb2JlRXhl
Y3V0b3JQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6Ok5hdGl2ZSwgUHRyVGFnQ2FsbGVyVHlwZTo6
TmF0aXZlKSBcCiAgICAgdihKSVRQcm9iZVN0YWNrSW5pdGlhbGl6YXRpb25GdW5jdGlvblB0clRh
ZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwK
LSAgICB2KFNsb3dQYXRoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRhZ0Nh
bGxlclR5cGU6Ok5hdGl2ZSkgXAotICAgIC8qIEpJVCBOYXRpdmUgKi8gXAorICAgIC8qIENhbGxl
ZTpKSVQgQ2FsbGVyOk5hdGl2ZSAqLyBcCiAgICAgdihOYXRpdmVUb0pJVEdhdGVQdHJUYWcsIFB0
clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCi0gICAgLyog
TmF0aXZlIEpJVCAqLyBcCisgICAgdihZYXJyRW50cnlQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6
OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6TmF0aXZlKSBcCisgICAgLyogQ2FsbGVlOk5hdGl2ZSBD
YWxsZXI6SklUICovIFwKICAgICB2KEhvc3RGdW5jdGlvblB0clRhZywgUHRyVGFnQ2FsbGVlVHlw
ZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KE9wZXJhdGlvblB0clRh
ZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAg
ICB2KEpJVFRvTmF0aXZlR2F0ZVB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJU
YWdDYWxsZXJUeXBlOjpKSVQpIFwKLSAgICAvKiBKSVQgSklUICovIFwKKyAgICAvKiBDYWxsZWU6
SklUIENhbGxlcjpKSVQgKi8gXAogICAgIHYoRXhjZXB0aW9uSGFuZGxlclB0clRhZywgUHRyVGFn
Q2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KEpJVFRodW5r
UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAog
ICAgIHYoSklUU3R1YlJvdXRpbmVQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFn
Q2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihKU0VudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBl
OjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAorICAgIHYoSlNFbnRyeVNsb3dQYXRoUHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAg
IHYoSlNJbnRlcm5hbFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJU
eXBlOjpKSVQpIFwKICAgICB2KEpTU3dpdGNoUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQs
IFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAgIHYoT1NSRW50cnlQdHJUYWcsIFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAgICAgdihPU1JFeGl0UHRy
VGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6OkpJVCkgXAogICAg
IHYoV2FzbUVudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5
cGU6OkpJVCkgXAotICAgIHYoWWFycjhCaXRQdHJUYWcsIFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwg
UHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyMTZCaXRQdHJUYWcsIFB0clRhZ0Nh
bGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCi0gICAgdihZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6SklULCBQdHJUYWdDYWxsZXJUeXBlOjpK
SVQpIFwKLSAgICB2KFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6
SklULCBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpIFwKICAgICB2KFlhcnJCYWNrdHJhY2tQdHJUYWcs
IFB0clRhZ0NhbGxlZVR5cGU6OkpJVCwgUHRyVGFnQ2FsbGVyVHlwZTo6SklUKSBcCiAKICNkZWZp
bmUgSlNDX0RFQ0xBUkVfUFRSVEFHKG5hbWUsIHR5cGUsIHRhcmdldCkgV1RGX0RFQ0xBUkVfUFRS
VEFHKG5hbWUpCkBAIC0xMDgsMTggKzExNSwyNiBAQCBGT1JfRUFDSF9KU0NfUFRSVEFHKEpTQ19E
RUNMQVJFX1BUUlRBRykKICNwcmFnbWEgd2FybmluZyhwb3ApCiAjZW5kaWYKIAorSlNfRVhQT1JU
X1BSSVZBVEUgUHRyVGFnQ2FsbGVyVHlwZSBjYWxsZXJUeXBlKFB0clRhZyk7CitKU19FWFBPUlRf
UFJJVkFURSBQdHJUYWdDYWxsZWVUeXBlIGNhbGxlZVR5cGUoUHRyVGFnKTsKKwogdGVtcGxhdGU8
UHRyVGFnIHRhZywgUHRyVGFnQ2FsbGVlVHlwZSBjYWxsZWVUeXBlLCBQdHJUYWdDYWxsZXJUeXBl
IGNhbGxlclR5cGUsIHR5cGVuYW1lIFB0clR5cGU+CiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQdHJU
eXBlIHRhZ0pTQ0NvZGVQdHJJbXBsKFB0clR5cGUgcHRyKQogewogICAgIHN0YXRpY19hc3NlcnQo
Y2FsbGVyVHlwZSA9PSBQdHJUYWdDYWxsZXJUeXBlOjpKSVQpOwogICAgIGlmIGNvbnN0ZXhwciAo
Y2FsbGVlVHlwZSA9PSBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUpIHsKLSAgICAgICAgaWYgY29u
c3RleHByICh0YWcgIT0gSklUVG9OYXRpdmVHYXRlUHRyVGFnKSB7Ci0gICAgICAgICAgICBzdGF0
aWNfYXNzZXJ0KHRhZyA9PSBPcGVyYXRpb25QdHJUYWcgfHwgdGFnID09IEhvc3RGdW5jdGlvblB0
clRhZyk7Ci0gICAgICAgICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcp
Ci0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJ
VE9wZXJhdGlvbihwdHIpOwotICAgICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHRhZyA9PSBI
b3N0RnVuY3Rpb25QdHJUYWcpCi0gICAgICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5z
dGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlvbihwdHIpOwotICAgICAgICB9CisgICAgICAgIHN0
YXRpY19hc3NlcnQodGFnID09IE9wZXJhdGlvblB0clRhZyB8fCB0YWcgPT0gSG9zdEZ1bmN0aW9u
UHRyVGFnKTsKKyAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQor
ICAgICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0pJVE9wZXJh
dGlvbihwdHIpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAodGFnID09IEhvc3RGdW5jdGlv
blB0clRhZykKKyAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0
SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgICAgIGlmIChP
cHRpb25zOjp1c2VKSVRDYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0
clR5cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lk
Kj4ocHRyKSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdl
KCkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFB0clR5cGU+KGppdENhZ2VQdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPihwdHIpLCB0YWcpKTsKKyNlbmRpZiAvLyBFTkFCTEUoSklUX0NB
R0UpCiAgICAgfQogICAgIHJldHVybiBXVEY6OnRhZ05hdGl2ZUNvZGVQdHJJbXBsPHRhZz4ocHRy
KTsKIH0KQEAgLTEyOSwxNyArMTQ0LDYyIEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFB0clR5cGUg
dW50YWdKU0NDb2RlUHRySW1wbChQdHJUeXBlIHB0cikKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGNh
bGxlclR5cGUgPT0gUHRyVGFnQ2FsbGVyVHlwZTo6SklUKTsKICAgICBpZiBjb25zdGV4cHIgKGNh
bGxlZVR5cGUgPT0gUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlKSB7Ci0gICAgICAgIGlmIGNvbnN0
ZXhwciAodGFnICE9IEpJVFRvTmF0aXZlR2F0ZVB0clRhZykgewotICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydCh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJU
YWcpOwotICAgICAgICAgICAgaWYgY29uc3RleHByICh0YWcgPT0gT3BlcmF0aW9uUHRyVGFnKQot
ICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkuYXNzZXJ0SXNKSVRP
cGVyYXRpb24ocHRyKTsKLSAgICAgICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9z
dEZ1bmN0aW9uUHRyVGFnKQotICAgICAgICAgICAgICAgIEpJVE9wZXJhdGlvbkxpc3Q6Omluc3Rh
bmNlKCkuYXNzZXJ0SXNIb3N0RnVuY3Rpb24ocHRyKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCh0
YWcgPT0gT3BlcmF0aW9uUHRyVGFnIHx8IHRhZyA9PSBIb3N0RnVuY3Rpb25QdHJUYWcpOworICAg
ICAgICBpZiBjb25zdGV4cHIgKHRhZyA9PSBPcGVyYXRpb25QdHJUYWcpCisgICAgICAgICAgICBK
SVRPcGVyYXRpb25MaXN0OjppbnN0YW5jZSgpLmFzc2VydElzSklUT3BlcmF0aW9uKHB0cik7Cisg
ICAgICAgIGVsc2UgaWYgY29uc3RleHByICh0YWcgPT0gSG9zdEZ1bmN0aW9uUHRyVGFnKQorICAg
ICAgICAgICAgSklUT3BlcmF0aW9uTGlzdDo6aW5zdGFuY2UoKS5hc3NlcnRJc0hvc3RGdW5jdGlv
bihwdHIpOworI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJ
VENhZ2UoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYml0d2lzZV9jYXN0PFB0clR5
cGU+KEpJVE9wZXJhdGlvbkxpc3Q6Omluc3RhbmNlKCkubWFwKGJpdHdpc2VfY2FzdDx2b2lkKj4o
cHRyKSkpID09IHB0cik7CisgICAgICAgICAgICByZXR1cm4gcmVtb3ZlQ29kZVB0clRhZyhwdHIp
OwogICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENh
Z2UoKSkgeworICAgICAgICAgICAgUHRyVHlwZSByZW1vdmVkID0gcmVtb3ZlQ29kZVB0clRhZyhw
dHIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoKHRhZ0pTQ0NvZGVQdHJJbXBsPHRhZywg
Y2FsbGVlVHlwZSwgY2FsbGVyVHlwZT4ocmVtb3ZlZCkpID09IHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gcmVtb3ZlZDsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShKSVRfQ0FHRSkKICAg
ICB9CiAgICAgcmV0dXJuIFdURjo6dW50YWdOYXRpdmVDb2RlUHRySW1wbDx0YWc+KHB0cik7CiB9
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+CitpbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRy
V2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNr
UG9pbnRlcikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2lu
dGVyKTsKKyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxQdHJUeXBlPihKU0NfSklUX0NBR0UoYml0
d2lzZV9jYXN0PHZvaWQqPihwdHIpLCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdGFja1BvaW50
ZXIpKSk7CisjZW5kaWYKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVybiBwdHJhdXRoX3NpZ25f
dW5hdXRoZW50aWNhdGVkKHB0ciwgcHRyYXV0aF9rZXlfcHJvY2Vzc19kZXBlbmRlbnRfY29kZSwg
c3RhY2tQb2ludGVyKTsKKyNlbHNlCisgICAgcmV0dXJuIHB0cjsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBQdHJUeXBlPgoraW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0
YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRl
cikKK3sKKyAgICBBU1NFUlQocHRyKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhY2tQb2ludGVyKTsK
KyNpZiBFTkFCTEUoSklUX0NBR0UpCisgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkgewor
ICAgICAgICBQdHJUeXBlIHVuY2FnZWQgPSByZW1vdmVDb2RlUHRyVGFnKHB0cik7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbCh1bmNh
Z2VkLCBzdGFja1BvaW50ZXIpID09IHB0cik7CisgICAgICAgIHJldHVybiB1bmNhZ2VkOworICAg
IH0KKyNlbmRpZgorI2lmIENQVShBUk02NEUpCisgICAgcmV0dXJuIF9fYnVpbHRpbl9wdHJhdXRo
X2F1dGgocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9jb2RlLCBzdGFja1BvaW50
ZXIpOworI2Vsc2UKKyAgICByZXR1cm4gcHRyOworI2VuZGlmCit9CisKICNpZiBDUFUoQVJNNjRF
KSAmJiBFTkFCTEUoUFRSVEFHX0RFQlVHR0lORykKIHZvaWQgaW5pdGlhbGl6ZVB0clRhZ0xvb2t1
cCgpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGNoUmVzdWx0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRjaFJlc3VsdC5o
CmluZGV4IGFkZDI2NGU5MDk3NWIyNjVmZDViZTEwZjI2MzJmZDc1ZTI4NmM4MWMuLmYzMDVlNGEx
NjRkMDFmZmIxZjgxYzc5ZWI1ZTQ5ZjA0NWI4MTg1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hdGNoUmVzdWx0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0Y2hSZXN1bHQuaApAQCAtMzQsNyArMzQsMTAgQEAgc3RydWN0IE1hdGNo
UmVzdWx0OwogI2lmIENQVShBRERSRVNTMzIpCiB1c2luZyBFbmNvZGVkTWF0Y2hSZXN1bHQgPSB1
aW50NjRfdDsKICNlbHNlCi11c2luZyBFbmNvZGVkTWF0Y2hSZXN1bHQgPSBNYXRjaFJlc3VsdDsK
K3N0cnVjdCBFbmNvZGVkTWF0Y2hSZXN1bHQgeworICAgIHNpemVfdCBzdGFydDsKKyAgICBzaXpl
X3QgZW5kOworfTsKICNlbmRpZgogCiBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewpAQCAtNTYsNiArNTks
MTIgQEAgc3RydWN0IE1hdGNoUmVzdWx0IHsKICAgICAgICAgLCBlbmQoYml0d2lzZV9jYXN0PE1h
dGNoUmVzdWx0PihtYXRjaCkuZW5kKQogICAgIHsKICAgICB9CisjZWxzZQorICAgIEFMV0FZU19J
TkxJTkUgTWF0Y2hSZXN1bHQoRW5jb2RlZE1hdGNoUmVzdWx0IG1hdGNoKQorICAgICAgICA6IHN0
YXJ0KG1hdGNoLnN0YXJ0KQorICAgICAgICAsIGVuZChtYXRjaC5lbmQpCisgICAgeworICAgIH0K
ICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgTWF0Y2hSZXN1bHQgZmFpbGVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggMGQyZjVhY2Y3
OWNkZjU3NDk4ZTZhNzNjMDY3MmQ2ZGQ0YmY4ODQ3OC4uOTU4OTg5YzkyM2E0ZmFjYmY2NTc1Y2Rk
ZjlmMTJlZDVlYWUxOGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAKQEAgLTUwLDYgKzUwLDExIEBACiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEpJVF9DQUdFKQorI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9KSVRD
YWdlQWRkaXRpb25zLmg+CisjaW5jbHVkZSA8bWFjaGluZS9jcHVfY2FwYWJpbGl0aWVzLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0zOTIs
NiArMzk3LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZUFsbEpJVE9wdGlvbnMoKQogICAgIE9wdGlv
bnM6OnVzZU9NR0pJVCgpID0gZmFsc2U7CiAgICAgT3B0aW9uczo6dXNlRE9NSklUKCkgPSBmYWxz
ZTsKICAgICBPcHRpb25zOjp1c2VSZWdFeHBKSVQoKSA9IGZhbHNlOworICAgIE9wdGlvbnM6OnVz
ZUpJVENhZ2UoKSA9IGZhbHNlOwogfQogCiB2b2lkIE9wdGlvbnM6OnJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMoKQpAQCAtMTExNCw0ICsxMTIwLDEwIEBAIGJvb2wgT3B0aW9uUmVhZGVyOjpPcHRp
b246Om9wZXJhdG9yPT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKKyNpZiBFTkFCTEUoSklUX0NBR0UpICYmIGRlZmluZWQoX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDE1MDAwMAorYm9vbCBjYW5Vc2VKSVRDYWdlKCkgeyByZXR1cm4gSlNDX0pJVF9DQUdFX1ZFUlNJ
T04oKTsgfQorI2Vsc2UKK2Jvb2wgY2FuVXNlSklUQ2FnZSgpIHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAppbmRleCBiZTg1OWVhOTFkY2FlOGMyMjcxOTAzZWEzYjAxZjZjZDBk
NTFmNTkzLi4yMjVlMjI0ODNkMDlhYzIwM2JjYmVmZTVjYmE4ZDc1MmYwYWZlMDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQzLDYgKzQzLDgg
QEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSB0cnVlOwog
Y29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICNl
bmRpZgogCitKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKKwogLy8gSG93
IGRvIEpTQyBWTSBvcHRpb25zIHdvcms/CiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0K
IC8vIFRoZSBGT1JfRUFDSF9KU0NfT1BUSU9OKCkgbWFjcm8gYmVsb3cgZGVmaW5lcyBhIGxpc3Qg
b2YgYWxsIEpTQyBvcHRpb25zIGluIHVzZSwKQEAgLTUyMCw2ICs1MjIsNyBAQCBjb25zdGV4cHIg
Ym9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoVW5zaWdu
ZWQsIHNlZWRGb3JMSUNNRnV6emVyLCA0MjQyNDIsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
RG91YmxlLCBhbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5LCAwLjUsIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0Rm9yVGVz
dGluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlSklUQ2FnZSwg
Y2FuVXNlSklUQ2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFs
ZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNsb3dQYXRocy5jcHAKaW5kZXggOWM0YjU5NTQ2ZTZmOTYwYWI3NThlM2E1M2YyYjYxZGJiNjc0
YzIxZS4uOTA2MjExMjFhODFlMzFiNTIxNzViNTk3ZDliYzQxMjY0ODY3NjMzYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgfSB3aGlsZSAoZmFsc2Up
CiAKICNkZWZpbmUgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwgY2FsbFRhcmdldCwg
Y2FsbFRhcmdldFRhZykgZG8geyBcCi0gICAgICAgIFdBU01fUkVUVVJOX1RXTygocmV0YWdDb2Rl
UHRyPGNhbGxUYXJnZXRUYWcsIFNsb3dQYXRoUHRyVGFnPihjYWxsVGFyZ2V0KSksIHRhcmdldElu
c3RhbmNlKTsgXAorICAgICAgICBXQVNNX1JFVFVSTl9UV08oKHJldGFnQ29kZVB0cjxjYWxsVGFy
Z2V0VGFnLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWc+KGNhbGxUYXJnZXQpKSwgdGFyZ2V0SW5zdGFu
Y2UpOyBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgQ09ERV9CTE9DSygpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggMjJiZjY2ZDhjODIyZGE5MWUw
MzE4MDZhMmY2OWQzNmU0YmQ4ZjdiZC4uOTRkMzAyYWVhZmQ1MTZhNWIzZmM3ZjRiZjVmNzk1YTNm
NTZjYTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTQwLDYg
KzQwLDEwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKKyNpZiBDUFUo
QVJNNjQpCitKU0NfQU5OT1RBVEVfSklUX09QRVJBVElPTihfSklUVGFyZ2V0X3ZtRW50cnlUb1lh
cnJKSVRBZnRlciwgdm1FbnRyeVRvWWFyckpJVEFmdGVyKTsKKyNlbmRpZgorCiBNYXRjaGluZ0Nv
bnRleHRIb2xkZXI6Ok1hdGNoaW5nQ29udGV4dEhvbGRlcihWTSYgdm0sIFlhcnJDb2RlQmxvY2sq
IHlhcnJDb2RlQmxvY2ssIE1hdGNoRnJvbSBtYXRjaEZyb20pCiAgICAgOiBtX3ZtKHZtKQogewpA
QCAtMzc0Niw5ICszNzUwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZ
YXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHB1c2goWDg2UmVn
aXN0ZXJzOjplY3gpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgIHRhZ1JldHVy
bkFkZHJlc3MoKTsKICAgICAgICAgaWYgKG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpIHsKLSAgICAg
ICAgICAgIHB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0ZXIpOwogICAg
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHgxMDAwMCksIHN1cHBsZW1lbnRhcnlQbGFuZXNC
YXNlKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4ZDgwMCksIGxlYWRpbmdTdXJy
b2dhdGVUYWcpOwogICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoMHhkYzAwKSwgdHJhaWxp
bmdTdXJyb2dhdGVUYWcpOwpAQCAtMzgwMyw4ICszODA1LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwogICAgICAgICBwb3AoWDg2UmVnaXN0
ZXJzOjplYnApOwogI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICBpZiAobV9kZWNvZGVTdXJyb2dh
dGVQYWlycykKLSAgICAgICAgICAgIHBvcFBhaXIoZnJhbWVQb2ludGVyUmVnaXN0ZXIsIGxpbmtS
ZWdpc3Rlcik7CisgICAgICAgIC8vIERvIG5vdGhpbmcKICNlbGlmIENQVShBUk1fVEhVTUIyKQog
ICAgICAgICBwb3AoQVJNUmVnaXN0ZXJzOjpyOCk7CiAgICAgICAgIHBvcChBUk1SZWdpc3RlcnM6
OnI2KTsKQEAgLTM4MTMsNyArMzgxNCwxMyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICNlbGlmIENQVShN
SVBTKQogICAgICAgICAvLyBEbyBub3RoaW5nCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkKKyAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJldGFnQ29kZVB0cjx2b2lkKiwgQ0Z1bmN0aW9uUHRy
VGFnLCBPcGVyYXRpb25QdHJUYWc+KCZ2bUVudHJ5VG9ZYXJySklUQWZ0ZXIpKSwgcmVnVDApOwor
ICAgICAgICBmYXJKdW1wKHJlZ1QwLCBPcGVyYXRpb25QdHJUYWcpOworI2Vsc2UKICAgICAgICAg
cmV0KCk7CisjZW5kaWYKICAgICB9CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaAppbmRleCA2NjQyOGUwNjYzZjMzMjA5MTc3ODFkYmI5ZDBjNzMwZDJiNmQ2ODViLi4x
NWI3YmQ2YTI2ZmY2ZTRiMDAxMjEyOTg5ZThmZGNlZWE1YTRiOGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5oCkBAIC03Niw2ICs3Niw5IEBAIGNsYXNzIE1hdGNoaW5nQ29udGV4
dEhvbGRlciB7CiAjZW5kaWYKIH07CiAKK2V4dGVybiAiQyIgRW5jb2RlZE1hdGNoUmVzdWx0IHZt
RW50cnlUb1lhcnJKSVQoY29uc3Qgdm9pZCogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgsIGludCogb3V0cHV0LCBNYXRjaGluZ0NvbnRleHRIb2xkZXIqIG1hdGNoaW5nQ29u
dGV4dCwgY29uc3Qgdm9pZCogY29kZVB0cik7CitleHRlcm4gIkMiIHZvaWQgdm1FbnRyeVRvWWFy
ckpJVEFmdGVyKHZvaWQpOworCiBjbGFzcyBZYXJyQ29kZUJsb2NrIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShZYXJyQ29kZUJsb2NrKTsK
QEAgLTEwOSwyNSArMTEyLDQxIEBAIGNsYXNzIFlhcnJDb2RlQmxvY2sgewogICAgIE1hdGNoUmVz
dWx0IGV4ZWN1dGUoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoLCBpbnQqIG91dHB1dCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRjaGluZ0NvbnRl
eHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENvZGUoKSk7CisjaWYgQ1BVKEFSTTY0
KQorICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodm1FbnRyeVRvWWFyckpJVChpbnB1dCwgc3Rh
cnQsIGxlbmd0aCwgb3V0cHV0LCAmbWF0Y2hpbmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFycjhC
aXRQdHJUYWcsIFlhcnJFbnRyeVB0clRhZz4obV9yZWY4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKSkpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9u
UHRyPFlhcnJKSVRDb2RlOCwgWWFycjhCaXRQdHJUYWc+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgbWF0Y2hpbmdDb250ZXh0
KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFy
KiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQsIE1h
dGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGhhczE2Qml0Q29kZSgpKTsKKyNpZiBDUFUoQVJNNjQpCisgICAgICAgIHJldHVybiBNYXRj
aFJlc3VsdCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsICZt
YXRjaGluZ0NvbnRleHQsIHJldGFnQ29kZVB0cjxZYXJyMTZCaXRQdHJUYWcsIFlhcnJFbnRyeVB0
clRhZz4obV9yZWYxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpKTsKKyNlbHNlCiAgICAg
ICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZTE2LCBZ
YXJyMTZCaXRQdHJUYWc+KG1fcmVmMTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0
LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIG1hdGNoaW5nQ29udGV4dCkpOworI2VuZGlmCiAgICAg
fQogCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdD
b250ZXh0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkpOwor
I2lmIENQVShBUk02NCkKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHZtRW50cnlUb1lhcnJK
SVQoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsICZtYXRjaGluZ0NvbnRleHQsIHJldGFn
Q29kZVB0cjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZywgWWFyckVudHJ5UHRyVGFnPihtX21hdGNo
T25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7CisjZWxzZQogICAgICAgICByZXR1
cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHk4LCBZ
YXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0ciwgbWF0Y2hpbmdDb250ZXh0KSk7
CisjZW5kaWYKICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBp
bnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9s
ZGVyJiBtYXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2Rl
TWF0Y2hPbmx5KCkpOworI2lmIENQVShBUk02NEUpCisgICAgICAgIHJldHVybiBNYXRjaFJlc3Vs
dCh2bUVudHJ5VG9ZYXJySklUKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCAmbWF0Y2hp
bmdDb250ZXh0LCByZXRhZ0NvZGVQdHI8WWFyck1hdGNoT25seTE2Qml0UHRyVGFnLCBZYXJyRW50
cnlQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKSk7Cisj
ZWxzZQogICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJ
VENvZGVNYXRjaE9ubHkxNiwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFnPihtX21hdGNoT25seTE2
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgbnVsbHB0
ciwgbWF0Y2hpbmdDb250ZXh0KSk7CisjZW5kaWYKICAgICB9CiAKICNpZiBFTkFCTEUoUkVHRVhQ
X1RSQUNJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oIGIvU291
cmNlL1dURi93dGYvT1NBbGxvY2F0b3IuaAppbmRleCA3NzEzNjJiOTJhMmU1MjI5Mzk4NGUxMTY1
MWJkMmE5MzkzZDk4M2EyLi4yNjg4YTRlZmRmODE3ZGI3YWY2NjY5ODc1ZGYyM2E3OTg5MzZhYTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PU0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL09TQWxsb2NhdG9yLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgT1NBbGxvY2F0b3Ig
ewogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUgY2FsbGVkIG9uIGEgcmVnaW9u
IG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlvbiwKICAgICAvLyB0aGUgbWVt
b3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0dGVkIHN0YXRlLiByZXNlcnZl
VW5jb21taXR0ZWQgcmV0dXJucyB0bwogICAgIC8vIHlvdSBtZW1vcnkgdGhhdCBpcyB6ZXJvZWQu
Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkKiByZXNlcnZlVW5jb21taXR0ZWQo
c2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wg
ZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXpl
X3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVj
dXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMgPSBmYWxzZSk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHJlbGVhc2VEZWNvbW1pdHRlZCh2b2lkKiwgc2l6ZV90KTsKIAogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHN5bW1ldHJpYzsgdGhleSBjb21taXQgb3IgZGVjb21taXQgYSByZWdpb24gb2YgVk0g
KHVuY29tbWl0dGVkIFZNIHNob3VsZApAQCAtNTUsMjcgKzU1LDI3IEBAIGNsYXNzIE9TQWxsb2Nh
dG9yIHsKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzeW1tZXRyaWM7IHJlc2VydmVBbmRDb21t
aXQgYWxsb2NhdGVzIFZNIGluIGFuIGNvbW1pdHRlZCBzdGF0ZSwKICAgICAvLyBkZWNvbW1pdEFu
ZFJlbGVhc2Ugc2hvdWxkIGJlIGNhbGxlZCBvbiBhIHJlZ2lvbiBvZiBWTSBhbGxvY2F0ZWQgYnkg
YSBzaW5nbGUgcmVzZXJ2YXRpb24sCiAgICAgLy8gdGhlIG1lbW9yeSBtdXN0IGFsbCBjdXJyZW50
bHkgYmUgaW4gYSBjb21taXR0ZWQgc3RhdGUuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJv
b2wgd3JpdGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBpbmNsdWRl
c0d1YXJkUGFnZXMgPSBmYWxzZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
KiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3Jp
dGFibGUgPSB0cnVlLCBib29sIGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxl
ZCA9IGZhbHNlLCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcyA9IGZhbHNlKTsKICAgICBzdGF0aWMg
dm9pZCBkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogYmFzZSwgc2l6ZV90IHNpemUpOwogCiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgYWtpbiB0byByZXNlcnZlQW5kQ29tbWl0L2RlY29tbWl0QW5k
UmVsZWFzZSwgYWJvdmUgLSBob3dldmVyIHJhdGhlciB0aGFuCiAgICAgLy8gY29tbWl0dGluZy9k
ZWNvbW1pdHRpbmcgdGhlIGVudGlyZSByZWdpb24gYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFsbG93
IGEgc3VicmVnaW9uIHRvIGJlCiAgICAgLy8gc3BlY2lmaWVkLgotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgcmVzZXJ2ZVNpemUsIHNp
emVfdCBjb21taXRTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRy
dWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIHZvaWQqIHJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29t
bWl0U2l6ZSwgVXNhZ2UgPSBVbmtub3duVXNhZ2UsIGJvb2wgd3JpdGFibGUgPSB0cnVlLCBib29s
IGV4ZWN1dGFibGUgPSBmYWxzZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCA9IGZhbHNlKTsKIAogICAg
IC8vIFJlYWxsb2NhdGUgYW4gZXhpc3RpbmcsIGNvbW1pdHRlZCBhbGxvY2F0aW9uLgogICAgIC8v
IFRoZSBwcmlvciBhbGxvY2F0aW9uIG11c3QgYmUgZnVsbHkgY29taXR0ZWQsIGFuZCB0aGUgbmV3
IHNpemUgd2lsbCBhbHNvIGJlIGZ1bGx5IGNvbW1pdHRlZC4KICAgICAvLyBUaGlzIGludGVyZmFj
ZSBpcyBwcm92aWRlZCBzaW5jZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gb3B0aW1pemUgdGhpcyBv
cGVyYXRpb24gb24gc29tZSBwbGF0Zm9ybXMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRlZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgVCogcmVhbGxvY2F0ZUNvbW1pdHRl
ZChUKiwgc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSA9IFVua25vd25Vc2Fn
ZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlLCBib29sIGpp
dENhZ2VFbmFibGVkID0gZmFsc2UpOwogCiAgICAgLy8gSGludCB0byB0aGUgT1MgdGhhdCBhbiBh
ZGRyZXNzIHJhbmdlIGlzIG5vdCBleHBlY3RlZCB0byBiZSBhY2Nlc3NlZCBhbnl0aW1lIHNvb24u
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKHZvaWQqLCBzaXplX3QpOwogfTsKIAotaW5saW5lIHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNl
cnZlQW5kQ29tbWl0KHNpemVfdCByZXNlcnZlU2l6ZSwgc2l6ZV90IGNvbW1pdFNpemUsIFVzYWdl
IHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCitpbmxpbmUgdm9pZCogT1NB
bGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IHJlc2VydmVTaXplLCBzaXplX3QgY29t
bWl0U2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9v
bCBqaXRDYWdlRW5hYmxlZCkKIHsKLSAgICB2b2lkKiBiYXNlID0gcmVzZXJ2ZVVuY29tbWl0dGVk
KHJlc2VydmVTaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIGJh
c2UgPSByZXNlcnZlVW5jb21taXR0ZWQocmVzZXJ2ZVNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhl
Y3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQpOwogICAgIGNvbW1pdChiYXNlLCBjb21taXRTaXplLCB3
cml0YWJsZSwgZXhlY3V0YWJsZSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CkBAIC04Niw5ICs4Niw5
IEBAIGlubGluZSB2b2lkIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2Uodm9pZCogcmVs
ZWFzZUJhc2UsIHNpemVfdCByZWxlYXNlU2l6CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1p
bmxpbmUgVCogT1NBbGxvY2F0b3I6OnJlYWxsb2NhdGVDb21taXR0ZWQoVCogb2xkQmFzZSwgc2l6
ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlKQoraW5saW5lIFQqIE9TQWxsb2NhdG9yOjpyZWFsbG9jYXRlQ29tbWl0
dGVkKFQqIG9sZEJhc2UsIHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSwgVXNhZ2UgdXNh
Z2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCkK
IHsKLSAgICB2b2lkKiBuZXdCYXNlID0gcmVzZXJ2ZUFuZENvbW1pdChuZXdTaXplLCB1c2FnZSwg
d3JpdGFibGUsIGV4ZWN1dGFibGUpOworICAgIHZvaWQqIG5ld0Jhc2UgPSByZXNlcnZlQW5kQ29t
bWl0KG5ld1NpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQp
OwogICAgIG1lbWNweShuZXdCYXNlLCBvbGRCYXNlLCBzdGQ6Om1pbihvbGRTaXplLCBuZXdTaXpl
KSk7CiAgICAgZGVjb21taXRBbmRSZWxlYXNlKG9sZEJhc2UsIG9sZFNpemUpOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUKj4obmV3QmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
YWdlUmVzZXJ2YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCmluZGV4
IGEyYWVlODg0ZTk4NjRjZDkzMjFhNmI0OTRlOWU2OTg4MjQ0MzEwMzAuLjQ5NGJmMDVlMDAxNzE1
Mzg1MWViMTBhNTUzM2MyMmZjNjVjYjc3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bh
Z2VSZXNlcnZhdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCkBA
IC01NSwxMiArNTUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUGFnZVJlc2VydmF0aW9u
IDogcHJpdmF0ZSBQYWdlQmxvY2sgewogcHVibGljOgotICAgIFBhZ2VSZXNlcnZhdGlvbigpCi0g
ICAgICAgIDogbV9jb21taXR0ZWQoMCkKLSAgICAgICAgLCBtX3dyaXRhYmxlKGZhbHNlKQotICAg
ICAgICAsIG1fZXhlY3V0YWJsZShmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFBhZ2VSZXNlcnZh
dGlvbigpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIFBhZ2VCbG9jazo6YmFzZTsKICAgICB1c2lu
ZyBQYWdlQmxvY2s6OnNpemU7CkBAIC05MywyMiArODgsMjIgQEAgY2xhc3MgUGFnZVJlc2VydmF0
aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgICAgICByZXR1cm4gbV9jb21taXR0ZWQ7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBP
U0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29s
IHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UpCisgICAgc3RhdGljIFBh
Z2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNh
Z2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9v
bCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBh
Z2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUsIHVzYWdl
LCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBmYWxz
ZSk7CisgICAgICAgIHJldHVybiBQYWdlUmVzZXJ2YXRpb24oT1NBbGxvY2F0b3I6OnJlc2VydmVV
bmNvbW1pdHRlZChzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUsIGppdENhZ2VFbmFi
bGVkLCBmYWxzZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBqaXRDYWdlRW5hYmxlZCwg
ZmFsc2UpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9uIHJlc2VydmVX
aXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NB
bGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0
YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2ZVdpdGhHdWFy
ZFBhZ2VzKHNpemVfdCBzaXplLCBPU0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRv
cjo6VW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0g
ZmFsc2UsIGJvb2wgaml0Q2FnZUVuYWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc1BhZ2VBbGlnbmVkKHNpemUpKTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihP
U0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUgKyBwYWdlU2l6ZSgpICogMiwgdXNh
Z2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1dGFi
bGUsIHRydWUpOworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpy
ZXNlcnZlVW5jb21taXR0ZWQoc2l6ZSArIHBhZ2VTaXplKCkgKiAyLCB1c2FnZSwgd3JpdGFibGUs
IGV4ZWN1dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKSwgc2l6ZSwgd3JpdGFibGUsIGV4ZWN1
dGFibGUsIGppdENhZ2VFbmFibGVkLCB0cnVlKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFnZVJl
c2VydmF0aW9uIHJlc2VydmVBbmRDb21taXRXaXRoR3VhcmRQYWdlcyhzaXplX3Qgc2l6ZSwgT1NB
bGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwgYm9vbCB3
cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdl
UmVzZXJ2YXRpb24gcmVzZXJ2ZUFuZENvbW1pdFdpdGhHdWFyZFBhZ2VzKHNpemVfdCBzaXplLCBP
U0FsbG9jYXRvcjo6VXNhZ2UgdXNhZ2UgPSBPU0FsbG9jYXRvcjo6VW5rbm93blVzYWdlLCBib29s
IHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaml0Q2FnZUVu
YWJsZWQgPSBmYWxzZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1BhZ2VBbGlnbmVkKHNpemUp
KTsKLSAgICAgICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFu
ZENvbW1pdChzaXplICsgcGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJs
ZSwgdHJ1ZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCB0cnVlKTsKKyAgICAgICAgcmV0
dXJuIFBhZ2VSZXNlcnZhdGlvbihPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplICsg
cGFnZVNpemUoKSAqIDIsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJs
ZWQsIHRydWUpLCBzaXplLCB3cml0YWJsZSwgZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIHRy
dWUpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZSgpCkBAIC0xMjcsNyArMTIyLDcgQEAg
Y2xhc3MgUGFnZVJlc2VydmF0aW9uIDogcHJpdmF0ZSBQYWdlQmxvY2sgewogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBQYWdlUmVzZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNpemUsIGJvb2wg
d3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBoYXNHdWFyZFBhZ2VzKQorICAgIFBhZ2VS
ZXNlcnZhdGlvbih2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBl
eGVjdXRhYmxlLCBib29sLCBib29sIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgIDogUGFnZUJsb2Nr
KGJhc2UsIHNpemUsIGhhc0d1YXJkUGFnZXMpCiAgICAgICAgICwgbV9jb21taXR0ZWQoMCkKICAg
ICAgICAgLCBtX3dyaXRhYmxlKHdyaXRhYmxlKQpAQCAtMTM1LDkgKzEzMCw5IEBAIGNsYXNzIFBh
Z2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAg
c2l6ZV90IG1fY29tbWl0dGVkOwotICAgIGJvb2wgbV93cml0YWJsZTsKLSAgICBib29sIG1fZXhl
Y3V0YWJsZTsKKyAgICBzaXplX3QgbV9jb21taXR0ZWQgeyAwIH07CisgICAgYm9vbCBtX3dyaXRh
YmxlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZXhlY3V0YWJsZSB7IGZhbHNlIH07CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCAwZDY2NjQxNzg2ZWJlOTQ2N2FlMDU5NmQ1MDc3
YTE2MDU5N2U4MDdhLi43NmFkMjM1OWExYTdiMzRlZjg5OWQ0MmIyZWM2ZTRkMTBiM2RjMjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTg4OCwxMCArODg4LDEwIEBACiAjZXJyb3IgIkVO
QUJMRShXSExTTF9DT01QSUxFUikgcmVxdWlyZXMgRU5BQkxFKFdFQkdQVSkiCiAjZW5kaWYKIAot
I2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKLSNkZWZpbmUgVVNFX0pVTVBfSVNMQU5E
UyAxCisjaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiAoKFVTRShBUFBMRV9JTlRFUk5B
TF9TREspICYmIENQVShBUk02NEUpKSkKKyNkZWZpbmUgRU5BQkxFX0pJVF9DQUdFIDEKICNlbmRp
ZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKSAmJiBBU1NFUlRfRU5BQkxFRAorI2lm
IE9TKERBUldJTikgJiYgQ1BVKEFERFJFU1M2NCkgJiYgRU5BQkxFKEpJVCkgJiYgKEVOQUJMRShK
SVRfQ0FHRSkgfHwgQVNTRVJUX0VOQUJMRUQpCiAjZGVmaW5lIEVOQUJMRV9KSVRfT1BFUkFUSU9O
X1ZBTElEQVRJT04gMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVVzZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1Vc2UuaAppbmRleCAyMmY0NjJiMmE2NGRh
YmY4YzA4NDlhOTIwZGVhYmQ5YTFjMWU1YmUyLi5mY2U5ZWRhMTMzYzliYjMxNjcwZTMyZTlkZjNh
MDdhNGEyZGMzOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVVzZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtVXNlLmgKQEAgLTMwOCwzICszMDgsNyBAQAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDwgMTEwMDAwKQogI2RlZmluZSBVU0VfQ1RGT05UR0VUQURWQU5DRVNfV09S
S0FST1VORCAxCiAjZW5kaWYKKworI2lmIENQVShBUk02NCkgJiYgQ1BVKEFERFJFU1M2NCkKKyNk
ZWZpbmUgVVNFX0pVTVBfSVNMQU5EUyAxCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1B0clRhZy5oIGIvU291cmNlL1dURi93dGYvUHRyVGFnLmgKaW5kZXggNWE0MjE3MTExZDVm
YTkxMjE3NjBhMjQyMWUwMjBiNWYxZGViNzhiYy4uYWM5MmVjMzE5NGRmYWM4NGMxNTNmYjY2ZmFm
ZWVhM2NlOTYwNGY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUHRyVGFnLmgKKysrIGIv
U291cmNlL1dURi93dGYvUHRyVGFnLmgKQEAgLTM0NCw2ICszNDQsNyBAQCBib29sIGlzVGFnZ2Vk
V2l0aChQdHJUeXBlIHZhbHVlKQogdGVtcGxhdGU8UHRyVGFnIHRhZywgdHlwZW5hbWUgUHRyVHlw
ZT4KIHZvaWQgYXNzZXJ0SXNUYWdnZWRXaXRoKFB0clR5cGUgdmFsdWUpCiB7CisgICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsKICAgICBXVEZfUFRSVEFHX0FTU0VSVChQdHJUYWdBY3Rpb246OkRlYnVn
QXNzZXJ0LCB2YWx1ZSwgdGFnLCBpc1RhZ2dlZFdpdGg8dGFnPih2YWx1ZSkpOwogfQogCkBAIC00
NDksMjAgKzQ1MCw2IEBAIGlubGluZSBUKiByZXRhZ0FycmF5UHRyKFQqIHB0ciwgc2l6ZV90IG9s
ZExlbmd0aCwgc2l6ZV90IG5ld0xlbmd0aCkKICAgICByZXR1cm4gcHRyYXV0aF9hdXRoX2FuZF9y
ZXNpZ24ocHRyLCBwdHJhdXRoX2tleV9wcm9jZXNzX2RlcGVuZGVudF9kYXRhLCBvbGRMZW5ndGgs
IHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2RhdGEsIG5ld0xlbmd0aCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFB0clR5cGU+Ci1pbmxpbmUgUHRyVHlwZSB0YWdDb2RlUHRyV2l0aFN0
YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRl
cikKLXsKLSAgICBBU1NFUlQocHRyKTsKLSAgICByZXR1cm4gcHRyYXV0aF9zaWduX3VuYXV0aGVu
dGljYXRlZChwdHIsIHB0cmF1dGhfa2V5X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2Vf
Y2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRlcikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJU
eXBlPgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENh
bGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqIHN0YWNrUG9pbnRlcikKLXsKLSAgICBBU1NFUlQo
cHRyKTsKLSAgICByZXR1cm4gX19idWlsdGluX3B0cmF1dGhfYXV0aChwdHIsIHB0cmF1dGhfa2V5
X3Byb2Nlc3NfZGVwZW5kZW50X2NvZGUsIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHN0YWNrUG9pbnRl
cikpOwotfQotCiB0ZW1wbGF0ZSA8UHRyVGFnIHRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGlu
ZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBlIHB0ckludCkKIHsKQEAgLTUyMCwxMiArNTA3LDYgQEAg
aW5saW5lIFQqIHJldGFnQXJyYXlQdHIoVCogcHRyLCBzaXplX3QsIHNpemVfdCkKICAgICByZXR1
cm4gcHRyOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT4+Ci1pbmxpbmUgUHRy
VHlwZSB0YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENhbGwoUHRyVHlwZSBwdHIsIGNv
bnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQotdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFs
dWU+PgotaW5saW5lIFB0clR5cGUgdW50YWdDb2RlUHRyV2l0aFN0YWNrUG9pbnRlckZvckpJVENh
bGwoUHRyVHlwZSBwdHIsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBwdHI7IH0KLQogdGVtcGxhdGUg
PFB0clRhZywgdHlwZW5hbWUgSW50VHlwZT4KIGlubGluZSBJbnRUeXBlIHRhZ0ludChJbnRUeXBl
IHB0ckludCkKIHsKQEAgLTU3Miw5ICs1NTMsNyBAQCB1c2luZyBXVEY6OnJldGFnQXJyYXlQdHI7
CiB1c2luZyBXVEY6OnJlbW92ZUFycmF5UHRyVGFnOwogCiB1c2luZyBXVEY6OnRhZ0NvZGVQdHI7
Ci11c2luZyBXVEY6OnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2ludGVyRm9ySklUQ2FsbDsKIHVzaW5n
IFdURjo6dW50YWdDb2RlUHRyOwotdXNpbmcgV1RGOjp1bnRhZ0NvZGVQdHJXaXRoU3RhY2tQb2lu
dGVyRm9ySklUQ2FsbDsKIHVzaW5nIFdURjo6cmV0YWdDb2RlUHRyOwogdXNpbmcgV1RGOjpyZW1v
dmVDb2RlUHRyVGFnOwogdXNpbmcgV1RGOjp0YWdDRnVuY3Rpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9PU0FsbG9jYXRvclBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bv
c2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCmluZGV4IDQ0NTQwNTljNTE1ZDJhNDEyYjQzMmQwNzE0
NmNmNmYwMTFkNDc2MGIuLjZjZWZkMmVlMmQzMTA1YzJkNDA0ODVmNjk2NWZlYmE4ODQ1YjQzM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L09TQWxsb2NhdG9yUE9TSVguY3BwCkBAIC0zMSwxNCAr
MzEsMjcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYWdl
QmxvY2suaD4KIAorI2lmIEVOQUJMRShKSVRfQ0FHRSkKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvSklUQ2FnZUFkZGl0aW9ucy5oPgorI2Vsc2UgLy8gRU5BQkxFKEpJVF9DQUdFKQorI2lmIE9T
KERBUldJTikKKyNkZWZpbmUgTUFQX0VYRUNVVEFCTEVfRk9SX0pJVCBNQVBfSklUCisjZGVmaW5l
IE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVRfV0lUSF9KSVRfQ0FHRSBNQVBfSklUCisjZWxzZSAvLyBP
UyhEQVJXSU4pCisjZGVmaW5lIE1BUF9FWEVDVVRBQkxFX0ZPUl9KSVQgMAorI2RlZmluZSBNQVBf
RVhFQ1VUQUJMRV9GT1JfSklUX1dJVEhfSklUX0NBR0UgMAorI2VuZGlmIC8vIE9TKERBUldJTikK
KyNlbmRpZiAvLyBFTkFCTEUoSklUX0NBR0UpCisKIG5hbWVzcGFjZSBXVEYgewogCi12b2lkKiBP
U0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2Us
IGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMp
Cit2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNh
Z2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5h
YmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7CiAjaWYgT1MoTElOVVgpCiAgICAgVU5V
U0VEX1BBUkFNKHVzYWdlKTsKICAgICBVTlVTRURfUEFSQU0od3JpdGFibGUpOwogICAgIFVOVVNF
RF9QQVJBTShleGVjdXRhYmxlKTsKKyAgICBVTlVTRURfUEFSQU0oaml0Q2FnZUVuYWJsZWQpOwog
ICAgIFVOVVNFRF9QQVJBTShpbmNsdWRlc0d1YXJkUGFnZXMpOwogCiAgICAgdm9pZCogcmVzdWx0
ID0gbW1hcCgwLCBieXRlcywgUFJPVF9OT05FLCBNQVBfTk9SRVNFUlZFIHwgTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTiwgLTEsIDApOwpAQCAtNDYsNyArNTksNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6
cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFi
bGUsCiAgICAgICAgIENSQVNIKCk7CiAgICAgbWFkdmlzZShyZXN1bHQsIGJ5dGVzLCBNQURWX0RP
TlRORUVEKTsKICNlbHNlCi0gICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFuZENvbW1pdChieXRl
cywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlLCBpbmNsdWRlc0d1YXJkUGFnZXMpOworICAg
IHZvaWQqIHJlc3VsdCA9IHJlc2VydmVBbmRDb21taXQoYnl0ZXMsIHVzYWdlLCB3cml0YWJsZSwg
ZXhlY3V0YWJsZSwgaml0Q2FnZUVuYWJsZWQsIGluY2x1ZGVzR3VhcmRQYWdlcyk7CiAjaWYgSEFW
RShNQURWX0ZSRUVfUkVVU0UpCiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAvLyBUbyBzdXBw
b3J0IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1pdCIgbW9kZWwsIHdlIGhhdmUgdG8gaW5pdGlhbGx5
IGRlY29tbWl0LgpAQCAtNTksNyArNzIsNyBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2ZVVu
Y29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21taXQo
c2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxl
LCBib29sIGluY2x1ZGVzR3VhcmRQYWdlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5k
Q29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhl
Y3V0YWJsZSwgYm9vbCBqaXRDYWdlRW5hYmxlZCwgYm9vbCBpbmNsdWRlc0d1YXJkUGFnZXMpCiB7
CiAgICAgLy8gQWxsIFBPU0lYIHJlc2VydmF0aW9ucyBzdGFydCBvdXQgbG9naWNhbGx5IGNvbW1p
dHRlZC4KICAgICBpbnQgcHJvdGVjdGlvbiA9IFBST1RfUkVBRDsKQEAgLTcwLDggKzgzLDE0IEBA
IHZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBieXRlcywgVXNhZ2Ug
dXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvCiAKICAgICBpbnQgZmxhZ3MgPSBNQVBfUFJJVkFURSB8
IE1BUF9BTk9OOwogI2lmIE9TKERBUldJTikKLSAgICBpZiAoZXhlY3V0YWJsZSkKLSAgICAgICAg
ZmxhZ3MgfD0gTUFQX0pJVDsKKyAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICBpZiAoaml0
Q2FnZUVuYWJsZWQpCisgICAgICAgICAgICBmbGFncyB8PSBNQVBfRVhFQ1VUQUJMRV9GT1JfSklU
X1dJVEhfSklUX0NBR0U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzIHw9IE1BUF9F
WEVDVVRBQkxFX0ZPUl9KSVQ7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaml0Q2Fn
ZUVuYWJsZWQpOwogI2VuZGlmCiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL09TQWxs
b2NhdG9yV2luLmNwcAppbmRleCA5ZDZjMGFhNzQxMTM2Y2M4YTg0NmQwNDEyYTkyMWJkYTJhYzM4
YjQ3Li42ZDUyYzY2MmRmMDZmOTQ4MWE5MzM1YTdlZDJiNDUxNDM2NjQ2NGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi93aW4vT1NBbGxvY2F0b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3dpbi9PU0FsbG9jYXRvcldpbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGlu
ZSBEV09SRCBwcm90ZWN0aW9uKGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKICAgICAg
ICAgKHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKIH0KIAotdm9p
ZCogT1NBbGxvY2F0b3I6OnJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QgYnl0ZXMsIFVzYWdlLCBi
b29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUsIGJvb2wpCit2b2lkKiBPU0FsbG9jYXRvcjo6
cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemVfdCBieXRlcywgVXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJv
b2wgZXhlY3V0YWJsZSwgYm9vbCwgYm9vbCkKIHsKICAgICB2b2lkKiByZXN1bHQgPSBWaXJ0dWFs
QWxsb2MobnVsbHB0ciwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBl
eGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQqIE9T
QWxsb2NhdG9yOjpyZXNlcnZlVW5jb21taXR0ZWQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3
cml0YWJsZSwgYm9vbCBlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0
b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlLCBib29sKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmVBbmRDb21t
aXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlLCBi
b29sLCBib29sKQogewogICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYyhudWxscHRyLCBi
eXRlcywgTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBleGVj
dXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>