<?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>214737</bug_id>
          
          <creation_ts>2020-07-24 08:34:26 -0700</creation_ts>
          <short_desc>for..of intrinsics implementation for 32bits</short_desc>
          <delta_ts>2020-07-30 11:45:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214963</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Paulo Matos">pmatos</reporter>
          <assigned_to name="Paulo Matos">pmatos</assigned_to>
          <cc>aperez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1674650</commentid>
    <comment_count>0</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-24 08:34:26 -0700</bug_when>
    <thetext>for..of intrinsics implementation for 32bits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674653</commentid>
    <comment_count>1</comment_count>
      <attachid>405145</attachid>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-24 08:41:06 -0700</bug_when>
    <thetext>Created attachment 405145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674682</commentid>
    <comment_count>2</comment_count>
      <attachid>405152</attachid>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-24 09:23:49 -0700</bug_when>
    <thetext>Created attachment 405152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674694</commentid>
    <comment_count>3</comment_count>
      <attachid>405156</attachid>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-24 09:30:58 -0700</bug_when>
    <thetext>Created attachment 405156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675163</commentid>
    <comment_count>4</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-26 23:13:15 -0700</bug_when>
    <thetext>There are some mips failures due to a broken implementation of or8 for mips. I am working on a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675164</commentid>
    <comment_count>5</comment_count>
      <attachid>405260</attachid>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-26 23:15:23 -0700</bug_when>
    <thetext>Created attachment 405260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675176</commentid>
    <comment_count>6</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-27 01:21:09 -0700</bug_when>
    <thetext>Seems ready for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675195</commentid>
    <comment_count>7</comment_count>
      <attachid>405260</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-27 03:35:10 -0700</bug_when>
    <thetext>Comment on attachment 405260
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:496
&gt; +    

The MIPS parts of the patch LGTM 👍️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675219</commentid>
    <comment_count>8</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-27 06:25:01 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #7)
&gt; Comment on attachment 405260 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405260&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:496
&gt; &gt; +    
&gt; 
&gt; The MIPS parts of the patch LGTM 👍️

Thanks taking a look!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675220</commentid>
    <comment_count>9</comment_count>
      <attachid>405260</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-27 06:36:17 -0700</bug_when>
    <thetext>Comment on attachment 405260
Patch

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

I&apos;ve left some comments on current patch. Since I&apos;m co-author of it, I don&apos;t think it counts as a review.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Adds or8 instruction to ARMv7 and MIPS Macro Assembler.

I think we could add such comment bellow the file we changed.

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        (JSC::MacroAssemblerMIPS::store8):

For example, here we could have &quot;Adds or8 instruction to ARMv7 and MIPS Macro Assembler.&quot;

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +        (JSC::DFG::OSRExit::compileExit):

Ande here we could have:

```
Fixes DFG OSR Exit bug, where checkpoint temporary value is
incorrectly recreated for Baseline.
Refactors code in DFG OSR Exit to be easier to modify and
maintain by separating the switch cases for 32 and 64bits.
```

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:380
&gt; +        }

Could you confirm if we have `testmasm` covering this addition? Our bots aren&apos;t running `testmasm` yet, but we can potentially start running those tests and it would be nice to have `or8` covered there.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:941
&gt; +    }

ditto.

&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:480
&gt; +    JSValueRegs v(regT1, regT0);

nit: I think we should call it `nextRegs`

&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:509
&gt; +        emitJumpSlowCaseIfNotJSCell(vr, tagIterResultGPR);

The usage of `vr` here doesn&apos;t look quite right. However I don&apos;t see the necessity of having `vr` here, since the intention is to jump to slow case if `tagIterResultGPR` is not a JSCell tag, regardless `vr` being a constant or not (I don&apos;t even think that this is possible and that&apos;s probably why we are passing tests). We could follow 64-bits and add new `JIT::emitJumpSlowCaseIfNotJSCell(RegisterID tagReg)` function.

&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:531
&gt; +

nit: There is an extra \newline here

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1417
&gt; +macro performGetByIDHelper(opcodeStruct, modeMetadataName, valueProfileName, slowLabel, size, metadata, return)

This one is very close with `macro performGetByIDHelper` in LowLevelInterpeter64.asm. The major difference is on `loadPropertyAtVariableOffset`, `valueProfile` and `return`. Maybe we would like to merge them (here or in another patch). If we decide to that that later I think we should add a FIXME her.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675299</commentid>
    <comment_count>10</comment_count>
      <attachid>405291</attachid>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-27 10:45:27 -0700</bug_when>
    <thetext>Created attachment 405291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675301</commentid>
    <comment_count>11</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-27 10:46:22 -0700</bug_when>
    <thetext>Thanks Caio, the newest patch should meet all your concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675826</commentid>
    <comment_count>12</comment_count>
      <attachid>405291</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-28 14:58:11 -0700</bug_when>
    <thetext>Comment on attachment 405291
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:714
&gt; +    void store8(RegisterID src, const ArmAddress address)

We do not need to have `const`.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:908
&gt; +    void store8(RegisterID src, const Address address)

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:913
&gt; +    void store8(RegisterID src, const BaseIndex address)

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:938
&gt; +    void store8(const RegisterID src, const RegisterID addrreg)

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:633
&gt; +                    case Constant:
&gt; +                        sideState-&gt;tmps[i] = recovery.constant();
&gt; +                        break;

This is the same implementation. Put it outside of ifdef.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:639
&gt; +                    case UnboxedInt32InGPR:
&gt; +                    case Int32DisplacedInJSStack: {
&gt; +                        sideState-&gt;tmps[i] = jsNumber(static_cast&lt;int32_t&gt;(tmpScratch[i + tmpOffset]));
&gt; +                        break;
&gt; +                    }

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:644
&gt; +                    case InPair:
&gt; +                    case DisplacedInJSStack: {
&gt;                          sideState-&gt;tmps[i] = reinterpret_cast&lt;JSValue*&gt;(tmpScratch)[i + tmpOffset];
&gt; -#else
&gt; +                        break;

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:652
&gt; +                    case CellDisplacedInJSStack:
&gt; +                    case UnboxedCellInGPR: {
&gt;                          EncodedValueDescriptor* valueDescriptor = bitwise_cast&lt;EncodedValueDescriptor*&gt;(tmpScratch + i + tmpOffset);
&gt;                          sideState-&gt;tmps[i] = JSValue(JSValue::CellTag, valueDescriptor-&gt;asBits.payload);
&gt; -#endif
&gt;                          break;
&gt;                      }

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:654
&gt; +                    case BooleanDisplacedInJSStack:

Why?

&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:392
&gt; +    VirtualRegister vr = destinationFor(bytecode, m_bytecodeIndex.checkpoint()).virtualRegister();

Remove it.

&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:398
&gt; +    emitJumpSlowCaseIfNotJSCell(vr, regT1);

Let&apos;s use `emitJumpSlowCaseIfNotJSCell(regT1)`.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2773
&gt; +    bieq t1, UndefinedTag, .iteratorNextGeneric
&gt; +    btinz t0, .iteratorNextGeneric

I think this is not correct. We should have JSEmpty check here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675934</commentid>
    <comment_count>13</comment_count>
      <attachid>405446</attachid>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-29 02:31:48 -0700</bug_when>
    <thetext>Created attachment 405446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675936</commentid>
    <comment_count>14</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-29 02:36:47 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; Comment on attachment 405291 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405291&amp;action=review
&gt; 
&gt; r=me with comments
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:714
&gt; &gt; +    void store8(RegisterID src, const ArmAddress address)
&gt; 
&gt; We do not need to have `const`.
&gt; 

Removed.

&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:633
&gt; &gt; +                    case Constant:
&gt; &gt; +                        sideState-&gt;tmps[i] = recovery.constant();
&gt; &gt; +                        break;
&gt; 
&gt; This is the same implementation. Put it outside of ifdef.
&gt;

I simplified the ones I could but they were not all the same.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:654
&gt; &gt; +                    case BooleanDisplacedInJSStack:
&gt; 
&gt; Why?
&gt;

This can be loaded as a boolean. The problem is that we the tmp can only encode the payload, so sometimes we need to hardcode the tag for baseline, as it&apos;s done in the case of CellDisplacedInJSStack. But this is not necessary if it&apos;s a boolean.
 
&gt; &gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:392
&gt; &gt; +    VirtualRegister vr = destinationFor(bytecode, m_bytecodeIndex.checkpoint()).virtualRegister();
&gt; 
&gt; Remove it.
&gt;

Done.
 
&gt; &gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:398
&gt; &gt; +    emitJumpSlowCaseIfNotJSCell(vr, regT1);
&gt; 
&gt; Let&apos;s use `emitJumpSlowCaseIfNotJSCell(regT1)`.
&gt; 

Done.

&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2773
&gt; &gt; +    bieq t1, UndefinedTag, .iteratorNextGeneric
&gt; &gt; +    btinz t0, .iteratorNextGeneric
&gt; 
&gt; I think this is not correct. We should have JSEmpty check here.

That&apos;s what btinz is doing afaict. Done the same way in 64bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675938</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-29 03:32:31 -0700</bug_when>
    <thetext>Committed r265036: &lt;https://trac.webkit.org/changeset/265036&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405446.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675939</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-29 03:33:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/66265361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675944</commentid>
    <comment_count>17</comment_count>
      <attachid>405291</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-29 04:01:36 -0700</bug_when>
    <thetext>Comment on attachment 405291
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:654
&gt;&gt;&gt; +                    case BooleanDisplacedInJSStack:
&gt;&gt; 
&gt;&gt; Why?
&gt; 
&gt; This can be loaded as a boolean. The problem is that we the tmp can only encode the payload, so sometimes we need to hardcode the tag for baseline, as it&apos;s done in the case of CellDisplacedInJSStack. But this is not necessary if it&apos;s a boolean.

I don&apos;t understand what you mean by &quot;But this is not necessary if it&apos;s a boolean&quot;. Could you clarify? This case is very similar with `CellDisplacedInJSStack` and `Int32DisplacedInJSStack`. `BooleanDisplacedInJSStack` on 32-bits means that we can only trust the payload value stored in scratch buffer, while tag will probably contain garbage. Since we have proper payload and we know it is a Boolean, we then store it as `jsBoolean(static_cast&lt;bool&gt;(payload))`, and the `jsBoolean` will add the JSValue::BooleanTag for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675978</commentid>
    <comment_count>18</comment_count>
    <who name="Paulo Matos">pmatos</who>
    <bug_when>2020-07-29 05:53:59 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #17)
&gt; Comment on attachment 405291 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=405291&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:654
&gt; &gt;&gt;&gt; +                    case BooleanDisplacedInJSStack:
&gt; &gt;&gt; 
&gt; &gt;&gt; Why?
&gt; &gt; 
&gt; &gt; This can be loaded as a boolean. The problem is that we the tmp can only encode the payload, so sometimes we need to hardcode the tag for baseline, as it&apos;s done in the case of CellDisplacedInJSStack. But this is not necessary if it&apos;s a boolean.
&gt; 
&gt; I don&apos;t understand what you mean by &quot;But this is not necessary if it&apos;s a
&gt; boolean&quot;. Could you clarify? This case is very similar with
&gt; `CellDisplacedInJSStack` and `Int32DisplacedInJSStack`.
&gt; `BooleanDisplacedInJSStack` on 32-bits means that we can only trust the
&gt; payload value stored in scratch buffer, while tag will probably contain
&gt; garbage. Since we have proper payload and we know it is a Boolean, we then
&gt; store it as `jsBoolean(static_cast&lt;bool&gt;(payload))`, and the `jsBoolean`
&gt; will add the JSValue::BooleanTag for us.

I miscommunicated here. Your clarification is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675985</commentid>
    <comment_count>19</comment_count>
      <attachid>405291</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-07-29 06:30:02 -0700</bug_when>
    <thetext>Comment on attachment 405291
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2773
&gt;&gt;&gt; +    btinz t0, .iteratorNextGeneric
&gt;&gt; 
&gt;&gt; I think this is not correct. We should have JSEmpty check here.
&gt; 
&gt; That&apos;s what btinz is doing afaict. Done the same way in 64bits.

I think Yusuke is right here. The `EmptyValueTag` is 0xfffffffa, while `JSValue::ValueEmpty` in 64-bits is 0x0. The 64-bit versions checks `btqnz t0`, which makes this branch to `.iteratorNextGeneric` if `m_next != ValueEmpty`. Every other case will fall through `.iteratorNextGeneric`. Checking for UndefinedTag means that we are never executing `iterator_next_try_fast*` path on 32-bits and always going through `.iteratorNextGeneric`, making this operation slower than necessary. We can verify it if we execute a microbenchmark that&apos;s using for-of in an ordinary Array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676136</commentid>
    <comment_count>20</comment_count>
      <attachid>405291</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-29 14:28:52 -0700</bug_when>
    <thetext>Comment on attachment 405291
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2773
&gt;&gt;&gt;&gt; +    btinz t0, .iteratorNextGeneric
&gt;&gt;&gt; 
&gt;&gt;&gt; I think this is not correct. We should have JSEmpty check here.
&gt;&gt; 
&gt;&gt; That&apos;s what btinz is doing afaict. Done the same way in 64bits.
&gt; 
&gt; I think Yusuke is right here. The `EmptyValueTag` is 0xfffffffa, while `JSValue::ValueEmpty` in 64-bits is 0x0. The 64-bit versions checks `btqnz t0`, which makes this branch to `.iteratorNextGeneric` if `m_next != ValueEmpty`. Every other case will fall through `.iteratorNextGeneric`. Checking for UndefinedTag means that we are never executing `iterator_next_try_fast*` path on 32-bits and always going through `.iteratorNextGeneric`, making this operation slower than necessary. We can verify it if we execute a microbenchmark that&apos;s using for-of in an ordinary Array.

Yes, JSEmpty representation is different in 64bit and 32bit. And this is not an empty check. We should check empty tag here.
Can you fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676471</commentid>
    <comment_count>21</comment_count>
      <attachid>405291</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-30 11:32:22 -0700</bug_when>
    <thetext>Comment on attachment 405291
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:392
&gt;&gt;&gt; +    VirtualRegister vr = destinationFor(bytecode, m_bytecodeIndex.checkpoint()).virtualRegister();
&gt;&gt; 
&gt;&gt; Remove it.
&gt; 
&gt; Done.

It seems that landed patch is not including this change, can you fix it?

&gt;&gt;&gt; Source/JavaScriptCore/jit/JITCall32_64.cpp:398
&gt;&gt;&gt; +    emitJumpSlowCaseIfNotJSCell(vr, regT1);
&gt;&gt; 
&gt;&gt; Let&apos;s use `emitJumpSlowCaseIfNotJSCell(regT1)`.
&gt; 
&gt; Done.

It seems that landed patch is not including this change, can you fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676477</commentid>
    <comment_count>22</comment_count>
      <attachid>405446</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-30 11:45:15 -0700</bug_when>
    <thetext>Comment on attachment 405446
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGOSRExit.cpp:654
&gt; +
&gt;                      case Constant:
&gt;                          sideState-&gt;tmps[i] = recovery.constant();
&gt;                          break;
&gt; -
&gt; +                        
&gt; +#if USE(JSVALUE64)
&gt;                      case UnboxedInt32InGPR:
&gt;                      case Int32DisplacedInJSStack: {
&gt;                          sideState-&gt;tmps[i] = jsNumber(static_cast&lt;int32_t&gt;(tmpScratch[i + tmpOffset]));
&gt;                          break;
&gt;                      }
&gt;  
&gt; -#if USE(JSVALUE32_64)
&gt; -                    case InPair:
&gt; -#endif
&gt; -                    case InGPR:
&gt;                      case BooleanDisplacedInJSStack:
&gt;                      case CellDisplacedInJSStack:
&gt; +                    case UnboxedCellInGPR:
&gt; +                    case InGPR:
&gt;                      case DisplacedInJSStack: {
&gt;                          sideState-&gt;tmps[i] = reinterpret_cast&lt;JSValue*&gt;(tmpScratch)[i + tmpOffset];
&gt;                          break;
&gt;                      }
&gt;  
&gt; -                    case UnboxedCellInGPR: {
&gt; -#if USE(JSVALUE64)
&gt; +                    case UnboxedBooleanInGPR: {
&gt; +                        sideState-&gt;tmps[i] = jsBoolean(static_cast&lt;bool&gt;(tmpScratch[i + tmpOffset]));
&gt; +                        break;
&gt; +                    }
&gt; +
&gt; +#else // USE(JSVALUE32_64)
&gt; +                    case UnboxedInt32InGPR:
&gt; +                    case Int32DisplacedInJSStack: {
&gt; +                        sideState-&gt;tmps[i] = jsNumber(static_cast&lt;int32_t&gt;(tmpScratch[i + tmpOffset]));
&gt; +                        break;
&gt; +                    }
&gt; +
&gt; +                    case InPair:
&gt; +                    case DisplacedInJSStack: {
&gt;                          sideState-&gt;tmps[i] = reinterpret_cast&lt;JSValue*&gt;(tmpScratch)[i + tmpOffset];
&gt; -#else
&gt; +                        break;
&gt; +                    }
&gt; +
&gt; +                    case CellDisplacedInJSStack:
&gt; +                    case UnboxedCellInGPR: {
&gt;                          EncodedValueDescriptor* valueDescriptor = bitwise_cast&lt;EncodedValueDescriptor*&gt;(tmpScratch + i + tmpOffset);
&gt;                          sideState-&gt;tmps[i] = JSValue(JSValue::CellTag, valueDescriptor-&gt;asBits.payload);
&gt; -#endif
&gt;                          break;
&gt;                      }
&gt;  
&gt; +                    case BooleanDisplacedInJSStack:
&gt;                      case UnboxedBooleanInGPR: {
&gt;                          sideState-&gt;tmps[i] = jsBoolean(static_cast&lt;bool&gt;(tmpScratch[i + tmpOffset]));
&gt;                          break;
&gt;                      }
&gt; +                        
&gt; +#endif // USE(JSVALUE64)

Actually, I think this change is not necessary because old implementation just worked. Can you revert this part?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405145</attachid>
            <date>2020-07-24 08:41:06 -0700</date>
            <delta_ts>2020-07-24 09:23:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214737-20200724174052.patch</filename>
            <type>text/plain</type>
            <size>36813</size>
            <attacher name="Paulo Matos">pmatos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmluZGV4IGM4ZjMzNTVhZjAwN2Zm
ZWJiNGQ2NDM3MTk2N2YzN2VkZWVkOThmYjYuLjNjMDM5YzBkOGEyNGU3MTgwODE4NzU2MGUzMzli
N2UwZTNlN2ExNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zNjIsOSArMzYyLDIyIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIubmVnKGRlc3QsIHNyYyk7CiAgICAgfQogCi0gICAgdm9pZCBvcjMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBvcjgoVHJ1c3RlZElt
bTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci5vcnIoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgYXJt
SW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1tKGltbS5tX3ZhbHVlKTsKKyAg
ICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBs
b2FkOChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhcm1J
bW0pOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGxvYWQ4
KGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbW92
ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3Jy
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgb3IxNihUcnVz
dGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKQEAgLTM4NCw3ICszOTcsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgb3IzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
b3JyKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
c3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CkBAIC02OTMsNyArNzExLDcg
QEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHN0b3JlOChSZWdpc3Rl
cklEIHNyYywgQXJtQWRkcmVzcyBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQg
c3JjLCBjb25zdCBBcm1BZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAoYWRkcmVz
cy50eXBlID09IEFybUFkZHJlc3M6Okhhc0luZGV4KQogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51LmluZGV4LCBhZGRyZXNzLnUuc2NhbGUp
OwpAQCAtODg3LDIzICs5MDUsMjMgQEAgcHVibGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQg
c3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNv
bnN0IEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlOChzcmMsIHNldHVwQXJt
QWRkcmVzcyhhZGRyZXNzKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNy
YywgY29uc3QgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTgoc3JjLCBz
ZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHN0b3JlOChS
ZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklE
IHNyYywgY29uc3Qgdm9pZCAqYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHN0b3JlOChzcmMs
IEFybUFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCkpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3Rv
cmU4KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQgKmFkZHJlc3MpCiAgICAgewogICAgICAg
ICBUcnVzdGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVlKSk7CiAg
ICAgICAgIG1vdmUoaW1tOCwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC05MTcsNiArOTM1LDExIEBA
IHB1YmxpYzoKICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAg
IH0KIAorICAgIHZvaWQgc3RvcmU4KGNvbnN0IFJlZ2lzdGVySUQgc3JjLCBjb25zdCBSZWdpc3Rl
cklEIGFkZHJyZWcpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBBcm1BZGRyZXNzKGFkZHJy
ZWcsIDApKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1
cEFybUFkZHJlc3MoYWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggMjRiMTk3Mzk5N2ZiMmQwNzliYWRk
NDc5M2YxZGZmNGVlMjY0MGE0MC4uMzU2MjZlMzNkOTk2MmQ4N2U0YThlOGU0NjdmNzE1NmI2MWQ1
Y2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyTUlQUy5oCkBAIC00NzUsNiArNDc1LDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIuc3VidShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmMpOwogICAgIH0KIAor
CisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
bG9hZDgoZGVzdC5tX3B0ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG9yMzIoaW1t
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmU4KGltbVRlbXBSZWdpc3Rlciwg
ZGVzdC5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1aW50cHRyX3QgYWRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9wdHIpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIgKyAweDgwKSA+PiA4KTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmxidShpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0
ZXIsIGFkciAmIDB4ZmYpOworICAgICAgICAgICAgb3IzMihpbW0sIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zYihpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkciAmIDB4ZmYpOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAog
ICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAg
ICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggODQ0MGQ5YjA2MWFhZDA5N2E3NTBjOWRmYTExZTc1YTRkODg4NjliMC4uMjE1
ZDZiN2UzY2EyOWFmZGJlYzBhODQ0MGEzNTc4YmI1OTAzMmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTQxODksNyArNDE4OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmlj
RW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4CiAKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSog
bm9kZSwgRXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9p
ZChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUq
IGZvckxvb3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCiB7Ci0gICAgaWYg
KCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JM
b29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkgeworICAgIGlmICghT3B0aW9u
czo6dXNlSXRlcmF0aW9uSW50cmluc2ljcygpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9k
ZS0+aXNGb3JBd2FpdCgpKSkgewogICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUs
IHN1YmplY3ROb2RlLCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmNwcAppbmRleCA2ODRhYmE0OGQxN2Y0MTliMzM4YTMzMzBiMTdiZTE5MzAzZjMyNTIyLi44
NTM5OGJkNzlmZjE0ZWRlNWZmZDc0NGQyZDJjODk5NGZiYTZhMDFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTYwMSw2ICs2MDEsOCBAQCB2b2lkIE9TUkV4
aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQm
IGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlY292ZXJ5ID0gdmFsdWVz
W2kgKyB0bXBPZmZzZXRdOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGRvIHdoYXQgdGhlIEZUTCBkb2VzIGFuZCBtYXRlcmlhbGl6ZSBhbGwgdGhlIEpTVmFsdWVzIGlu
dG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292
ZXJ5LnRlY2huaXF1ZSgpKSB7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAg
ICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50
bXBzW2ldID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNjExLDMxICs2MTMsNTEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotI2VuZGlm
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgICAgICAgICAgICAgIGNh
c2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRD
ZWxsSW5HUFI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPih0bXBTY3Jh
dGNoKVtpICsgdG1wT2Zmc2V0XTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2Vs
bEluR1BSOiB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBV
bmJveGVkQm9vbGVhbkluR1BSOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUt
PnRtcHNbaV0gPSBqc0Jvb2xlYW4oc3RhdGljX2Nhc3Q8Ym9vbD4odG1wU2NyYXRjaFtpICsgdG1w
T2Zmc2V0XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDb25zdGFudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1w
c1tpXSA9IHJlY292ZXJ5LmNvbnN0YW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAg
ICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90Pih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
IGNhc2UgSW5QYWlyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFj
azogewogICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRl
cnByZXRfY2FzdDxKU1ZhbHVlKj4odG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0jZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjogewogICAgICAgICAgICAgICAgICAg
ICAgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciogdmFsdWVEZXNjcmlwdG9yID0gYml0d2lzZV9j
YXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPih0bXBTY3JhdGNoICsgaSArIHRtcE9mZnNldCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBKU1ZhbHVlKEpT
VmFsdWU6OkNlbGxUYWcsIHZhbHVlRGVzY3JpcHRvci0+YXNCaXRzLnBheWxvYWQpOwotI2VuZGlm
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQog
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOiB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc0Jvb2xlYW4oc3RhdGljX2Nhc3Q8
Ym9vbD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IAorI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDogCiAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGQxNDBh
YWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0MzMuLjc4MjIyNGU2NGQ5M2EzNWRmNzZm
OGFhMDdjNzZiOTUxZWUxM2ZhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAKQEAgLTEsNCArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIE1l
dHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOSw2ICszMSw3
IEBACiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUg
IkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC0zOSw2
ICs0Miw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5
cGUuaCIKICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgorI2luY2x1ZGUgIlNsb3dQYXRo
Q2FsbC5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3JzLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC00OSw3ICs1
Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0
KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFN0b3JlKGJ5dGVjb2RlLm1fZHN0
LCByZWdUMSwgcmVnVDApOworICAgIGVtaXRTdG9yZShkZXN0aW5hdGlvbkZvcihieXRlY29kZSwg
bV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QxLCBy
ZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpAQCAtMTUyLDkgKzE1NiwxMCBAQCBzdGQ6OmVuYWJsZV9pZl90PAog
LCB2b2lkPgogSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxM
aW5rSW5mbyopCiB7CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7Ci0gICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwotICAgIGludCBy
ZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAg
aW50IGFyZ0NvdW50ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNo
ZWNrcG9pbnQpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0
YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAg
ICBpZiAoT3A6Om9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7
CiAgICAgICAgIGVtaXRMb2FkKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxG
cmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSwgcmVnVDAsIHJlZ1QxKTsKQEAg
LTI2OSw3ICsyNzQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogewogICAgIE9wY29kZUlE
IG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3A+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2Fs
bGVlOworICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBjYWxsZWVGb3IoYnl0ZWNvZGUsIG1f
Ynl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOwogCiAgICAgLyogQ2FsbGVyIGFsd2F5czoKICAg
ICAgICAgLSBVcGRhdGVzIGNhbGxGcmFtZVJlZ2lzdGVyIHRvIGNhbGxlZSBjYWxsRnJhbWUuCkBA
IC0zNjYsMjQgKzM3MSwyNjUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0
Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BM
QVRGT1JNKCk7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9y
T3Blbj4oKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAg
c3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0
dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93OworICAgICAgICBjYXNlIFdpZGUxNjog
cmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2OworICAgICAgICBjYXNlIFdpZGUz
MjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyOworICAgICAgICBkZWZhdWx0
OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKwor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZh
c3RGdW5jdGlvbik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBKdW1wIGZhc3RDYXNl
ID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisg
ICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CisKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdnIgPSBkZXN0aW5hdGlvbkZvcihi
eXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCk7
CisgICAgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAgICAKKyAgICAvLyBjYWxsIHJlc3Vs
dCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QxICh0YWcpL3JlZ1QwIChwYXlsb2FkKQorICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dDsKKyAgICAKKyAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodnIsIHJlZ1QxKTsKKworICAgIEdQUlJlZyB0
YWdJdGVyYXRvckdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyBwYXlsb2FkSXRlcmF0b3JHUFIgPSBy
ZWdUMDsKKworICAgIEdQUlJlZyB0YWdOZXh0R1BSID0gdGFnSXRlcmF0b3JHUFI7CisgICAgR1BS
UmVnIHBheWxvYWROZXh0R1BSID0gcGF5bG9hZEl0ZXJhdG9yR1BSOworCisgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleCht
X2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAorICAgICAgICBKU1ZhbHVlUmVn
cyh0YWdJdGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKKyAgICAgICAgSlNWYWx1ZVJl
Z3ModGFnTmV4dEdQUiwgcGF5bG9hZE5leHRHUFIpLAorICAgICAgICBBY2Nlc3NUeXBlOjpHZXRC
eUlkKTsKKyAgICAKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwor
CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
aykpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCBKU1ZhbHVl
UmVncyh0YWdOZXh0R1BSLCBwYXlsb2FkTmV4dEdQUikpOworCisgICAgZmFzdENhc2UubGluayh0
aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBp
bGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2Fs
bExpbmtJbmZvSW5kZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1
bXAoKSk7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgR1BSUmVnIHRhZ0l0
ZXJhdG9yR1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHBheWxvYWRJdGVyYXRvckdQUiA9IHJlZ1Qw
OworCisgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNo
SWZOb3RDZWxsKHRhZ0l0ZXJhdG9yR1BSKSk7CisgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJ
Zk5vdE9iamVjdChwYXlsb2FkSXRlcmF0b3JHUFIpKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIG5l
eHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0OworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9
IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJh
dG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAgIAorICAgIExhYmVs
IGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIC8v
IG1ldGFkYXRhCisgICAgICAgIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgLy8gb3BlcmF0aW9u
CisgICAgICAgIG5leHRWUmVnLCAvLyByZXN1bHQKKyAgICAgICAgVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCAvLyBhcmcxCisgICAgICAgIGdlbi5zdHViSW5mbygp
LCAvLyBhcmcyCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBwYXlsb2FkSXRl
cmF0b3JHUFIpLCAvLyBhcmczCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKyAgICAKKyAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIGF1dG8g
ZG9uZSA9IGp1bXAoKTsKKworICAgIG5vdE9iamVjdC5saW5rKHRoaXMpOworICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworCisgICAgZG9uZS5saW5rKHRoaXMp
OwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uKQogewotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5
RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndp
ZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X25hcnJvdzsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0X3Ry
eV9mYXN0X3dpZGUxNjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9uZXh0
X3RyeV9mYXN0X3dpZGUzMjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBKU1ZhbHVlUmVncyB2KHJlZ1Qx
LCByZWdUMCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIHYp
OworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KHYpOworCisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0
aW9uKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFu
Y2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBnZW5l
cmljQ2FzZS5saW5rKHRoaXMpOworICAgIG9yOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRh
Lm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzKSk7CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0
ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgYWR2
YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoeyBkb25lLCB2YWx1
ZSB9IEpTT2JqZWN0KSBpbiByZWdUMSwgcmVnVDAKKworICAgIEdQUlJlZyB0YWdWYWx1ZUdQUiA9
IHJlZ1QxOworICAgIEdQUlJlZyBwYXlsb2FkVmFsdWVHUFIgPSByZWdUMDsKKyAgICAgICAgCisg
ICAgR1BSUmVnIHRhZ0RvbmVHUFIgPSByZWdUNTsKKyAgICBHUFJSZWcgcGF5bG9hZERvbmVHUFIg
PSByZWdUNDsKKworICAgIHsKKyAgICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdU
MzsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRJdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgICAg
IAorICAgICAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0
IGdldCBieSBpZCBiZWxvdy4KKyAgICAgICAgbW92ZShyZWdUMSwgdGFnSXRlclJlc3VsdEdQUik7
CisgICAgICAgIG1vdmUocmVnVDAsIHBheWxvYWRJdGVyUmVzdWx0R1BSKTsKKworICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdnIgPSBkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUlu
ZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbCh2ciwgdGFnSXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0
ZXJTZXQgcHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKTsKKyAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodGFnVmFsdWVHUFIpOworICAgICAgICBw
cmVzZXJ2ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVHUFIpOworICAgICAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29k
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAorICAgICAgICAgICAgcHJlc2VydmVk
UmVncywKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRh
bElkZW50aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUiksCisgICAg
ICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAg
ICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUobWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fZG9uZSwgSlNWYWx1ZVJlZ3ModGFnRG9uZUdQUiwgcGF5bG9hZERvbmVHUFIpKTsKKyAgICAg
ICAgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAg
R1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRJ
dGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDY7
CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1Q3OworICAgICAgICBjb25zdCBib29sIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlz
dCBpdGVyYXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3ModGFnRG9u
ZUdQUiwgcGF5bG9hZERvbmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVn
VDEsIHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKTsKKworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LAorICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLAorICAgICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQ
UiksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BS
KSwKKyAgICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
Ynl0ZWNvZGUubV92YWx1ZSwgSlNWYWx1ZVJlZ3ModGFnVmFsdWVHUFIsIHBheWxvYWRWYWx1ZUdQ
UikpOworCisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAgICB9CisKKyAgICBm
YXN0Q2FzZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jf
bmV4dChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
KQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRl
cik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlv
biwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZv
ckNoZWNrcG9pbnQoanVtcCgpKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+
YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9u
ZVZSZWcgPSBieXRlY29kZS5tX2RvbmU7CisgICAgICAgIEdQUlJlZyB0YWdWYWx1ZUdQUiA9IHJl
Z1QxOworICAgICAgICBHUFJSZWcgcGF5bG9hZFZhbHVlR1BSID0gcmVnVDA7CisgICAgICAgICAg
ICAKKyAgICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMzsKKyAgICAgICAgR1BS
UmVnIHBheWxvYWRJdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgICAgIAorICAgICAgICBHUFJS
ZWcgdGFnRG9uZUdQUiA9IHJlZ1Q1OworICAgICAgICBHUFJSZWcgcGF5bG9hZERvbmVHUFIgPSBy
ZWdUNDsKKworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1wTGlz
dCBub3RPYmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKHRh
Z0l0ZXJSZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9i
amVjdChwYXlsb2FkSXRlclJlc3VsdEdQUikpOworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CisgICAgICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAg
ICAgIAorICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoCisgICAgICAgICAgICBieXRlY29k
ZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIC8vIG1ldGFkYXRhCisgICAgICAgICAgICBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUsIC8vIG9wZXJhdGlvbgorICAgICAgICAgICAgZG9uZVZSZWcsIC8v
IHJlc3VsdAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCAvLyBhcmcxCisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKSwgLy8gYXJnMgorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRH
UFIpLCAvLyBhcmczCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOyAvLyBhcmc0CisKKyAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcihkb25lVlJlZywgSlNWYWx1ZVJlZ3ModGFnRG9uZUdQUiwgcGF5
bG9hZERvbmVHUFIpKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5t
X3ZhbHVlLCBKU1ZhbHVlUmVncyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BSKSk7CisgICAg
ICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5v
dE9iamVjdC5saW5rKHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93
SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpKTsKKyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIEdQUlJlZyB0YWdJdGVy
UmVzdWx0R1BSID0gcmVnVDE7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkSXRlclJlc3VsdEdQUiA9
IHJlZ1QwOworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgICAgIFZpcnR1
YWxSZWdpc3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOwor
ICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZElu
ZGV4KytdOworCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAg
ICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZSgKKyAgICAgICAgICAgIGJ5
dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgLy8gbWV0YWRhdGEKKyAgICAgICAgICAgIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgLy8gb3BlcmF0aW9uCisgICAgICAgICAgICB2YWx1ZVZS
ZWcsIC8vIHJlc3VsdAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCAvLyBhcmcxCisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKSwgLy8gYXJn
MgorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJS
ZXN1bHRHUFIpLCAvLyBhcmczCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOyAvLyBhcmc0CisKKyAg
ICAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBkOTQxMTJiODFh
OWM5MGY3ODM0MWE4MDVlZTMyMDQ1YTVjMGUwNjQ1Li40Y2ZkYjM2YWY4YjkxNTA3ZTc3MzExZDQx
YzU4ZWFlMDhhMmUyZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNDg4LDYgKzQ4OCw5IEBAIG1h
Y3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAgICAgZW5kKQogZW5kCiAKKyMgbG9h
ZFZhcmlhYmxlIGxvYWRzIHRoZSB2YWx1ZSBvZiBmaWVsZCBmaWVsZE5hbWUgdXNpbmcgbWFjcm8g
Z2V0CisjIGludG8gcmVnaXN0ZXIgdGFnUmVnIGFuZCBwYXlsb2FkUmVnCisjIENsb2JiZXJzOiBp
bmRleFJlZwogbWFjcm8gbG9hZFZhcmlhYmxlKGdldCwgZmllbGROYW1lLCBpbmRleFJlZywgdGFn
UmVnLCBwYXlsb2FkUmVnKQogICAgIGdldChmaWVsZE5hbWUsIGluZGV4UmVnKQogICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIGluZGV4UmVnLCA4XSwgdGFnUmVnCkBAIC02NTEsNyArNjU0LDcgQEAg
bWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2
YWx1ZUZpZWxkTmFtZSkKIGVuZAogCiBtYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBw
cm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKLSAgICBzdG9yZWkgdGFnLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0
YWRhdGFdCisgICAgc3RvcmVpIHRhZywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmls
ZU5hbWUlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KICAgICBzdG9yZWkgcGF5bG9h
ZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0cyArIFBh
eWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIApAQCAtMTQxMCw2ICsxNDEzLDUyIEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCisjIEFzc3VtdGlvbjog
VGhlIGJhc2Ugb2JqZWN0IGlzIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNv
ZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwg
c2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0MiwgdDEpCisgICAgbG9hZGIg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQx
CisgICAgICAgIAorLm9wR2V0QnlJZERlZmF1bHQ6CisgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBH
ZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAorICAgIGxvYWRpIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxICMgYXNzdW1lcyBiYXNlIG9iamVjdCBpbiB0MworICAg
IGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1
bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAor
ICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5k
ZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFi
bGVPZmZzZXQodDEsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
dmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BH
ZXRCeUlkUHJvdG9Mb2FkOgorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlBy
b3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW3QzXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKKyAgICBiaW5l
cSB0MywgdDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJv
dG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxl
T2Zmc2V0KHQxLCB0MywgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgcmV0dXJuKHQwLCB0MSkKKworLm9wR2V0
QnlJZEFycmF5TGVuZ3RoOgorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFy
cmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKKyAgICBtb3ZlIHQzLCB0MAorICAgIGFycmF5UHJv
ZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5hcnJheUxl
bmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAgIGJ0aXogdDAsIElzQXJyYXks
IHNsb3dMYWJlbAorICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFiZWwKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAorICAgIGxvYWRpIC1zaXplb2Yg
SW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0
MF0sIHQwCisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29k
ZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFnLCB0MCkKKyAgICByZXR1cm4o
SW50MzJUYWcsIHQwKQorICAgIAorLm9wR2V0QnlJZFVuc2V0OgorICAgIGxvYWRpIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBi
aW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZh
bHVlUHJvZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAgcmV0dXJuKFVuZGVmaW5l
ZFRhZywgMCkKKworZW5kCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdl
dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAg
IG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5ODIsNiArMjAzMSwzMCBAQCBtYWNybyBhcnJheVByb2Zp
bGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgogZW5kCiAKK21hY3JvIGNhbGxI
ZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFt
ZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKQorICAgIG1ldGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRDYWxsZWUodDApCisKKyAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JM
YXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVx
IHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBnZXRBcmd1bWVudFN0YXJ0KHQzKQorICAgIGxzaGlm
dGkgMywgdDMKKyAgICBuZWdpIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRo
ZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKSAgICAKKyAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBz
dG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10K
KyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMs
IHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykK
KyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2
YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBK
U0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2Rl
TmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVn
aXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKyAgICAgICAgCiBt
YWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJl
cGFyZUNhbGwsIHByb2xvZ3VlKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTk5MCwyNSArMjA2MywxOSBAQCBtYWNy
byBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFy
ZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZp
ZWxkTmFtZSwgZHN0KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCi0gICAgICAgIGdldChtX2Nh
bGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgotICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMs
IC5vcENhbGxTbG93KQotICAgICAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0gICAgICAg
IGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQotICAgICAgICBsc2hpZnRpIDMs
IHQzCi0gICAgICAgIG5lZ2kgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5z
IHRoZSBuZXcgdmFsdWUgb2YgY2ZyCi0gICAgICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9h
ZE9mZnNldFt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgdDIp
Ci0gICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZz
ZXRbY2ZyXQotICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
UGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09m
ZnNldFt0M10KLSAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9u
KG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0
Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIG1hY3JvIGdldENhbGxlZShkc3Qp
CisgICAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCisgICAgICAgIGVuZAogCi0gICAgLm9wQ2Fs
bFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVT
dHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0KQorICAgICAgICAgICAgZ2V0dShz
aXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBt
YWNybyBnZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBjYWxs
SGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9k
c3QsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0
QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjY0
MiwyNSArMjcwOSwxNTAgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBP
cEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICByZXR1cm4oSW50
MzJUYWcsIHQwKQogZW5kKQogCi1sbGludE9wKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JP
cGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBkZWZpbmVPU1JFeGl0UmV0dXJu
TGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKLSAgICBicmVhawotICAgIGlmIENfTE9PUCBv
ciBDX0xPT1BfV0lOCi0gICAgICAgICMgSW5zZXJ0IHN1cGVyZmxvdXMgY2FsbCByZXR1cm4gbGFi
ZWxzIGZvciBDbG9vcC4KLSAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBhMCAjIHN5bWJvbEl0
ZXJhdG9yCi0gICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAgIyBnZXQgbmV4dAorbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWFjcm8gZmFzdE5hcnJv
dygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cp
CisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChf
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdp
ZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRl
MzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMy
LCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQg
ZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4K
KyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9y
T3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljOgorICAg
IG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0QnlJZFN0YXJ0
CiAgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9zeW1i
b2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRp
bmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBtX3N0
YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGlu
Z1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKyAgICBjYWxs
SGVscGVyKG9wX2l0ZXJhdG9yX29wZW4sIF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9j
YWxsLCBPcEl0ZXJhdG9yT3BlbiwgbV9pdGVyYXRvclByb2ZpbGUsIG1faXRlcmF0b3IsIHByZXBh
cmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldEJ5SWRDaGVja3BvaW50LCBtZXRhZGF0YSwg
Z2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNs
dWRpbmdUaGlzQ291bnQpCisKKy5nZXRCeUlkU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVOZXh0QW5k
RGlzcGF0Y2godmFsdWVUYWcsIHZhbHVlUGF5bG9hZCkKKyAgICAgICAgbW92ZSB2YWx1ZVRhZywg
dDIKKyAgICAgICAgbW92ZSB2YWx1ZVBheWxvYWQsIHQzCisgICAgICAgIGdldChtX25leHQsIHQx
KQorICAgICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAg
IGVuZAorCisgICAgIyBXZSBuZWVkIHRvIGxvYWQgbV9pdGVyYXRvciBpbnRvIHQzIGJlY2F1c2Ug
dGhhdCdzIHdoZXJlCisgICAgIyBwZXJmb3JtR2V0QnlJREhlbHBlciBleHBlY3RzIHRoZSBiYXNl
IG9iamVjdCAgICAKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9yLCB0MywgdDAsIHQz
KQorICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93
CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRh
LCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBt
ZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0
TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Bl
bl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLWxsaW50T3Aob3BfaXRlcmF0b3Jf
bmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGRl
ZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9uZXh0LCBzaXplKQotICAgIGJyZWFr
Ci0gICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgIyBJbnNlcnQgc3VwZXJmbG91
cyBjYWxsIHJldHVybiBsYWJlbHMgZm9yIENsb29wLgotICAgICAgICAjIEZJWE1FOiBOb3Qgc3Vy
ZSB3aHkgdHdvIGFyZSBvbmx5IG5lZWRlZC4uLgotICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9u
IGEwICMgbmV4dAotICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGEwICMgZ2V0IGRvbmUKK2xs
aW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgICAgICAKKyAgICBs
b2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwLCB0MSwgdDApCisgICAgYmllcSB0MSwgVW5kZWZp
bmVkVGFnLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAgIGJ0aW56IHQwLCAuaXRlcmF0b3JOZXh0
R2VuZXJpYworCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChf
aXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdp
ZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRl
MTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0
aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0
TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBl
bmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJs
eSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRl
cmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgp
CisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2lu
dCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRD
YWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNy
byBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwg
T3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3Jv
IGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QK
KyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUg
Z29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9u
ZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQs
IG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6
ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVu
dEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5n
ZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFs
dWVUYWcsIGRvbmVWYWx1ZVBheWxvYWQpCisgICAgICAgIG1vdmUgZG9uZVZhbHVlVGFnLCB0MAor
ICAgICAgICBtb3ZlIGRvbmVWYWx1ZVBheWxvYWQsIHQxCisgICAgICAgIGdldChtX2RvbmUsIHQy
KQorICAgICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgICAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICAgICAgam1wIC5nZXRWYWx1ZVN0
YXJ0CiAgICAgZW5kCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MywgdDAsIHQz
KQorICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJmb3JtR2V0QnlJ
REhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxl
LCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVl
KQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRl
cmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3df
ZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2RvbmUs
IHQxLCB0MCwgdDEpCisKKyAgICAjIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUg
ZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAgICMgSW4gMzIgYml0cywgZm9s
bG93aW5nIHNsb3cgcGF0aCBpZiB0YWdzIGlzIG5vdCBudWxsLCB1bmRlZmluZWQsIGludDMyLCBi
b29sZWFuLgorICAgICMgVGhlc2Ugc2F0aXNmeSB0aGUgbWFzayB+MHgzLgorICAgICMgVGhlcmVm
b3JlIGlmIHRoZSBtYXNrIGlzIF9ub3RfIHNhdGlzZmllZCwgd2UgYnJhbmNoIHRvIHRoZSBzbG93
IGNhc2UuCisgICAgYnRpbnogdDAsIH4weDMsIC5nZXRWYWx1ZVNsb3cKKyAgICBidGl6IHQxLCAw
eDEsIC5ub3REb25lCisgICAgZGlzcGF0Y2goKQorCisubm90RG9uZToKKyAgICBtYWNybyBzdG9y
ZVZhbHVlQW5kRGlzcGF0Y2godlRhZywgdlBheWxvYWQpCisgICAgICAgIG1vdmUgdlRhZywgdDIK
KyAgICAgICAgbW92ZSB2UGF5bG9hZCwgdDMKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAg
ICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGln
bm1lbnQodDAsIDB4YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAg
ICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBt
YXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMs
IHQwLCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJl
c3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJl
Zm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1v
ZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRh
LCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0
Y2goKQogZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBP
cEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2JhbHMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2JhbHMuanMKaW5k
ZXggODE1YmY4NTk4ZjNmNTNlYjJiM2Y5NzEzZThlN2I1Y2Q2MzE3ZWYzMS4uN2Q3N2NmODhhYjYw
MmNlNGQzODdiNzFkY2NmYmYxZGFmMjBmOGUyZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
Zm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zv
ci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcwpAQCAtMSw0ICsxLDMgQEAKLS8vQCBza2lw
IGlmIFsiYXJtIiwgIm1pcHMiXS5pbmNsdWRlPygkYXJjaGl0ZWN0dXJlKQogbGV0IGNvdW50ID0g
MDsKIAogZnVuY3Rpb24gZm9vKGFycmF5KSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9m
b3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaW5saW5lZC1yZXR1cm4tbm9uLW9iamVjdC5qcyBi
L0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVy
bi1ub24tb2JqZWN0LmpzCmluZGV4IGM4YzJmNTBiNjljNzRiZjA4MGI3MWMzMzM4ZDE4OTcwZmQ3
Y2Y5NTYuLjIxODk3ZmJjZWIxZWQ1ZjU0N2QzODQ3NzYwZDVjYzMyMzEwZDBmOTQgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pbmxpbmVkLXJl
dHVybi1ub24tb2JqZWN0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1v
cGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzCkBAIC0xLDQgKzEsMyBAQAot
Ly9AIHNraXAgaWYgWyJhcm0iLCAibWlwcyJdLmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBsZXQg
c2hvdWxkVmVuZE51bGwgPSBmYWxzZTsKIGZ1bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICBp
ZiAoc2hvdWxkVmVuZE51bGwpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRl
cmF0b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Zm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWl0ZXJhdG9yLXNldC1sb2NhbC5qcwppbmRleCAz
MTA0YmY4ZmM1Nzg1MzMwNzE5MzNhOWEyZDc4ZTZjNDQ0MWY1OTlmLi5iYzNjZjdmMTFkNTM0YTQ4
NjNjMjMyYWZjYTI5NjIyNGM4MjBhZDIxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb3It
b2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pdGVyYXRvci1zZXQtbG9jYWwu
anMKQEAgLTEsNCArMSwzIEBACi0vL0Agc2tpcCBpZiBbImFybSIsICJtaXBzIl0uaW5jbHVkZT8o
JGFyY2hpdGVjdHVyZSkKIGxldCBzaG91bGRWZW5kTnVsbCA9IGZhbHNlOwogZnVuY3Rpb24gdmVu
ZEl0ZXJhdG9yKCkgewogICAgIGlmIChzaG91bGRWZW5kTnVsbCkKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLXJldHVybi1ub24tb2JqZWN0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKaW5k
ZXggYTQyNmYzOGM2MmIyNjQ0OGRmNDQ0YTY1YjNjZDZjOWE4ZTZiZDEzYi4uZTZmMzljYzM0M2Vi
OThhZWUzMDYyZGUxY2ZlYzRlYjFiNjQyOTY3YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
Zm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKQEAgLTEsNCAr
MSwzIEBACi0vL0Agc2tpcCBpZiBbImFybSIsICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVy
ZSkKIGZ1bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICByZXR1cm4gMTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405152</attachid>
            <date>2020-07-24 09:23:49 -0700</date>
            <delta_ts>2020-07-24 09:30:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214737-20200724182335.patch</filename>
            <type>text/plain</type>
            <size>39251</size>
            <attacher name="Paulo Matos">pmatos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NGNhOTdhMzhhMzQ4OTZiNjJiYzFkOGYzNjhhOTJiYWFjYTkwMWQ0Li4xMmVmOWE3OGYxMDU4NGNj
ZjI0MzUzYTlmOTRhN2UwYTg1ZmVmNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAyMC0wNy0yNCAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
KworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMyYml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFS
TXY3OjpvcjgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpvcjMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3RvcmU4KToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6b3I4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9yZTgpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24pOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb21waWxlRXhpdCk6
CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFB1dENhbGxSZXN1bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2l0ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0
ZXJhdG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKwogMjAyMC0wNy0yNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIERvIG5vdCB1
c2UgaGFyZGVuZWQgQXJyYXkgZm9yIEludGwgc3VwcG9ydGVkTG9jYWxlc09mCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCmlu
ZGV4IGM4ZjMzNTVhZjAwN2ZmZWJiNGQ2NDM3MTk2N2YzN2VkZWVkOThmYjYuLjNjMDM5YzBkOGEy
NGU3MTgwODE4NzU2MGUzMzliN2UwZTNlN2ExNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0zNjIsOSArMzYy
LDIyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnKGRlc3QsIHNyYyk7CiAgICAg
fQogCi0gICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
dm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgQVJN
VGh1bWJJbW1lZGlhdGUgYXJtSW1tID0gQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VFbmNvZGVkSW1t
KGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKGFybUltbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBhcm1JbW0pOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKQEAg
LTM4NCw3ICszOTcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgc3RvcmUxNihkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwor
ICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIub3JyKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CkBAIC02OTMsNyArNzExLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQXJtQWRkcmVzcyBhZGRyZXNzKQorICAgIHZvaWQg
c3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCBBcm1BZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBpZiAoYWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc0luZGV4KQogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51LmluZGV4
LCBhZGRyZXNzLnUuc2NhbGUpOwpAQCAtODg3LDIzICs5MDUsMjMgQEAgcHVibGljOgogICAgICAg
ICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAotICAgIHZvaWQg
c3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgo
UmVnaXN0ZXJJRCBzcmMsIGNvbnN0IEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0
b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB2b2lkIHN0
b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3QgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwogICAgIH0KICAgICAK
LSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lk
IHN0b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCAqYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAg
ICAgICAgIHN0b3JlOChzcmMsIEFybUFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCkpOwog
ICAgIH0KICAgICAKLSAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRy
ZXNzKQorICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQgKmFkZHJl
c3MpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+
KGltbS5tX3ZhbHVlKSk7CiAgICAgICAgIG1vdmUoaW1tOCwgZGF0YVRlbXBSZWdpc3Rlcik7CkBA
IC05MTcsNiArOTM1LDExIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU4KGNvbnN0IFJlZ2lzdGVySUQg
c3JjLCBjb25zdCBSZWdpc3RlcklEIGFkZHJyZWcpCisgICAgeworICAgICAgICBzdG9yZTgoc3Jj
LCBBcm1BZGRyZXNzKGFkZHJyZWcsIDApKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzdG9yZTE2
KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IHN0b3JlMTYoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggMjRi
MTk3Mzk5N2ZiMmQwNzliYWRkNDc5M2YxZGZmNGVlMjY0MGE0MC4uMmY4YjE1N2Y0MDRlZmQzN2I0
MzFkMDBlOTQwYzc0NjJhMjA1YmZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC00NzUsNiArNDc1LDI1IEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBzcmMpOwogICAgIH0KIAorCisgICAgdm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1
dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2Zp
eGVkV2lkdGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fZml4ZWRXaWR0
aCkgeworICAgICAgICAgICAgbG9hZDgoZGVzdC5tX3B0ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG9yMzIoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmU4
KGltbVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB1aW50cHRyX3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9w
dHIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIg
KyAweDgwKSA+PiA4KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxidShpbW1UZW1wUmVnaXN0
ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmYpOworICAgICAgICAgICAgb3IzMihpbW0s
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zYihpbW1UZW1wUmVn
aXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmYpOyAgICAgICAgICAgIAorICAgICAg
ICB9CisgICAgfQorICAgIAogICAgIHZvaWQgb3IxNihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4
ZWRXaWR0aCkKQEAgLTEzMTIsNyArMTMzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0K
IAotICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQorICAgIHZv
aWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgewogICAgICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggODQ0MGQ5YjA2MWFhZDA5N2E3NTBjOWRmYTExZTc1YTRkODg4NjliMC4uMjE1ZDZiN2Uz
Y2EyOWFmZGJlYzBhODQ0MGEzNTc4YmI1OTAzMmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQx
ODksNyArNDE4OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVy
YXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxv
b3BOb2RlLCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCiB7Ci0gICAgaWYgKCFPcHRp
b25zOjp1c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JMb29wTm9k
ZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkgeworICAgIGlmICghT3B0aW9uczo6dXNl
SXRlcmF0aW9uSW50cmluc2ljcygpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNG
b3JBd2FpdCgpKSkgewogICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1Ympl
Y3ROb2RlLCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAppbmRleCA2ODRhYmE0OGQxN2Y0MTliMzM4YTMzMzBiMTdiZTE5MzAzZjMyNTIyLi44NTM5OGJk
NzlmZjE0ZWRlNWZmZDc0NGQyZDJjODk5NGZiYTZhMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAKQEAgLTYwMSw2ICs2MDEsOCBAQCB2b2lkIE9TUkV4aXQ6OmNv
bXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQs
IGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlY292ZXJ5ID0gdmFsdWVzW2kgKyB0
bXBPZmZzZXRdOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHdo
YXQgdGhlIEZUTCBkb2VzIGFuZCBtYXRlcmlhbGl6ZSBhbGwgdGhlIEpTVmFsdWVzIGludG8gdGhl
IHNjcmF0Y2ggYnVmZmVyLgogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRl
Y2huaXF1ZSgpKSB7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0YW50OgogICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ld
ID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNjExLDMxICs2MTMsNTEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBl
cnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgotI2VuZGlmCi0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQm9v
bGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5H
UFI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaWRl
U3RhdGUtPnRtcHNbaV0gPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPih0bXBTY3JhdGNoKVtp
ICsgdG1wT2Zmc2V0XTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BS
OiB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVk
Qm9vbGVhbkluR1BSOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNb
aV0gPSBqc0Jvb2xlYW4oc3RhdGljX2Nhc3Q8Ym9vbD4odG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0
XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKworI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBDb25zdGFudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9
IHJlY292ZXJ5LmNvbnN0YW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
Pih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
SW5QYWlyOgorICAgICAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewog
ICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRf
Y2FzdDxKU1ZhbHVlKj4odG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0jZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjogewogICAgICAgICAgICAgICAgICAgICAgICAg
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciogdmFsdWVEZXNjcmlwdG9yID0gYml0d2lzZV9jYXN0PEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IqPih0bXBTY3JhdGNoICsgaSArIHRtcE9mZnNldCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBKU1ZhbHVlKEpTVmFsdWU6
OkNlbGxUYWcsIHZhbHVlRGVzY3JpcHRvci0+YXNCaXRzLnBheWxvYWQpOwotI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc0Jvb2xlYW4oc3RhdGljX2Nhc3Q8Ym9vbD4o
dG1wU2NyYXRjaFtpICsgdG1wT2Zmc2V0XSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorI2Vu
ZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogCiAg
ICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGQxNDBhYWM5YmUy
ZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0MzMuLjc4MjIyNGU2NGQ5M2EzNWRmNzZmOGFhMDdj
NzZiOTUxZWUxM2ZhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAKQEAgLTEsNCArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSwg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIE1ldHJvbG9n
aWNhbCBHcm91cCBCLlYuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOSw2ICszMSw3IEBACiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkNhY2hl
YWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCkBAIC0zOSw2ICs0Miw3
IEBACiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIK
ICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3Jz
LmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC00OSw3ICs1Myw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRDYWxsUmVzdWx0KGNvbnN0
IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFN0b3JlKGJ5dGVjb2RlLm1fZHN0LCByZWdU
MSwgcmVnVDApOworICAgIGVtaXRTdG9yZShkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCksIHJlZ1QxLCByZWdUMCk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpAQCAtMTUyLDkgKzE1NiwxMCBAQCBzdGQ6OmVuYWJsZV9pZl90PAogLCB2b2lk
PgogSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5m
byopCiB7CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNvZGVJbmRleC5jaGVja3Bv
aW50KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9j
ayk7Ci0gICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwotICAgIGludCByZWdpc3Rl
ck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJndik7CisgICAgaW50IGFy
Z0NvdW50ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNrcG9p
bnQpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNrT2Zm
c2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CiAKICAgICBpZiAo
T3A6Om9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAg
ICAgIGVtaXRMb2FkKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSwgcmVnVDAsIHJlZ1QxKTsKQEAgLTI2OSw3
ICsyNzQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogewogICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gT3A6Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8
T3A+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVjb2RlLm1fY2FsbGVlOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBjYWxsZWVGb3IoYnl0ZWNvZGUsIG1fYnl0ZWNv
ZGVJbmRleC5jaGVja3BvaW50KCkpOwogCiAgICAgLyogQ2FsbGVyIGFsd2F5czoKICAgICAgICAg
LSBVcGRhdGVzIGNhbGxGcmFtZVJlZ2lzdGVyIHRvIGNhbGxlZSBjYWxsRnJhbWUuCkBAIC0zNjYs
MjQgKzM3MSwyNjUgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAgICBlbWl0UHV0Q2FsbFJl
c3VsdChieXRlY29kZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29wZW4oY29u
c3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4o
KTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNo
IChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0
ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJu
IGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0
dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyOworICAgICAgICBkZWZhdWx0OiBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSkoKTsKKworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5j
dGlvbik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBKdW1wIGZhc3RDYXNlID0gYnJh
bmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSkpOworCisgICAgY29t
cGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5k
ZXgrKyk7CisKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdnIgPSBkZXN0aW5hdGlvbkZvcihieXRlY29k
ZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAg
YWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAgICAKKyAgICAvLyBjYWxsIHJlc3VsdCAoaXRl
cmF0b3IpIGlzIGluIHJlZ1QxICh0YWcpL3JlZ1QwIChwYXlsb2FkKQorICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dDsKKyAgICAKKyAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodnIsIHJlZ1QxKTsKKworICAgIEdQUlJlZyB0YWdJdGVy
YXRvckdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyBwYXlsb2FkSXRlcmF0b3JHUFIgPSByZWdUMDsK
KworICAgIEdQUlJlZyB0YWdOZXh0R1BSID0gdGFnSXRlcmF0b3JHUFI7CisgICAgR1BSUmVnIHBh
eWxvYWROZXh0R1BSID0gcGF5bG9hZEl0ZXJhdG9yR1BSOworCisgICAgSklUR2V0QnlJZEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVJbmRleCksCisgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVj
b2RlSW5kZXgub2Zmc2V0KCkpKSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1t
b3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAorICAgICAgICBKU1ZhbHVlUmVncyh0YWdJ
dGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKKyAgICAgICAgSlNWYWx1ZVJlZ3ModGFn
TmV4dEdQUiwgcGF5bG9hZE5leHRHUFIpLAorICAgICAgICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsK
KyAgICAKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0LCBKU1ZhbHVlUmVncyh0
YWdOZXh0R1BSLCBwYXlsb2FkTmV4dEdQUikpOworCisgICAgZmFzdENhc2UubGluayh0aGlzKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjplbWl0U2xv
d19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENh
bGxTbG93Q2FzZTxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJ
bmZvSW5kZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7
CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgR1BSUmVnIHRhZ0l0ZXJhdG9y
R1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHBheWxvYWRJdGVyYXRvckdQUiA9IHJlZ1QwOworCisg
ICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RD
ZWxsKHRhZ0l0ZXJhdG9yR1BSKSk7CisgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9i
amVjdChwYXlsb2FkSXRlcmF0b3JHUFIpKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVj
dGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIG5leHRWUmVn
ID0gYnl0ZWNvZGUubV9uZXh0OworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVudCA9IHZtKCku
cHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBn
ZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAgIAorICAgIExhYmVsIGNvbGRQ
YXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQ
cm9maWxlKAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayksIC8vIG1ldGFk
YXRhCisgICAgICAgIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgLy8gb3BlcmF0aW9uCisgICAg
ICAgIG5leHRWUmVnLCAvLyByZXN1bHQKKyAgICAgICAgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCAvLyBhcmcxCisgICAgICAgIGdlbi5zdHViSW5mbygpLCAvLyBh
cmcyCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JH
UFIpLCAvLyBhcmczCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKyAgICAKKyAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIGF1dG8gZG9uZSA9
IGp1bXAoKTsKKworICAgIG5vdE9iamVjdC5saW5rKHRoaXMpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworCisgICAgZG9uZS5saW5rKHRoaXMpOwogfQog
Ci12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKikKK3Zv
aWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uKQogewotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIGF1dG8gYnl0ZWNv
ZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7CisgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgYXV0byogdHJ5RmFzdEZ1
bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkp
IHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25h
cnJvdzsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X3dpZGUxNjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X3dpZGUzMjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBKU1ZhbHVlUmVncyB2KHJlZ1QxLCByZWdU
MCk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIHYpOworICAg
IEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVtcHR5KHYpOworCisgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihO
b3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBnZW5lcmljQ2Fz
ZS5saW5rKHRoaXMpOworICAgIG9yOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4o
SXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1faXRl
cmF0aW9uTWV0YWRhdGEuc2Vlbk1vZGVzKSk7CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9y
TmV4dD4oaW5zdHJ1Y3Rpb24sIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgYWR2YW5jZVRv
TmV4dENoZWNrcG9pbnQoKTsKKyAgICAvLyBjYWxsIHJlc3VsdCAoeyBkb25lLCB2YWx1ZSB9IEpT
T2JqZWN0KSBpbiByZWdUMSwgcmVnVDAKKworICAgIEdQUlJlZyB0YWdWYWx1ZUdQUiA9IHJlZ1Qx
OworICAgIEdQUlJlZyBwYXlsb2FkVmFsdWVHUFIgPSByZWdUMDsKKyAgICAgICAgCisgICAgR1BS
UmVnIHRhZ0RvbmVHUFIgPSByZWdUNTsKKyAgICBHUFJSZWcgcGF5bG9hZERvbmVHUFIgPSByZWdU
NDsKKworICAgIHsKKyAgICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMzsKKyAg
ICAgICAgR1BSUmVnIHBheWxvYWRJdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgICAgIAorICAg
ICAgICAvLyBpdGVyUmVzdWx0R1BSIHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBi
eSBpZCBiZWxvdy4KKyAgICAgICAgbW92ZShyZWdUMSwgdGFnSXRlclJlc3VsdEdQUik7CisgICAg
ICAgIG1vdmUocmVnVDAsIHBheWxvYWRJdGVyUmVzdWx0R1BSKTsKKworICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdnIgPSBkZXN0aW5hdGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNo
ZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbCh2ciwgdGFnSXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0ZXJTZXQg
cHJlc2VydmVkUmVncyA9IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsK
KyAgICAgICAgcHJlc2VydmVkUmVncy5hZGQodGFnVmFsdWVHUFIpOworICAgICAgICBwcmVzZXJ2
ZWRSZWdzLmFkZChwYXlsb2FkVmFsdWVHUFIpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLAorICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4
KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAorICAgICAgICAgICAgcHJlc2VydmVkUmVncywK
KyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50
aWZpZXIodm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCisgICAgICAgICAgICBKU1Zh
bHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCisgICAgICAg
ICAgICBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUiksCisgICAgICAgICAg
ICBBY2Nlc3NUeXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOworICAgICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBt
X2dldEJ5SWRzLmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
bWV0YWRhdGEpOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZG9u
ZSwgSlNWYWx1ZVJlZ3ModGFnRG9uZUdQUiwgcGF5bG9hZERvbmVHUFIpKTsKKyAgICAgICAgYWR2
YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAgICB9CisKKworICAgIHsKKyAgICAgICAgR1BSUmVn
IHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRJdGVyUmVz
dWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gxID0gcmVnVDY7CisgICAg
ICAgIEdQUlJlZyBzY3JhdGNoMiA9IHJlZ1Q3OworICAgICAgICBjb25zdCBib29sIHNob3VsZENo
ZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGZhbHNlOworICAgICAgICBKdW1wTGlzdCBpdGVy
YXRpb25Eb25lID0gYnJhbmNoSWZUcnV0aHkodm0oKSwgSlNWYWx1ZVJlZ3ModGFnRG9uZUdQUiwg
cGF5bG9hZERvbmVHUFIpLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGZwUmVnVDAsIGZwUmVnVDEsIHNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKTsKKworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAgICAgIG1f
Y29kZUJsb2NrLAorICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLAorICAg
ICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZz
ZXQoKSkpLAorICAgICAgICAgICAgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFs
SWRlbnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKSksCisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BSKSwKKyAg
ICAgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNv
ZGUubV92YWx1ZSwgSlNWYWx1ZVJlZ3ModGFnVmFsdWVHUFIsIHBheWxvYWRWYWx1ZUdQUikpOwor
CisgICAgICAgIGl0ZXJhdGlvbkRvbmUubGluayh0aGlzKTsKKyAgICB9CisKKyAgICBmYXN0Q2Fz
ZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIFVO
UkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7Cisg
ICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlvbiwgaXRl
ciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNr
cG9pbnQoanVtcCgpKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJ
dGVyYXRvck5leHQ+KCk7CisgICAgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZG9uZVZSZWcg
PSBieXRlY29kZS5tX2RvbmU7CisgICAgICAgIEdQUlJlZyB0YWdWYWx1ZUdQUiA9IHJlZ1QxOwor
ICAgICAgICBHUFJSZWcgcGF5bG9hZFZhbHVlR1BSID0gcmVnVDA7CisgICAgICAgICAgICAKKyAg
ICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMzsKKyAgICAgICAgR1BSUmVnIHBh
eWxvYWRJdGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgICAgIAorICAgICAgICBHUFJSZWcgdGFn
RG9uZUdQUiA9IHJlZ1Q1OworICAgICAgICBHUFJSZWcgcGF5bG9hZERvbmVHUFIgPSByZWdUNDsK
KworICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBKdW1wTGlzdCBub3RP
YmplY3Q7CisgICAgICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RDZWxsKHRhZ0l0ZXJS
ZXN1bHRHUFIpKTsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdE9iamVjdChw
YXlsb2FkSXRlclJlc3VsdEdQUikpOworCisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVu
dCA9IHZtKCkucHJvcGVydHlOYW1lcy0+ZG9uZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgICAgIAor
ICAgICAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNh
bGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoCisgICAgICAgICAgICBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayksIC8vIG1ldGFkYXRhCisgICAgICAgICAgICBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemUsIC8vIG9wZXJhdGlvbgorICAgICAgICAgICAgZG9uZVZSZWcsIC8vIHJlc3Vs
dAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkp
LCAvLyBhcmcxCisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKSwgLy8gYXJnMgorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLCAv
LyBhcmczCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOyAvLyBhcmc0CisKKyAgICAgICAgZ2VuLnJl
cG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihkb25lVlJlZywgSlNWYWx1ZVJlZ3ModGFnRG9uZUdQUiwgcGF5bG9hZERv
bmVHUFIpKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVl
LCBKU1ZhbHVlUmVncyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BSKSk7CisgICAgICAgIGVt
aXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAgICAgIG5vdE9iamVj
dC5saW5rKHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0
b3JSZXN1bHRJc05vdE9iamVjdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKKyAgICB9CisKKyAgICB7ICAgCisgICAgICAgIEdQUlJlZyB0YWdJdGVyUmVzdWx0
R1BSID0gcmVnVDE7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkSXRlclJlc3VsdEdQUiA9IHJlZ1Qw
OworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgICAgIFZpcnR1YWxSZWdp
c3RlciB2YWx1ZVZSZWcgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpOworICAgICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4Kytd
OworCisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZSgKKyAgICAgICAgICAgIGJ5dGVjb2Rl
Lm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgLy8gbWV0YWRhdGEKKyAgICAgICAgICAgIG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSwgLy8gb3BlcmF0aW9uCisgICAgICAgICAgICB2YWx1ZVZSZWcsIC8v
IHJlc3VsdAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCAvLyBhcmcxCisgICAgICAgICAgICBnZW4uc3R1YkluZm8oKSwgLy8gYXJnMgorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRH
UFIpLCAvLyBhcmczCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOyAvLyBhcmc0CisKKyAgICAgICAg
Z2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICB9CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBkOTQxMTJiODFhOWM5MGY3
ODM0MWE4MDVlZTMyMDQ1YTVjMGUwNjQ1Li40Y2ZkYjM2YWY4YjkxNTA3ZTc3MzExZDQxYzU4ZWFl
MDhhMmUyZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNDg4LDYgKzQ4OCw5IEBAIG1hY3JvIGNo
ZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAgICAgZW5kKQogZW5kCiAKKyMgbG9hZFZhcmlh
YmxlIGxvYWRzIHRoZSB2YWx1ZSBvZiBmaWVsZCBmaWVsZE5hbWUgdXNpbmcgbWFjcm8gZ2V0Cisj
IGludG8gcmVnaXN0ZXIgdGFnUmVnIGFuZCBwYXlsb2FkUmVnCisjIENsb2JiZXJzOiBpbmRleFJl
ZwogbWFjcm8gbG9hZFZhcmlhYmxlKGdldCwgZmllbGROYW1lLCBpbmRleFJlZywgdGFnUmVnLCBw
YXlsb2FkUmVnKQogICAgIGdldChmaWVsZE5hbWUsIGluZGV4UmVnKQogICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIGluZGV4UmVnLCA4XSwgdGFnUmVnCkBAIC02NTEsNyArNjU0LDcgQEAgbWFjcm8g
d3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwgZ2V0LCB2YWx1ZUZp
ZWxkTmFtZSkKIGVuZAogCiBtYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCBwcm9maWxl
TmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKLSAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRhdGFd
CisgICAgc3RvcmVpIHRhZywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUl
Lm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KICAgICBzdG9yZWkgcGF5bG9hZCwgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0cyArIFBheWxvYWRP
ZmZzZXRbbWV0YWRhdGFdCiBlbmQKIApAQCAtMTQxMCw2ICsxNDEzLDUyIEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCisjIEFzc3VtdGlvbjogVGhlIGJh
c2Ugb2JqZWN0IGlzIGluIHQzCittYWNybyBwZXJmb3JtR2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1
Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmlsZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwg
bWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0MiwgdDEpCisgICAgbG9hZGIgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUubW9kZVt0Ml0sIHQxCisgICAg
ICAgIAorLm9wR2V0QnlJZERlZmF1bHQ6CisgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlk
TW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9hZAorICAgIGxvYWRpIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0M10sIHQxICMgYXNzdW1lcyBiYXNlIG9iamVjdCBpbiB0MworICAgIGxvYWRp
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2Rl
LnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIGxv
YWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0
TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BHZXRCeUlk
UHJvdG9Mb2FkOgorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9h
ZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRh
dGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDMKKyAgICBiaW5lcSB0Mywg
dDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2Rl
TWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0
KHQxLCB0MywgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgcmV0dXJuKHQwLCB0MSkKKworLm9wR2V0QnlJZEFy
cmF5TGVuZ3RoOgorICAgIGJibmVxIHQxLCBjb25zdGV4cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVu
Z3RoLCAub3BHZXRCeUlkVW5zZXQKKyAgICBtb3ZlIHQzLCB0MAorICAgIGFycmF5UHJvZmlsZSgl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1v
ZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAgIGJ0aXogdDAsIElzQXJyYXksIHNsb3dM
YWJlbAorICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVNYXNrLCBzbG93TGFiZWwKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAorICAgIGxvYWRpIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQw
CisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFnLCB0MCkKKyAgICByZXR1cm4oSW50MzJU
YWcsIHQwKQorICAgIAorLm9wR2V0QnlJZFVuc2V0OgorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0M10sIHQxCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9k
ZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0
MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisgICAgcmV0dXJuKFVuZGVmaW5lZFRhZywg
MCkKKworZW5kCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFk
YXRhKHQ1LCB0MCkKQEAgLTE5ODIsNiArMjAzMSwzMCBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JD
YWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgogZW5kCiAKK21hY3JvIGNhbGxIZWxwZXIo
b3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0
VmlydHVhbFJlZ2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBn
ZXRDYWxsZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KQorICAgIG1ldGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRDYWxsZWUodDApCisKKyAgICBsb2FkcCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2Vl
bkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0
MiwgLm9wQ2FsbFNsb3cKKyAgICBnZXRBcmd1bWVudFN0YXJ0KHQzKQorICAgIGxzaGlmdGkgMywg
dDMKKyAgICBuZWdpIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcg
dmFsdWUgb2YgY2ZyCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHQyKSAgICAKKyAgICBzdG9yZWkgUEMs
IEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZWkg
dDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIHNwCisg
ICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICBj
YWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5
UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwg
c2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCitlbmQKKyAgICAgICAgCiBtYWNybyBj
b21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNh
bGwsIHByb2xvZ3VlKQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAg
ICAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTk5MCwyNSArMjA2MywxOSBAQCBtYWNybyBjb21t
b25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGws
IHByb2xvZ3VlKQogICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFt
ZSwgZHN0KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCi0gICAgICAgIGdldChtX2NhbGxlZSwg
dDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgotICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcENh
bGxTbG93KQotICAgICAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93Ci0gICAgICAgIGdldHUo
c2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQotICAgICAgICBsc2hpZnRpIDMsIHQzCi0g
ICAgICAgIG5lZ2kgdDMKLSAgICAgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBu
ZXcgdmFsdWUgb2YgY2ZyCi0gICAgICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAg
ICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2Zy
XQotICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9h
ZE9mZnNldFt0M10KLSAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0
M10KLSAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIs
IHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKG9wY29k
ZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAg
ICAgICAgIGdldChtX2NhbGxlZSwgdDApCisgICAgICAgIGVuZAogCi0gICAgLm9wQ2FsbFNsb3c6
Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCisgICAg
ICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBv
cGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAgICAgICBlbmQKKworICAgICAgICBtYWNybyBn
ZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0
LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBjYWxsSGVscGVy
KG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIHBy
ZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1l
bnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBlbmQpCiBlbmQKIApAQCAtMjY0MiwyNSAr
MjcwOSwxNTAgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJl
c3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKICAgICByZXR1cm4oSW50MzJUYWcs
IHQwKQogZW5kKQogCi1sbGludE9wKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBkZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwo
b3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKLSAgICBicmVhawotICAgIGlmIENfTE9PUCBvciBDX0xP
T1BfV0lOCi0gICAgICAgICMgSW5zZXJ0IHN1cGVyZmxvdXMgY2FsbCByZXR1cm4gbGFiZWxzIGZv
ciBDbG9vcC4KLSAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBhMCAjIHN5bWJvbEl0ZXJhdG9y
Ci0gICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAgIyBnZXQgbmV4dAorbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJhdG9yT3BlbiwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisg
ICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3cpCisgICAg
ZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0
b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigp
CisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzIpCisg
ICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNy
byAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhp
cyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBi
YmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yT3Blbkdl
bmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljOgorICAgIG1hY3Jv
IGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0QnlJZFN0YXJ0CiAgICAg
ZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9zeW1ib2xJdGVy
YXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlz
U3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9wSXRlcmF0b3JPcGVuLCBtX3N0YWNrT2Zm
c2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXND
b3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0CisgICAgZW5kCisKKyAgICBjYWxsSGVscGVy
KG9wX2l0ZXJhdG9yX29wZW4sIF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9jYWxsLCBP
cEl0ZXJhdG9yT3BlbiwgbV9pdGVyYXRvclByb2ZpbGUsIG1faXRlcmF0b3IsIHByZXBhcmVGb3JS
ZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldEJ5SWRDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2Fs
bGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdU
aGlzQ291bnQpCisKKy5nZXRCeUlkU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVOZXh0QW5kRGlzcGF0
Y2godmFsdWVUYWcsIHZhbHVlUGF5bG9hZCkKKyAgICAgICAgbW92ZSB2YWx1ZVRhZywgdDIKKyAg
ICAgICAgbW92ZSB2YWx1ZVBheWxvYWQsIHQzCisgICAgICAgIGdldChtX25leHQsIHQxKQorICAg
ICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAor
CisgICAgIyBXZSBuZWVkIHRvIGxvYWQgbV9pdGVyYXRvciBpbnRvIHQzIGJlY2F1c2UgdGhhdCdz
IHdoZXJlCisgICAgIyBwZXJmb3JtR2V0QnlJREhlbHBlciBleHBlY3RzIHRoZSBiYXNlIG9iamVj
dCAgICAKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0ZXJhdG9yLCB0MywgdDAsIHQzKQorICAg
IGJpbmVxIHQwLCBDZWxsVGFnLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93CisgICAg
cGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9wZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25l
eHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dldE5leHRTbG93LCBzaXplLCBtZXRhZGF0
YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNs
b3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRf
bmV4dCkKKyAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLWxsaW50T3Aob3BfaXRlcmF0b3JfbmV4dCwg
T3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGRlZmluZU9T
UkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9uZXh0LCBzaXplKQotICAgIGJyZWFrCi0gICAg
aWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgIyBJbnNlcnQgc3VwZXJmbG91cyBjYWxs
IHJldHVybiBsYWJlbHMgZm9yIENsb29wLgotICAgICAgICAjIEZJWE1FOiBOb3Qgc3VyZSB3aHkg
dHdvIGFyZSBvbmx5IG5lZWRlZC4uLgotICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGEwICMg
bmV4dAotICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGEwICMgZ2V0IGRvbmUKK2xsaW50T3BX
aXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgICAgICAKKyAgICBsb2FkVmFy
aWFibGUoZ2V0LCBtX25leHQsIHQwLCB0MSwgdDApCisgICAgYmllcSB0MSwgVW5kZWZpbmVkVGFn
LCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAgIGJ0aW56IHQwLCAuaXRlcmF0b3JOZXh0R2VuZXJp
YworCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0
b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigp
CisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMTYpCisg
ICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRl
cmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93
LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisK
KyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5j
ZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9u
TW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5p
dGVyYXRvck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXREb25lQ2hlY2twb2ludCgpCisg
ICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUo
ZHN0KQorICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRB
cmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVy
YXRvck5leHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFy
Z3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBl
bmQKKworICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBhIHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcg
dG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhlbHBlcihvcF9pdGVyYXRvcl9uZXh0LCBf
bGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2FsbCwgT3BJdGVyYXRvck5leHQsIG1fbmV4
dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290
b0dldERvbmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1
ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXREb25l
U3RhcnQ6CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZShkb25lVmFsdWVUYWcs
IGRvbmVWYWx1ZVBheWxvYWQpCisgICAgICAgIG1vdmUgZG9uZVZhbHVlVGFnLCB0MAorICAgICAg
ICBtb3ZlIGRvbmVWYWx1ZVBheWxvYWQsIHQxCisgICAgICAgIGdldChtX2RvbmUsIHQyKQorICAg
ICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgICAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICAgICAgam1wIC5nZXRWYWx1ZVN0YXJ0CiAg
ICAgZW5kCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MywgdDAsIHQzKQorICAg
IGJpbmVxIHQwLCBDZWxsVGFnLCAuZ2V0RG9uZVNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBl
cihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFkYXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0
RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKQorCisu
Z2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3Jf
bmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2RvbmUsIHQxLCB0
MCwgdDEpCisKKyAgICAjIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZh
bHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAgICMgSW4gMzIgYml0cywgZm9sbG93aW5n
IHNsb3cgcGF0aCBpZiB0YWdzIGlzIG5vdCBudWxsLCB1bmRlZmluZWQsIGludDMyLCBib29sZWFu
LgorICAgICMgVGhlc2Ugc2F0aXNmeSB0aGUgbWFzayB+MHgzLgorICAgICMgVGhlcmVmb3JlIGlm
IHRoZSBtYXNrIGlzIF9ub3RfIHNhdGlzZmllZCwgd2UgYnJhbmNoIHRvIHRoZSBzbG93IGNhc2Uu
CisgICAgYnRpbnogdDAsIH4weDMsIC5nZXRWYWx1ZVNsb3cKKyAgICBidGl6IHQxLCAweDEsIC5u
b3REb25lCisgICAgZGlzcGF0Y2goKQorCisubm90RG9uZToKKyAgICBtYWNybyBzdG9yZVZhbHVl
QW5kRGlzcGF0Y2godlRhZywgdlBheWxvYWQpCisgICAgICAgIG1vdmUgdlRhZywgdDIKKyAgICAg
ICAgbW92ZSB2UGF5bG9hZCwgdDMKKyAgICAgICAgZ2V0KG1fdmFsdWUsIHQxKQorICAgICAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
dDAsIDB4YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNoKCkKKyAgICBlbmQKKworICAgICMgUmVs
b2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhlIGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2
ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxlKGdldCwgbV92YWx1ZSwgdDMsIHQwLCB0
MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBp
cyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUgdGhyb3duIGFuIGVycm9yIGJlZm9yZS4K
KyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRh
ZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9y
ZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfdmFsdWUpCisgICAgZGlzcGF0Y2goKQog
ZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0X2ludGVybmFsX2ZpZWxkLCBPcEdldElu
dGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc0OTA1NGFh
NzE0ODdkN2I2ZWRhMmI5YjQzZWU3ZjQxMDA3M2YyYzAuLmUzNjg4ZGIzY2M1M2Y0ZmUyZjNiOGE0
MDg1NDgxNjY5NmU1NmM0MTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDctMjQgIFBhdWxvIE1hdG9z
ICA8cG1hdG9zQGlnYWxpYS5jb20+CisKKyAgICAgICAgZm9yLi5vZiBpbnRyaW5zaWNzIGltcGxl
bWVudGF0aW9uIGZvciAzMmJpdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDczNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qczoK
KyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0
dXJuLW5vbi1vYmplY3QuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVu
LW9zci1hdC1pdGVyYXRvci1zZXQtbG9jYWwuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1p
dGVyYXRvci1vcGVuLXJldHVybi1ub24tb2JqZWN0LmpzOgorCiAyMDIwLTA3LTI0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRG8gbm90IHVzZSBo
YXJkZW5lZCBBcnJheSBmb3IgSW50bCBzdXBwb3J0ZWRMb2NhbGVzT2YKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcyBiL0pTVGVzdHMv
c3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcwppbmRleCA4MTViZjg1OThm
M2Y1M2ViMmIzZjk3MTNlOGU3YjVjZDYzMTdlZjMxLi43ZDc3Y2Y4OGFiNjAyY2U0ZDM4N2I3MWRj
Y2ZiZjFkYWYyMGY4ZTJlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXkt
ZGlmZmVyZW50LWdsb2JhbHMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRp
ZmZlcmVudC1nbG9iYWxzLmpzCkBAIC0xLDQgKzEsMyBAQAotLy9AIHNraXAgaWYgWyJhcm0iLCAi
bWlwcyJdLmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBsZXQgY291bnQgPSAwOwogCiBmdW5jdGlv
biBmb28oYXJyYXkpIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRv
ci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJl
c3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0dXJuLW5vbi1vYmplY3Qu
anMKaW5kZXggYzhjMmY1MGI2OWM3NGJmMDgwYjcxYzMzMzhkMTg5NzBmZDdjZjk1Ni4uMjE4OTdm
YmNlYjFlZDVmNTQ3ZDM4NDc3NjBkNWNjMzIzMTBkMGY5NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0dXJuLW5vbi1vYmpl
Y3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlu
bGluZWQtcmV0dXJuLW5vbi1vYmplY3QuanMKQEAgLTEsNCArMSwzIEBACi0vL0Agc2tpcCBpZiBb
ImFybSIsICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVyZSkKIGxldCBzaG91bGRWZW5kTnVs
bCA9IGZhbHNlOwogZnVuY3Rpb24gdmVuZEl0ZXJhdG9yKCkgewogICAgIGlmIChzaG91bGRWZW5k
TnVsbCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9z
ci1hdC1pdGVyYXRvci1zZXQtbG9jYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0
b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzCmluZGV4IDMxMDRiZjhmYzU3ODUz
MzA3MTkzM2E5YTJkNzhlNmM0NDQxZjU5OWYuLmJjM2NmN2YxMWQ1MzRhNDg2M2MyMzJhZmNhMjk2
MjI0YzgyMGFkMjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1v
cGVuLW9zci1hdC1pdGVyYXRvci1zZXQtbG9jYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9y
LW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWl0ZXJhdG9yLXNldC1sb2NhbC5qcwpAQCAtMSw0ICsx
LDMgQEAKLS8vQCBza2lwIGlmIFsiYXJtIiwgIm1pcHMiXS5pbmNsdWRlPygkYXJjaGl0ZWN0dXJl
KQogbGV0IHNob3VsZFZlbmROdWxsID0gZmFsc2U7CiBmdW5jdGlvbiB2ZW5kSXRlcmF0b3IoKSB7
CiAgICAgaWYgKHNob3VsZFZlbmROdWxsKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9y
LW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9m
b3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5qcwppbmRleCBhNDI2ZjM4YzYy
YjI2NDQ4ZGY0NDRhNjViM2NkNmM5YThlNmJkMTNiLi5lNmYzOWNjMzQzZWI5OGFlZTMwNjJkZTFj
ZmVjNGViMWI2NDI5NjdjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0
b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2Yt
aXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5qcwpAQCAtMSw0ICsxLDMgQEAKLS8vQCBz
a2lwIGlmIFsiYXJtIiwgIm1pcHMiXS5pbmNsdWRlPygkYXJjaGl0ZWN0dXJlKQogZnVuY3Rpb24g
dmVuZEl0ZXJhdG9yKCkgewogICAgIHJldHVybiAxOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405156</attachid>
            <date>2020-07-24 09:30:58 -0700</date>
            <delta_ts>2020-07-26 23:15:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214737-20200724183044.patch</filename>
            <type>text/plain</type>
            <size>39885</size>
            <attacher name="Paulo Matos">pmatos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NGNhOTdhMzhhMzQ4OTZiNjJiYzFkOGYzNjhhOTJiYWFjYTkwMWQ0Li4xZTkxYjY3OGNmYTQ5MmQy
MTI1MjBlNTAyNTc5ZmQzYjA4MGM2ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wNy0yNCAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
KworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMyYml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSm9pbnQgd29y
ayB3aXRoIENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorCisgICAgICAgIEltcGxl
bWVudHMgZm9yLi5vZiBpbnRyaW5zaWNzIGZvciAzMmJpdHMuCisgICAgICAgIEFkZHMgb3I4IGlu
c3RydWN0aW9uIHRvIEFSTXY3IGFuZCBNSVBTIE1hY3JvIEFzc2VtYmxlci4KKyAgICAgICAgQWRk
cyBpbnRyaW5zaWMgb3BlcmF0aW9ucyB0byBMTEludCBhbmQgQmFzZWxpbmUgZm9yIDMyYml0cy4K
KyAgICAgICAgRml4ZXMgREZHIE9TUiBFeGl0IGJ1Zywgd2hlcmUgY2hlY2twb2ludCB0ZW1wb3Jh
cnkgdmFsdWUgaXMKKyAgICAgICAgaW5jb3JyZWN0bHkgcmVjcmVhdGVkIGZvciBCYXNlbGluZS4K
KyAgICAgICAgUmVmYWN0b3JzIGNvZGUgaW4gREZHIE9TUiBFeGl0IHRvIGJlIGVhc2llciB0byBt
b2RpZnkgYW5kCisgICAgICAgIG1haW50YWluIGJ5IHNlcGFyYXRpbmcgdGhlIHN3aXRjaCBjYXNl
cyBmb3IgMzIgYW5kIDY0Yml0cy4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpvcjgpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlOCk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBqaXQv
SklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q2FsbFJlc3VsdCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtOgorCiAyMDIwLTA3LTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRG8gbm90IHVzZSBoYXJkZW5lZCBBcnJh
eSBmb3IgSW50bCBzdXBwb3J0ZWRMb2NhbGVzT2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggYzhmMzM1NWFmMDA3
ZmZlYmI0ZDY0MzcxOTY3ZjM3ZWRlZWQ5OGZiNi4uM2MwMzljMGQ4YTI0ZTcxODA4MTg3NTYwZTMz
OWI3ZTBlM2U3YTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKQEAgLTM2Miw5ICszNjIsMjIgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5uZWcoZGVzdCwgc3JjKTsKICAgICB9CiAKLSAgICB2b2lkIG9y
MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIG9yOChUcnVzdGVk
SW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBh
cm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwor
ICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IGxvYWQ4KGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIub3JyKGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFy
bUltbSk7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1Q
dHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9h
ZDgoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBt
b3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5v
cnIoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBvcjE2KFRy
dXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQpAQCAtMzg0LDcgKzM5NywxMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBzdG9yZTE2KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBvcjMyKFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5vcnIoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJ
RCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGRlc3QubV9wdHIpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTY5Myw3ICs3MTEs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgc3RvcmU4KFJlZ2lz
dGVySUQgc3JjLCBBcm1BZGRyZXNzIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIGNvbnN0IEFybUFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChhZGRy
ZXNzLnR5cGUgPT0gQXJtQWRkcmVzczo6SGFzSW5kZXgpCiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zdHJiKHNyYywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLnUuaW5kZXgsIGFkZHJlc3MudS5zY2Fs
ZSk7CkBAIC04ODcsMjMgKzkwNSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRl
bXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywg
Y29uc3QgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU4KHNyYywgc2V0dXBB
cm1BZGRyZXNzKGFkZHJlc3MpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0
ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQg
c3JjLCBjb25zdCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlOChzcmMs
IHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc3RvcmU4
KFJlZ2lzdGVySUQgc3JjLCB2b2lkKiBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVy
SUQgc3JjLCBjb25zdCB2b2lkICphZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmU4KHNy
YywgQXJtQWRkcmVzcyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKSk7CiAgICAgfQogICAgIAotICAg
IHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBz
dG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgY29uc3Qgdm9pZCAqYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIFRydXN0ZWRJbW0zMiBpbW04KHN0YXRpY19jYXN0PGludDhfdD4oaW1tLm1fdmFsdWUpKTsK
ICAgICAgICAgbW92ZShpbW04LCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTkxNyw2ICs5MzUsMTEg
QEAgcHVibGljOgogICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAg
ICAgfQogCisgICAgdm9pZCBzdG9yZTgoY29uc3QgUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IFJlZ2lz
dGVySUQgYWRkcnJlZykKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIEFybUFkZHJlc3MoYWRk
cnJlZywgMCkpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMs
IEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmUxNihzcmMsIHNl
dHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCAyNGIxOTczOTk3ZmIyZDA3OWJh
ZGQ0NzkzZjFkZmY0ZWUyNjQwYTQwLi4yZjhiMTU3ZjQwNGVmZDM3YjQzMWQwMGU5NDBjNzQ2MmEy
MDViZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTQ3NSw2ICs0NzUsMjUgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ1KGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIHNyYyk7CiAgICAgfQog
CisKKyAgICB2b2lkIG9yOChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9maXhlZFdpZHRoKSB7CisgICAgICAgICAg
ICBsb2FkOChkZXN0Lm1fcHRyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgb3IzMihp
bW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTgoaW1tVGVtcFJlZ2lzdGVy
LCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVpbnRwdHJfdCBh
ZHIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZGVzdC5tX3B0cik7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5sdWkoYWRkclRlbXBSZWdpc3RlciwgKGFkciArIDB4ODApID4+IDgpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubGJ1KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdp
c3RlciwgYWRyICYgMHhmZik7CisgICAgICAgICAgICBvcjMyKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNiKGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBS
ZWdpc3RlciwgYWRyICYgMHhmZik7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAg
CiAgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMTMx
Miw3ICsxMzMxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzdG9y
ZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0
ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAobV9maXhl
ZFdpZHRoKSB7CiAgICAgICAgICAgICAvKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4NDQwZDliMDYx
YWFkMDk3YTc1MGM5ZGZhMTFlNzVhNGQ4ODg2OWIwLi4yMTVkNmI3ZTNjYTI5YWZkYmVjMGE4NDQw
YTM1NzhiYjU5MDMyYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDE4OSw3ICs0MTg5LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSogbm9kZSwgRXgKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVu
dW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCBFeHByZXNzaW9uTm9kZSog
c3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9yTG9vcE5vZGUsIFJlZ2lzdGVy
SUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKIHsKLSAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlv
bkludHJpbnNpY3MoKSB8fCBpczMyQml0KCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2Rl
LT5pc0ZvckF3YWl0KCkpKSB7CisgICAgaWYgKCFPcHRpb25zOjp1c2VJdGVyYXRpb25JbnRyaW5z
aWNzKCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkpKSB7CiAg
ICAgICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3ViamVjdE5vZGUsIGNhbGxCYWNr
LCBmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCmluZGV4IDY4NGFiYTQ4
ZDE3ZjQxOWIzMzhhMzMzMGIxN2JlMTkzMDNmMzI1MjIuLjg1Mzk4YmQ3OWZmMTRlZGU1ZmZkNzQ0
ZDJkMmM4OTk0ZmJhNmEwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
LmNwcApAQCAtNjAxLDYgKzYwMSw4IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAg
ICAgICAgICAgICAgYXV0byYgcmVjb3ZlcnkgPSB2YWx1ZXNbaSArIHRtcE9mZnNldF07CiAgICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gd2hhdCB0aGUgRlRMIGRvZXMg
YW5kIG1hdGVyaWFsaXplIGFsbCB0aGUgSlNWYWx1ZXMgaW50byB0aGUgc2NyYXRjaCBidWZmZXIu
CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKwor
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25z
dGFudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MTEsMzEgKzYxMyw1
MSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgaml0LCBWTSYgdm0s
IGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgfQogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBJblBhaXI6Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBJbkdQUjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5K
U1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJ
bkpTU3RhY2s6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6IHsKLSNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihz
dGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisjZWxzZSAvLyBV
U0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgICAgICAgICBjYXNlIENvbnN0YW50OgorICAg
ICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVjb3ZlcnkuY29uc3Rh
bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0
ZS0+dG1wc1tpXSA9IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KHRtcFNjcmF0Y2hbaSAr
IHRtcE9mZnNldF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJblBhaXI6CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPih0
bXBTY3JhdGNoKVtpICsgdG1wT2Zmc2V0XTsKLSNlbHNlCisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNh
c2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJv
eGVkQ2VsbEluR1BSOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yKiB2YWx1ZURlc2NyaXB0b3IgPSBiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3Jp
cHRvcio+KHRtcFNjcmF0Y2ggKyBpICsgdG1wT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IEpTVmFsdWUoSlNWYWx1ZTo6Q2VsbFRhZywgdmFsdWVE
ZXNjcmlwdG9yLT5hc0JpdHMucGF5bG9hZCk7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBjYXNl
IFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0
ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNoW2kgKyB0
bXBPZmZzZXRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKIAogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAKICAgICAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZDE0MGFhYzliZTJkNTQwM2QxYmMwZDk5MTJh
ZTllMTA1ZjgwZDQzMy4uNzgyMjI0ZTY0ZDkzYTM1ZGY3NmY4YWEwN2M3NmI5NTFlZTEzZmFiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMSw0ICsx
LDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhLCBTLkwuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4K
ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYgKzMxLDcgQEAKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogI2luY2x1ZGUgIkpJVC5oIgogCisjaW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklu
bGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKQEAgLTM5LDYgKzQyLDcgQEAKICNpbmNsdWRlICJP
cGNvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNldHVw
VmFyYXJnc0ZyYW1lLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlIDx3
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTQ5LDcgKzUzLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgT3A+CiB2b2lkIEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmIGJ5dGVjb2RlKQog
ewogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxv
Y2spKTsKLSAgICBlbWl0U3RvcmUoYnl0ZWNvZGUubV9kc3QsIHJlZ1QxLCByZWdUMCk7CisgICAg
ZW1pdFN0b3JlKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2tw
b2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfcmV0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0x
NTIsOSArMTU2LDEwIEBAIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAsIHZvaWQ+CiBKSVQ6OmNvbXBpbGVT
ZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKIHsKKyAgICB1bnNp
Z25lZCBjaGVja3BvaW50ID0gbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKICAgICBhdXRv
JiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBpbnQgYXJn
Q291bnQgPSBieXRlY29kZS5tX2FyZ2M7Ci0gICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRp
Y19jYXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBpbnQgYXJnQ291bnQgPSBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2twb2ludCk7CisgICAgaW50IHJl
Z2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0Zv
ckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0g
b3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgZW1pdExvYWQoVmly
dHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldElu
Y2x1ZGluZ1RoaXMoMCkpLCByZWdUMCwgcmVnVDEpOwpAQCAtMjY5LDcgKzI3NCw3IEBAIHZvaWQg
SklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWdu
ZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBPcDo6b3Bjb2Rl
SUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKLSAgICBWaXJ0
dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9jYWxsZWU7CisgICAgVmlydHVhbFJlZ2lz
dGVyIGNhbGxlZSA9IGNhbGxlZUZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9p
bnQoKSk7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgogICAgICAgICAtIFVwZGF0ZXMgY2FsbEZy
YW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4KQEAgLTM2NiwyNCArMzcxLDI2NSBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIGVtaXRQdXRDYWxsUmVzdWx0KGJ5dGVjb2RlKTsK
IH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiop
Cit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbikKIHsKLSAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIGF1dG8qIHRy
eUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9uLT53
aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlf
ZmFzdF9uYXJyb3c7CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3Jfb3Blbl90
cnlfZmFzdF93aWRlMTY7CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdF93aWRlMzI7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBzbG93
UGF0aENhbGwuY2FsbCgpOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwg
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBjb21waWxlT3BDYWxsPE9wSXRl
cmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKworICAgIFZp
cnR1YWxSZWdpc3RlciB2ciA9IGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICBhZHZhbmNlVG9OZXh0Q2hl
Y2twb2ludCgpOworICAgIAorICAgIC8vIGNhbGwgcmVzdWx0IChpdGVyYXRvcikgaXMgaW4gcmVn
VDEgKHRhZykvcmVnVDAgKHBheWxvYWQpCisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSAm
dm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbCh2ciwgcmVnVDEpOworCisgICAgR1BSUmVnIHRhZ0l0ZXJhdG9yR1BSID0gcmVnVDE7
CisgICAgR1BSUmVnIHBheWxvYWRJdGVyYXRvckdQUiA9IHJlZ1QwOworCisgICAgR1BSUmVnIHRh
Z05leHRHUFIgPSB0YWdJdGVyYXRvckdQUjsKKyAgICBHUFJSZWcgcGF5bG9hZE5leHRHUFIgPSBw
YXlsb2FkSXRlcmF0b3JHUFI7CisKKyAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9jb2RlQmxvY2ssCisgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKKyAg
ICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQo
KSkpLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisg
ICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIo
aWRlbnQtPmltcGwoKSksCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBwYXls
b2FkSXRlcmF0b3JHUFIpLAorICAgICAgICBKU1ZhbHVlUmVncyh0YWdOZXh0R1BSLCBwYXlsb2Fk
TmV4dEdQUiksCisgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgIAorICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7CisgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIEpTVmFsdWVSZWdzKHRhZ05leHRHUFIsIHBheWxv
YWROZXh0R1BSKSk7CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAg
IGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9wQ2FsbFNsb3dDYXNlPE9wSXRl
cmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAg
ICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgpKTsKKworICAgIGxpbmtBbGxT
bG93Q2FzZXMoaXRlcik7CisKKyAgICBHUFJSZWcgdGFnSXRlcmF0b3JHUFIgPSByZWdUMTsKKyAg
ICBHUFJSZWcgcGF5bG9hZEl0ZXJhdG9yR1BSID0gcmVnVDA7CisKKyAgICBKdW1wTGlzdCBub3RP
YmplY3Q7CisgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwodGFnSXRlcmF0b3JH
UFIpKTsKKyAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KHBheWxvYWRJdGVy
YXRvckdQUikpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJh
dG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZSZWcgPSBieXRlY29kZS5tX25l
eHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNb
bV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUoCisgICAgICAg
IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgLy8gbWV0YWRhdGEKKyAgICAgICAgb3Bl
cmF0aW9uR2V0QnlJZE9wdGltaXplLCAvLyBvcGVyYXRpb24KKyAgICAgICAgbmV4dFZSZWcsIC8v
IHJlc3VsdAorICAgICAgICBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIC8vIGFyZzEKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCksIC8vIGFyZzIKKyAgICAgICAgSlNW
YWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxvYWRJdGVyYXRvckdQUiksIC8vIGFyZzMKKyAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihp
ZGVudCkucmF3Qml0cygpKTsgLy8gYXJnNAorICAgIAorICAgIGdlbi5yZXBvcnRTbG93UGF0aENh
bGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgYXV0byBkb25lID0ganVtcCgpOworCisgICAg
bm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd0l0
ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3Bf
aXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgp
IHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNl
IE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3RfbmFycm93OworICAgICAgICBj
YXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTE2OworICAgICAg
ICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rfd2lkZTMyOworICAg
ICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgfSkoKTsKKworICAgIEpTVmFsdWVSZWdzIHYocmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgdik7CisgICAgSnVtcCBnZW5lcmljQ2Fz
ZSA9IGJyYW5jaElmTm90RW1wdHkodik7CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24pOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRl
cmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdlbmVyaWNDYXNlLmxpbmsodGhpcyk7Cisg
ICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihJdGVyYXRpb25Nb2RlOjpH
ZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9pdGVyYXRpb25NZXRhZGF0YS5z
ZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0b3JOZXh0PihpbnN0cnVjdGlv
biwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgp
OworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0gSlNPYmplY3QpIGluIHJlZ1Qx
LCByZWdUMAorCisgICAgR1BSUmVnIHRhZ1ZhbHVlR1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHBh
eWxvYWRWYWx1ZUdQUiA9IHJlZ1QwOworICAgICAgICAKKyAgICBHUFJSZWcgdGFnRG9uZUdQUiA9
IHJlZ1Q1OworICAgIEdQUlJlZyBwYXlsb2FkRG9uZUdQUiA9IHJlZ1Q0OworCisgICAgeworICAg
ICAgICBHUFJSZWcgdGFnSXRlclJlc3VsdEdQUiA9IHJlZ1QzOworICAgICAgICBHUFJSZWcgcGF5
bG9hZEl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKyAgICAgICAgCisgICAgICAgIC8vIGl0ZXJSZXN1
bHRHUFIgd2lsbCBnZXQgdHJhc2hlZCBieSB0aGUgZmlyc3QgZ2V0IGJ5IGlkIGJlbG93LgorICAg
ICAgICBtb3ZlKHJlZ1QxLCB0YWdJdGVyUmVzdWx0R1BSKTsKKyAgICAgICAgbW92ZShyZWdUMCwg
cGF5bG9hZEl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2ciA9IGRl
c3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKS52aXJ0
dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHZyLCB0
YWdJdGVyUmVzdWx0R1BSKTsKKworICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWRSZWdzID0g
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpOworICAgICAgICBwcmVzZXJ2
ZWRSZWdzLmFkZCh0YWdWYWx1ZUdQUik7CisgICAgICAgIHByZXNlcnZlZFJlZ3MuYWRkKHBheWxv
YWRWYWx1ZUdQUik7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
CisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4
Lm9mZnNldCgpKSksCisgICAgICAgICAgICBwcmVzZXJ2ZWRSZWdzLAorICAgICAgICAgICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcih2bSgpLnByb3Bl
cnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJS
ZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHRhZ0RvbmVHUFIsIHBheWxvYWREb25lR1BSKSwKKyAgICAgICAgICAgIEFjY2Vzc1R5cGU6Okdl
dEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAgIG1fZ2V0QnlJZHMuYXBwZW5k
KGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShtZXRhZGF0YSk7CisgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kb25lLCBKU1ZhbHVlUmVncyh0
YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUikpOworICAgICAgICBhZHZhbmNlVG9OZXh0Q2hlY2tw
b2ludCgpOworICAgIH0KKworCisgICAgeworICAgICAgICBHUFJSZWcgdGFnSXRlclJlc3VsdEdQ
UiA9IHJlZ1QxOworICAgICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJSZXN1bHRHUFIgPSByZWdUMDsK
KworICAgICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUNjsKKyAgICAgICAgR1BSUmVnIHNjcmF0
Y2gyID0gcmVnVDc7CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFu
Y2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUiks
IHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAg
ICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgICAgICBDYWxsU2l0
ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCisgICAgICAg
ICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCku
cHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRh
Z0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKKyAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHRhZ1ZhbHVlR1BSLCBwYXlsb2FkVmFsdWVHUFIpLAorICAgICAgICAgICAgQWNjZXNz
VHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAg
ICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRh
KTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCBKU1Zh
bHVlUmVncyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BSKSk7CisKKyAgICAgICAgaXRlcmF0
aW9uRG9uZS5saW5rKHRoaXMpOworICAgIH0KKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7CiB9
CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BM
QVRGT1JNKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxs
U2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5m
b0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOwor
CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsK
KyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9u
ZTsKKyAgICAgICAgR1BSUmVnIHRhZ1ZhbHVlR1BSID0gcmVnVDE7CisgICAgICAgIEdQUlJlZyBw
YXlsb2FkVmFsdWVHUFIgPSByZWdUMDsKKyAgICAgICAgICAgIAorICAgICAgICBHUFJSZWcgdGFn
SXRlclJlc3VsdEdQUiA9IHJlZ1QzOworICAgICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJSZXN1bHRH
UFIgPSByZWdUMjsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyB0YWdEb25lR1BSID0gcmVnVDU7
CisgICAgICAgIEdQUlJlZyBwYXlsb2FkRG9uZUdQUiA9IHJlZ1Q0OworCisgICAgICAgIGxpbmtB
bGxTbG93Q2FzZXMoaXRlcik7CisgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKKyAgICAgICAg
bm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwodGFnSXRlclJlc3VsdEdQUikpOworICAg
ICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KHBheWxvYWRJdGVyUmVzdWx0
R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0
eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0g
bV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRp
b25XaXRoUHJvZmlsZSgKKyAgICAgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KSwgLy8gbWV0YWRhdGEKKyAgICAgICAgICAgIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgLy8g
b3BlcmF0aW9uCisgICAgICAgICAgICBkb25lVlJlZywgLy8gcmVzdWx0CisgICAgICAgICAgICBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIC8vIGFyZzEKKyAgICAg
ICAgICAgIGdlbi5zdHViSW5mbygpLCAvLyBhcmcyCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksIC8vIGFyZzMKKyAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRv
bmVWUmVnLCBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUikpOworICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIEpTVmFsdWVSZWdzKHRh
Z1ZhbHVlR1BSLCBwYXlsb2FkVmFsdWVHUFIpKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RG
b3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2Jq
ZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0K
KworICAgIHsgICAKKyAgICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMTsKKyAg
ICAgICAgR1BSUmVnIHBheWxvYWRJdGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgbGlu
a0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9
IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0g
dm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5l
cmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFi
ZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9w
ZXJhdGlvbldpdGhQcm9maWxlKAorICAgICAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spLCAvLyBtZXRhZGF0YQorICAgICAgICAgICAgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCAvLyBvcGVyYXRpb24KKyAgICAgICAgICAgIHZhbHVlVlJlZywgLy8gcmVzdWx0CisgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIC8vIGFyZzEK
KyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLCAvLyBhcmcyCisgICAgICAgICAgICBKU1ZhbHVl
UmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksIC8vIGFyZzMKKyAg
ICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZp
ZXIoaWRlbnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGQ5NDExMmI4MWE5YzkwZjc4MzQxYTgwNWVlMzIwNDVh
NWMwZTA2NDUuLjRjZmRiMzZhZjhiOTE1MDdlNzczMTFkNDFjNThlYWUwOGEyZTJmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCkBAIC00ODgsNiArNDg4LDkgQEAgbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZv
ckxvb3AoKQogICAgICAgICBlbmQpCiBlbmQKIAorIyBsb2FkVmFyaWFibGUgbG9hZHMgdGhlIHZh
bHVlIG9mIGZpZWxkIGZpZWxkTmFtZSB1c2luZyBtYWNybyBnZXQKKyMgaW50byByZWdpc3RlciB0
YWdSZWcgYW5kIHBheWxvYWRSZWcKKyMgQ2xvYmJlcnM6IGluZGV4UmVnCiBtYWNybyBsb2FkVmFy
aWFibGUoZ2V0LCBmaWVsZE5hbWUsIGluZGV4UmVnLCB0YWdSZWcsIHBheWxvYWRSZWcpCiAgICAg
Z2V0KGZpZWxkTmFtZSwgaW5kZXhSZWcpCiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXhS
ZWcsIDhdLCB0YWdSZWcKQEAgLTY1MSw3ICs2NTQsNyBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkds
b2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVlRmllbGROYW1lKQogZW5kCiAK
IG1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2ZpbGVOYW1lLCBtZXRhZGF0YSwg
dGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KKyAgICBzdG9yZWkgdGFn
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgVGFn
T2Zmc2V0W21ldGFkYXRhXQogICAgIHN0b3JlaSBwYXlsb2FkLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFttZXRhZGF0YV0K
IGVuZAogCkBAIC0xNDEwLDYgKzE0MTMsNTIgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRf
YnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3AKICAg
ICBkaXNwYXRjaCgpCiBlbmQpCiAKKyMgQXNzdW10aW9uOiBUaGUgYmFzZSBvYmplY3QgaXMgaW4g
dDMKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRh
TmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgIG1ldGFkYXRhKHQyLCB0MSkKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKKyAgICAgICAgCisub3BHZXRCeUlk
RGVmYXVsdDoKKyAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0LCAu
b3BHZXRCeUlkUHJvdG9Mb2FkCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEgIyBhc3N1bWVzIGJhc2Ugb2JqZWN0IGluIHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJd
LCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNl
dFt0Ml0sIHQxCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0
MSkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0Miwg
dDAsIHQxKQorICAgIHJldHVybih0MCwgdDEpCisKKy5vcEdldEJ5SWRQcm90b0xvYWQ6CisgICAg
YmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJy
YXlMZW5ndGgKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQorICAgIGxv
YWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9h
ZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCisg
ICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnBy
b3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3Rb
dDJdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCwgdDEp
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQw
LCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BHZXRCeUlkQXJyYXlMZW5ndGg6CisgICAg
YmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRV
bnNldAorICAgIG1vdmUgdDMsIHQwCisgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUs
IHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCisgICAgYnRpeiB0
MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAorICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1
dHRlcmZseVt0M10sIHQwCisgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKKyAgICBiaWx0IHQwLCAw
LCBzbG93TGFiZWwKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCB0MiwgSW50MzJUYWcsIHQwKQorICAgIHJldHVybihJbnQzMlRhZywgdDApCisgICAgCisu
b3BHZXRCeUlkVW5zZXQ6CisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEK
KyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51
bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVs
CisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVu
ZGVmaW5lZFRhZywgMCkKKyAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQorCitlbmQKIAogbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAt
MTk4Miw2ICsyMDMxLDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0
LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIs
IHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJn
dW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgbWV0YWRhdGEo
dDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtC
aXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBD
ZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdwor
ICAgIGdldEFyZ3VtZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ2kgdDMK
KyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAg
ICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgZ2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXModDIpICAgIAorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBD
YWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0Mywgc3AKKyAgICBwcmVwYXJlQ2FsbCgl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIGNhbGxUYXJnZXRGdW5jdGlv
bihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisKKy5vcENh
bGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1
Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQ
YXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorICAgICAgICAKIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNv
ZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAg
ICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0
NSwgdDApCkBAIC0xOTkwLDI1ICsyMDYzLDE5IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVO
YW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAg
ICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAg
IGVuZCwgbWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFz
dFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCi0gICAgICAg
IGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1
Y3QsIG1fYXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVnaSB0Mwot
ICAgICAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIK
LSAgICAgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBn
ZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVpIFBDLCBB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCi0gICAgICAgIHN0b3Jl
aSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAg
ICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQotICAgICAgICBtb3Zl
IHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5
UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bj
b2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0
clRhZykKKyAgICAgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgICAgZ2V0KG1fY2Fs
bGVlLCB0MCkKKyAgICAgICAgZW5kCiAKLSAgICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1Bh
dGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2Rz
dCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgbWFjcm8gZ2V0QXJn
dW1lbnRTdGFydChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9h
cmd2LCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50Q291bnQo
ZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgZHN0KQor
ICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xv
d1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1
bWVudENvdW50KQogICAgIGVuZCkKIGVuZAogCkBAIC0yNjQyLDI1ICsyNzA5LDE1MCBAQCBsbGlu
dE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0YwogICAgIHJldHVybihJbnQzMlRhZywgdDApCiBlbmQpCiAKLWxs
aW50T3Aob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoKQotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9vcGVu
LCBzaXplKQotICAgIGJyZWFrCi0gICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAg
IyBJbnNlcnQgc3VwZXJmbG91cyBjYWxsIHJldHVybiBsYWJlbHMgZm9yIENsb29wLgotICAgICAg
ICBjbG9vcENhbGxKU0Z1bmN0aW9uIGEwICMgc3ltYm9sSXRlcmF0b3IKLSAgICAgICAgY2xvb3BD
YWxsSlNGdW5jdGlvbiBhMCAjIGdldCBuZXh0CitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJh
dG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQ
YXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBm
YXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0
X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXpl
KGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxP
cCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFz
c2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhw
ciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3Bh
dGNoKCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVj
a3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKICAgICBlbmQKKworICAgIG1hY3Jv
IGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAg
ZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAg
ICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBl
bmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAg
ICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3Bl
biwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBt
X2l0ZXJhdG9yUHJvZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXpl
LCBnb3RvR2V0QnlJZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50
SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdl
dEJ5SWRTdGFydDoKKyAgICBtYWNybyBzdG9yZU5leHRBbmREaXNwYXRjaCh2YWx1ZVRhZywgdmFs
dWVQYXlsb2FkKQorICAgICAgICBtb3ZlIHZhbHVlVGFnLCB0MgorICAgICAgICBtb3ZlIHZhbHVl
UGF5bG9hZCwgdDMKKyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICAjIFdlIG5lZWQg
dG8gbG9hZCBtX2l0ZXJhdG9yIGludG8gdDMgYmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAjIHBl
cmZvcm1HZXRCeUlESGVscGVyIGV4cGVjdHMgdGhlIGJhc2Ugb2JqZWN0ICAgIAorICAgIGxvYWRW
YXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzLCB0MCwgdDMpCisgICAgYmluZXEgdDAsIENlbGxU
YWcsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhl
bHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVy
YXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmRE
aXNwYXRjaCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdzoKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQorICAgIGRpc3Bh
dGNoKCkKIGVuZCkKIAotbGxpbnRPcChvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVs
KG9wX2l0ZXJhdG9yX25leHQsIHNpemUpCi0gICAgYnJlYWsKLSAgICBpZiBDX0xPT1Agb3IgQ19M
T09QX1dJTgotICAgICAgICAjIEluc2VydCBzdXBlcmZsb3VzIGNhbGwgcmV0dXJuIGxhYmVscyBm
b3IgQ2xvb3AuCi0gICAgICAgICMgRklYTUU6IE5vdCBzdXJlIHdoeSB0d28gYXJlIG9ubHkgbmVl
ZGVkLi4uCi0gICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAgIyBuZXh0Ci0gICAgICAgIGNs
b29wQ2FsbEpTRnVuY3Rpb24gYTAgIyBnZXQgZG9uZQorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9p
dGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgICAgIAorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fbmV4
dCwgdDAsIHQxLCB0MCkKKyAgICBiaWVxIHQxLCBVbmRlZmluZWRUYWcsIC5pdGVyYXRvck5leHRH
ZW5lcmljCisgICAgYnRpbnogdDAsIC5pdGVyYXRvck5leHRHZW5lcmljCisKKyAgICBtYWNybyBm
YXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0
X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNs
b3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNy
byBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9m
YXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZh
c3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdl
IHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0
IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAu
aXRlcmF0b3JOZXh0R2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yTmV4dEdlbmVy
aWM6CisgICAgbWFjcm8gZ290b0dldERvbmVDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRE
b25lU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdl
dChtX25leHQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5n
VGhpc1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0dShzaXplLCBPcEl0ZXJhdG9yTmV4dCwgbV9zdGFj
a09mZnNldCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdU
aGlzQ291bnQoZHN0KQorICAgICAgICBtb3ZlIDEsIGRzdAorICAgIGVuZAorCisgICAgIyBVc2Ug
bV92YWx1ZSBzbG90IGFzIGEgdG1wIHNpbmNlIHdlIGFyZSBnb2luZyB0byB3cml0ZSB0byBpdCBs
YXRlci4KKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX25leHQsIF9sbGludF9zbG93X3BhdGhf
aXRlcmF0b3JfbmV4dF9jYWxsLCBPcEl0ZXJhdG9yTmV4dCwgbV9uZXh0UmVzdWx0UHJvZmlsZSwg
bV92YWx1ZSwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0RG9uZUNoZWNrcG9p
bnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBn
ZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldERvbmVTdGFydDoKKyAgICBtYWNy
byBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKGRvbmVWYWx1ZVRhZywgZG9uZVZhbHVlUGF5bG9h
ZCkKKyAgICAgICAgbW92ZSBkb25lVmFsdWVUYWcsIHQwCisgICAgICAgIG1vdmUgZG9uZVZhbHVl
UGF5bG9hZCwgdDEKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDIpCisgICAgICAgIHN0b3JlaSB0MCwg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQKICAgICBlbmQKKworICAgIGxv
YWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzLCB0MCwgdDMpCisgICAgYmluZXEgdDAsIENlbGxU
YWcsIC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0
LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwg
bWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQor
ICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9s
aW5lKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDEsIHQwLCB0MSkKKworICAgICMg
c3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSBwdXRzIHRoZSBkb25lVmFsdWUgaW50byB0MAorLmdl
dFZhbHVlU3RhcnQ6CisgICAgIyBJbiAzMiBiaXRzLCBmb2xsb3dpbmcgc2xvdyBwYXRoIGlmIHRh
Z3MgaXMgbm90IG51bGwsIHVuZGVmaW5lZCwgaW50MzIsIGJvb2xlYW4uCisgICAgIyBUaGVzZSBz
YXRpc2Z5IHRoZSBtYXNrIH4weDMuCisgICAgIyBUaGVyZWZvcmUgaWYgdGhlIG1hc2sgaXMgX25v
dF8gc2F0aXNmaWVkLCB3ZSBicmFuY2ggdG8gdGhlIHNsb3cgY2FzZS4KKyAgICBidGlueiB0MCwg
fjB4MywgLmdldFZhbHVlU2xvdworICAgIGJ0aXogdDEsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNw
YXRjaCgpCisKKy5ub3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2VGFn
LCB2UGF5bG9hZCkKKyAgICAgICAgbW92ZSB2VGFnLCB0MgorICAgICAgICBtb3ZlIHZQYXlsb2Fk
LCB0MworICAgICAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkK
KyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVz
dWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4K
KyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MywgdDAsIHQzKQorICAgICMgV2UgZG9u
J3QgbmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNp
bmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgorICAgIHBlcmZvcm1HZXRC
eUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJv
ZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRj
aCkKKworLmdldFZhbHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9p
dGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCiBlbmQpCiAKIGxsaW50T3BX
aXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzQ5MDU0YWE3MTQ4N2Q3YjZlZGEyYjli
NDNlZTdmNDEwMDczZjJjMC4uNjM5ZDYyMmY5NTE4NzNlZjFkNWRlOTUwZDZkZDczY2FkZGIxYTNl
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0yNCAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlh
LmNvbT4KKworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMy
Yml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSm9p
bnQgd29yayB3aXRoIENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorICAgICAgICBV
bnNraXAgdGVzdHMgcHJldmlvdXNseSBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIGZvci4ub2YgaW50
cmluc2ljcy4KKworICAgICAgICAqIHN0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2Jh
bHMuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pbmxp
bmVkLXJldHVybi1ub24tb2JqZWN0LmpzOgorICAgICAgICAqIHN0cmVzcy9mb3Itb2YtaXRlcmF0
b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzOgorICAgICAgICAqIHN0cmVzcy9m
b3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5qczoKKwogMjAyMC0wNy0yNCAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIERvIG5v
dCB1c2UgaGFyZGVuZWQgQXJyYXkgZm9yIEludGwgc3VwcG9ydGVkTG9jYWxlc09mCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2JhbHMuanMgYi9K
U1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVyZW50LWdsb2JhbHMuanMKaW5kZXggODE1
YmY4NTk4ZjNmNTNlYjJiM2Y5NzEzZThlN2I1Y2Q2MzE3ZWYzMS4uN2Q3N2NmODhhYjYwMmNlNGQz
ODdiNzFkY2NmYmYxZGFmMjBmOGUyZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9m
LWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1h
cnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcwpAQCAtMSw0ICsxLDMgQEAKLS8vQCBza2lwIGlmIFsi
YXJtIiwgIm1pcHMiXS5pbmNsdWRlPygkYXJjaGl0ZWN0dXJlKQogbGV0IGNvdW50ID0gMDsKIAog
ZnVuY3Rpb24gZm9vKGFycmF5KSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2Yt
aXRlcmF0b3Itb3Blbi1vc3ItYXQtaW5saW5lZC1yZXR1cm4tbm9uLW9iamVjdC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24t
b2JqZWN0LmpzCmluZGV4IGM4YzJmNTBiNjljNzRiZjA4MGI3MWMzMzM4ZDE4OTcwZmQ3Y2Y5NTYu
LjIxODk3ZmJjZWIxZWQ1ZjU0N2QzODQ3NzYwZDVjYzMyMzEwZDBmOTQgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1u
b24tb2JqZWN0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9z
ci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzCkBAIC0xLDQgKzEsMyBAQAotLy9AIHNr
aXAgaWYgWyJhcm0iLCAibWlwcyJdLmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBsZXQgc2hvdWxk
VmVuZE51bGwgPSBmYWxzZTsKIGZ1bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICBpZiAoc2hv
dWxkVmVuZE51bGwpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3It
b3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9m
LWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWl0ZXJhdG9yLXNldC1sb2NhbC5qcwppbmRleCAzMTA0YmY4
ZmM1Nzg1MzMwNzE5MzNhOWEyZDc4ZTZjNDQ0MWY1OTlmLi5iYzNjZjdmMTFkNTM0YTQ4NjNjMjMy
YWZjYTI5NjIyNGM4MjBhZDIxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRl
cmF0b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pdGVyYXRvci1zZXQtbG9jYWwuanMKQEAg
LTEsNCArMSwzIEBACi0vL0Agc2tpcCBpZiBbImFybSIsICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hp
dGVjdHVyZSkKIGxldCBzaG91bGRWZW5kTnVsbCA9IGZhbHNlOwogZnVuY3Rpb24gdmVuZEl0ZXJh
dG9yKCkgewogICAgIGlmIChzaG91bGRWZW5kTnVsbCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLXJldHVybi1ub24tb2JqZWN0LmpzIGIvSlNUZXN0cy9z
dHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKaW5kZXggYTQy
NmYzOGM2MmIyNjQ0OGRmNDQ0YTY1YjNjZDZjOWE4ZTZiZDEzYi4uZTZmMzljYzM0M2ViOThhZWUz
MDYyZGUxY2ZlYzRlYjFiNjQyOTY3YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9m
LWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Zm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKQEAgLTEsNCArMSwzIEBA
Ci0vL0Agc2tpcCBpZiBbImFybSIsICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVyZSkKIGZ1
bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICByZXR1cm4gMTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405260</attachid>
            <date>2020-07-26 23:15:23 -0700</date>
            <delta_ts>2020-07-27 10:45:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214737-20200727081508.patch</filename>
            <type>text/plain</type>
            <size>40176</size>
            <attacher name="Paulo Matos">pmatos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi42YTA5NmUwOTQyMzJmMjZm
ZDc3MGNiMDFiZDdmMjJkZmM3ZDY0ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMC0wNy0yNiAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
KworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMyYml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSm9pbnQgd29y
ayB3aXRoIENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorCisgICAgICAgIEltcGxl
bWVudHMgZm9yLi5vZiBpbnRyaW5zaWNzIGZvciAzMmJpdHMuCisgICAgICAgIEFkZHMgb3I4IGlu
c3RydWN0aW9uIHRvIEFSTXY3IGFuZCBNSVBTIE1hY3JvIEFzc2VtYmxlci4KKyAgICAgICAgQWRk
cyBpbnRyaW5zaWMgb3BlcmF0aW9ucyB0byBMTEludCBhbmQgQmFzZWxpbmUgZm9yIDMyYml0cy4K
KyAgICAgICAgRml4ZXMgREZHIE9TUiBFeGl0IGJ1Zywgd2hlcmUgY2hlY2twb2ludCB0ZW1wb3Jh
cnkgdmFsdWUgaXMKKyAgICAgICAgaW5jb3JyZWN0bHkgcmVjcmVhdGVkIGZvciBCYXNlbGluZS4K
KyAgICAgICAgUmVmYWN0b3JzIGNvZGUgaW4gREZHIE9TUiBFeGl0IHRvIGJlIGVhc2llciB0byBt
b2RpZnkgYW5kCisgICAgICAgIG1haW50YWluIGJ5IHNlcGFyYXRpbmcgdGhlIHN3aXRjaCBjYXNl
cyBmb3IgMzIgYW5kIDY0Yml0cy4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yOCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpvcjgpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlOCk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRFbnVtZXJhdGlvbik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBqaXQv
SklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q2FsbFJlc3VsdCk6
CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jf
b3Blbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtOgorCiAyMDIwLTA3LTI0ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlT
bG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1aXJ5IHJlcXVlc3RzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBj
OGYzMzU1YWYwMDdmZmViYjRkNjQzNzE5NjdmMzdlZGVlZDk4ZmI2Li4zYzAzOWMwZDhhMjRlNzE4
MDgxODc1NjBlMzM5YjdlMGUzZTdhMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtMzYyLDkgKzM2MiwyMiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZyhkZXN0LCBzcmMpOwogICAgIH0KIAot
ICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQg
b3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAg
ICAgICAgbV9hc3NlbWJsZXIub3JyKGRlc3QsIGRlc3QsIHNyYyk7CisgICAgICAgIEFSTVRodW1i
SW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0u
bV92YWx1ZSk7CisgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbG9hZDgoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgYXJtSW1tKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAg
ICAgICAgICBsb2FkOChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1f
cHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBS
ZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2
b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCkBAIC0zODQs
NyArMzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2
b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwpAQCAt
NjkzLDcgKzcxMSw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBz
dG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJlc3MgYWRkcmVzcykKKyAgICB2b2lkIHN0b3Jl
OChSZWdpc3RlcklEIHNyYywgY29uc3QgQXJtQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgaWYgKGFkZHJlc3MudHlwZSA9PSBBcm1BZGRyZXNzOjpIYXNJbmRleCkKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MudS5pbmRleCwgYWRk
cmVzcy51LnNjYWxlKTsKQEAgLTg4NywyMyArOTA1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3Jl
OChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHZvaWQgc3RvcmU4KFJlZ2lz
dGVySUQgc3JjLCBjb25zdCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTgo
c3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHN0
b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgo
UmVnaXN0ZXJJRCBzcmMsIGNvbnN0IEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICAgICAgICAg
c3RvcmU4KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpKTsKICAgICB9CiAgICAgCi0gICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9y
ZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQgKmFkZHJlc3MpCiAgICAgewogICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAg
ICBzdG9yZTgoc3JjLCBBcm1BZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApKTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykK
KyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkICphZGRyZXNzKQog
ICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0u
bV92YWx1ZSkpOwogICAgICAgICBtb3ZlKGltbTgsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtOTE3
LDYgKzkzNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlOChjb25zdCBSZWdpc3RlcklEIHNyYywg
Y29uc3QgUmVnaXN0ZXJJRCBhZGRycmVnKQorICAgIHsKKyAgICAgICAgc3RvcmU4KHNyYywgQXJt
QWRkcmVzcyhhZGRycmVnLCAwKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3RvcmUxNihSZWdp
c3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9y
ZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDI0YjE5NzM5
OTdmYjJkMDc5YmFkZDQ3OTNmMWRmZjRlZTI2NDBhNDAuLmU2M2FiNDc1NWZmOGExYjA2OTdjY2Q3
M2I2MjIwMjJkNmVjMDE5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtNDc1LDYgKzQ3NSwyNSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3Jj
KTsKICAgICB9CiAKKworICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRk
cmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdp
ZHRoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2ZpeGVkV2lkdGgpIHsK
KyAgICAgICAgICAgIGxvYWQ4KGRlc3QubV9wdHIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAg
ICAgICBvcjMyKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlOChpbW1U
ZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
dWludHB0cl90IGFkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihkZXN0Lm1fcHRyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShhZGRyVGVtcFJlZ2lzdGVyLCAoYWRyICsgMHg4
MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sYnUoaW1tVGVtcFJlZ2lzdGVy
LCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAgICAgb3IzMihpbW0s
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zYihpbW1UZW1wUmVn
aXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7ICAgICAgICAgICAgCisgICAg
ICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCBvcjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29s
dXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9m
aXhlZFdpZHRoKQpAQCAtMTMxMiw3ICsxMzMxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAg
dm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBpZiAobV9maXhlZFdpZHRoKSB7CiAgICAgICAgICAgICAvKgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCA4NDQwZDliMDYxYWFkMDk3YTc1MGM5ZGZhMTFlNzVhNGQ4ODg2OWIwLi4yMTVkNmI3
ZTNjYTI5YWZkYmVjMGE4NDQwYTM1NzhiYjU5MDMyYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
NDE4OSw3ICs0MTg5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVt
ZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXgKIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2Rl
LCBFeHByZXNzaW9uTm9kZSogc3ViamVjdE5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopPiYgY2FsbEJhY2ssIEZvck9mTm9kZSogZm9y
TG9vcE5vZGUsIFJlZ2lzdGVySUQqIGZvckxvb3BTeW1ib2xUYWJsZSkKIHsKLSAgICBpZiAoIU9w
dGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNpY3MoKSB8fCBpczMyQml0KCkgfHwgKGZvckxvb3BO
b2RlICYmIGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkpKSB7CisgICAgaWYgKCFPcHRpb25zOjp1
c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgKGZvckxvb3BOb2RlICYmIGZvckxvb3BOb2RlLT5p
c0ZvckF3YWl0KCkpKSB7CiAgICAgICAgIGVtaXRHZW5lcmljRW51bWVyYXRpb24obm9kZSwgc3Vi
amVjdE5vZGUsIGNhbGxCYWNrLCBmb3JMb29wTm9kZSwgZm9yTG9vcFN5bWJvbFRhYmxlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCmluZGV4IDY4NGFiYTQ4ZDE3ZjQxOWIzMzhhMzMzMGIxN2JlMTkzMDNmMzI1MjIuLjg1Mzk4
YmQ3OWZmMTRlZGU1ZmZkNzQ0ZDJkMmM4OTk0ZmJhNmEwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcApAQCAtNjAxLDYgKzYwMSw4IEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhp
dCwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgYXV0byYgcmVjb3ZlcnkgPSB2YWx1ZXNbaSAr
IHRtcE9mZnNldF07CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8g
d2hhdCB0aGUgRlRMIGRvZXMgYW5kIG1hdGVyaWFsaXplIGFsbCB0aGUgSlNWYWx1ZXMgaW50byB0
aGUgc2NyYXRjaCBidWZmZXIuCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3Zlcnku
dGVjaG5pcXVlKCkpIHsKKworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQ29uc3RhbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNb
aV0gPSByZWNvdmVyeS5jb25zdGFudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC02MTEsMzEgKzYxMyw1MSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVs
cGVycyYgaml0LCBWTSYgdm0sIGNvbnN0IE9TUkV4aXQmIGV4aXQsIGNvbnN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCi0jaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJblBhaXI6Ci0jZW5kaWYKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBC
b29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBjYXNlIENlbGxE
aXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJ
bkdQUjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNp
ZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHRtcFNjcmF0Y2gp
W2kgKyB0bXBPZmZzZXRdOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5H
UFI6IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94
ZWRCb29sZWFuSW5HUFI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1w
c1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNoW2kgKyB0bXBPZmZz
ZXRdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisjZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0YW50OgorICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ld
ID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBJblBhaXI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNrOiB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWludGVycHJl
dF9jYXN0PEpTVmFsdWUqPih0bXBTY3JhdGNoKVtpICsgdG1wT2Zmc2V0XTsKLSNlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOiB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKiB2YWx1ZURlc2NyaXB0b3IgPSBiaXR3aXNlX2Nhc3Q8
RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHRtcFNjcmF0Y2ggKyBpICsgdG1wT2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IEpTVmFsdWUoSlNWYWx1
ZTo6Q2VsbFRhZywgdmFsdWVEZXNjcmlwdG9yLT5hc0JpdHMucGF5bG9hZCk7Ci0jZW5kaWYKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29s
Pih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZDE0MGFhYzli
ZTJkNTQwM2QxYmMwZDk5MTJhZTllMTA1ZjgwZDQzMy4uNzgyMjI0ZTY0ZDkzYTM1ZGY3NmY4YWEw
N2M3NmI5NTFlZTEzZmFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcApAQCAtMSw0ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlh
LCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWV0cm9s
b2dpY2FsIEdyb3VwIEIuVi4KICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDYgKzMxLDcgQEAK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogI2luY2x1ZGUgIkpJVC5oIgogCisjaW5jbHVkZSAiQ2Fj
aGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKQEAgLTM5LDYgKzQy
LDcgQEAKICNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5o
IgogI2luY2x1ZGUgIlNldHVwVmFyYXJnc0ZyYW1lLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxs
LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KQEAgLTQ5LDcgKzUzLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiB2b2lkIEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29u
c3QgT3AmIGJ5dGVjb2RlKQogewogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spKTsKLSAgICBlbWl0U3RvcmUoYnl0ZWNvZGUubV9kc3QsIHJl
Z1QxLCByZWdUMCk7CisgICAgZW1pdFN0b3JlKGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5
dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKSwgcmVnVDEsIHJlZ1Qw
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC0xNTIsOSArMTU2LDEwIEBAIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAsIHZv
aWQ+CiBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJ
bmZvKikKIHsKKyAgICB1bnNpZ25lZCBjaGVja3BvaW50ID0gbV9ieXRlY29kZUluZGV4LmNoZWNr
cG9pbnQoKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKLSAgICBpbnQgYXJnQ291bnQgPSBieXRlY29kZS5tX2FyZ2M7Ci0gICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oYnl0ZWNvZGUubV9hcmd2KTsKKyAgICBpbnQg
YXJnQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvcihieXRlY29kZSwgY2hlY2tw
b2ludCk7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19jYXN0PGludD4oc3RhY2tP
ZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9pbnQpKTsKIAogICAgIGlm
IChPcDo6b3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAg
ICAgICAgZW1pdExvYWQoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpLCByZWdUMCwgcmVnVDEpOwpAQCAtMjY5
LDcgKzI3NCw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKGNvbnN0IEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kCiB7CiAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBPcDo6b3Bjb2RlSUQ7CiAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gYnl0ZWNvZGUubV9jYWxsZWU7
CisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGNhbGxlZUZvcihieXRlY29kZSwgbV9ieXRl
Y29kZUluZGV4LmNoZWNrcG9pbnQoKSk7CiAKICAgICAvKiBDYWxsZXIgYWx3YXlzOgogICAgICAg
ICAtIFVwZGF0ZXMgY2FsbEZyYW1lUmVnaXN0ZXIgdG8gY2FsbGVlIGNhbGxGcmFtZS4KQEAgLTM2
NiwyNCArMzcxLDI2NSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRQogICAgIGVtaXRQdXRDYWxs
UmVzdWx0KGJ5dGVjb2RlKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3Jfb3Blbihj
b25zdCBJbnN0cnVjdGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKLSAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVu
PigpOworICAgIGF1dG8qIHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0
Y2ggKGluc3RydWN0aW9uLT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4g
aXRlcmF0b3Jfb3Blbl90cnlfZmFzdF9uYXJyb3c7CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1
cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTY7CisgICAgICAgIGNhc2UgV2lkZTMyOiBy
ZXR1cm4gaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMzI7CisgICAgICAgIGRlZmF1bHQ6IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworCisgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1
bmN0aW9uKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIEp1bXAgZmFzdENhc2UgPSBi
cmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBj
b21waWxlT3BDYWxsPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9J
bmRleCsrKTsKKworICAgIFZpcnR1YWxSZWdpc3RlciB2ciA9IGRlc3RpbmF0aW9uRm9yKGJ5dGVj
b2RlLCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAg
ICBhZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOworICAgIAorICAgIC8vIGNhbGwgcmVzdWx0IChp
dGVyYXRvcikgaXMgaW4gcmVnVDEgKHRhZykvcmVnVDAgKHBheWxvYWQpCisgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSAmdm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0OworICAgIAorICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCh2ciwgcmVnVDEpOworCisgICAgR1BSUmVnIHRhZ0l0
ZXJhdG9yR1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHBheWxvYWRJdGVyYXRvckdQUiA9IHJlZ1Qw
OworCisgICAgR1BSUmVnIHRhZ05leHRHUFIgPSB0YWdJdGVyYXRvckdQUjsKKyAgICBHUFJSZWcg
cGF5bG9hZE5leHRHUFIgPSBwYXlsb2FkSXRlcmF0b3JHUFI7CisKKyAgICBKSVRHZXRCeUlkR2Vu
ZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgIENvZGVPcmlnaW4obV9i
eXRlY29kZUluZGV4KSwKKyAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0
ZWNvZGVJbmRleC5vZmZzZXQoKSkpLAorICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
bW1vcnRhbElkZW50aWZpZXIoaWRlbnQtPmltcGwoKSksCisgICAgICAgIEpTVmFsdWVSZWdzKHRh
Z0l0ZXJhdG9yR1BSLCBwYXlsb2FkSXRlcmF0b3JHUFIpLAorICAgICAgICBKU1ZhbHVlUmVncyh0
YWdOZXh0R1BSLCBwYXlsb2FkTmV4dEdQUiksCisgICAgICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQp
OworICAgIAorICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBhZGRTbG93Q2Fz
ZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7
CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX25leHQsIEpTVmFsdWVSZWdz
KHRhZ05leHRHUFIsIHBheWxvYWROZXh0R1BSKSk7CisKKyAgICBmYXN0Q2FzZS5saW5rKHRoaXMp
OwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKQordm9pZCBKSVQ6OmVtaXRT
bG93X29wX2l0ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewotICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgY29tcGlsZU9w
Q2FsbFNsb3dDYXNlPE9wSXRlcmF0b3JPcGVuPihpbnN0cnVjdGlvbiwgaXRlciwgbV9jYWxsTGlu
a0luZm9JbmRleCsrKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdEZvckNoZWNrcG9pbnQoanVtcCgp
KTsKKworICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisKKyAgICBHUFJSZWcgdGFnSXRlcmF0
b3JHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgcGF5bG9hZEl0ZXJhdG9yR1BSID0gcmVnVDA7CisK
KyAgICBKdW1wTGlzdCBub3RPYmplY3Q7CisgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5v
dENlbGwodGFnSXRlcmF0b3JHUFIpKTsKKyAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90
T2JqZWN0KHBheWxvYWRJdGVyYXRvckdQUikpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3Ry
dWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgbmV4dFZS
ZWcgPSBieXRlY29kZS5tX25leHQ7CisgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0o
KS5wcm9wZXJ0eU5hbWVzLT5uZXh0LmltcGwoKTsKKworICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisgICAgCisgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0
aFByb2ZpbGUoCisgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgLy8gbWV0
YWRhdGEKKyAgICAgICAgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCAvLyBvcGVyYXRpb24KKyAg
ICAgICAgbmV4dFZSZWcsIC8vIHJlc3VsdAorICAgICAgICBUcnVzdGVkSW1tUHRyKG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSksIC8vIGFyZzEKKyAgICAgICAgZ2VuLnN0dWJJbmZvKCksIC8v
IGFyZzIKKyAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxvYWRJdGVyYXRv
ckdQUiksIC8vIGFyZzMKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlt
bW9ydGFsSWRlbnRpZmllcihpZGVudCkucmF3Qml0cygpKTsgLy8gYXJnNAorICAgIAorICAgIGdl
bi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgYXV0byBkb25l
ID0ganVtcCgpOworCisgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisKKyAgICBkb25lLmxpbmsodGhpcyk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24qKQor
dm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgYXV0byBieXRl
Y29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICBhdXRvJiBtZXRh
ZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBhdXRvKiB0cnlGYXN0
RnVuY3Rpb24gPSAoWyZdICgpIHsKKyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgo
KSkgeworICAgICAgICBjYXNlIE5hcnJvdzogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zhc3Rf
bmFycm93OworICAgICAgICBjYXNlIFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5X2Zh
c3Rfd2lkZTE2OworICAgICAgICBjYXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX25leHRfdHJ5
X2Zhc3Rfd2lkZTMyOworICAgICAgICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfSkoKTsKKworICAgIEpTVmFsdWVSZWdzIHYocmVnVDEsIHJl
Z1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgdik7Cisg
ICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElmTm90RW1wdHkodik7CisKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGluc3RydWN0aW9uLCB0cnlGYXN0RnVuY3Rpb24p
OworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgSnVtcCBmYXN0Q2FzZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsKKworICAgIGdlbmVyaWND
YXNlLmxpbmsodGhpcyk7CisgICAgb3I4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90
PihJdGVyYXRpb25Nb2RlOjpHZW5lcmljKSksIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9p
dGVyYXRpb25NZXRhZGF0YS5zZWVuTW9kZXMpKTsKKyAgICBjb21waWxlT3BDYWxsPE9wSXRlcmF0
b3JOZXh0PihpbnN0cnVjdGlvbiwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKKyAgICBhZHZhbmNl
VG9OZXh0Q2hlY2twb2ludCgpOworICAgIC8vIGNhbGwgcmVzdWx0ICh7IGRvbmUsIHZhbHVlIH0g
SlNPYmplY3QpIGluIHJlZ1QxLCByZWdUMAorCisgICAgR1BSUmVnIHRhZ1ZhbHVlR1BSID0gcmVn
VDE7CisgICAgR1BSUmVnIHBheWxvYWRWYWx1ZUdQUiA9IHJlZ1QwOworICAgICAgICAKKyAgICBH
UFJSZWcgdGFnRG9uZUdQUiA9IHJlZ1Q1OworICAgIEdQUlJlZyBwYXlsb2FkRG9uZUdQUiA9IHJl
Z1Q0OworCisgICAgeworICAgICAgICBHUFJSZWcgdGFnSXRlclJlc3VsdEdQUiA9IHJlZ1QzOwor
ICAgICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKyAgICAgICAgCisg
ICAgICAgIC8vIGl0ZXJSZXN1bHRHUFIgd2lsbCBnZXQgdHJhc2hlZCBieSB0aGUgZmlyc3QgZ2V0
IGJ5IGlkIGJlbG93LgorICAgICAgICBtb3ZlKHJlZ1QxLCB0YWdJdGVyUmVzdWx0R1BSKTsKKyAg
ICAgICAgbW92ZShyZWdUMCwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFZpcnR1
YWxSZWdpc3RlciB2ciA9IGRlc3RpbmF0aW9uRm9yKGJ5dGVjb2RlLCBtX2J5dGVjb2RlSW5kZXgu
Y2hlY2twb2ludCgpKS52aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHZyLCB0YWdJdGVyUmVzdWx0R1BSKTsKKworICAgICAgICBSZWdpc3RlclNl
dCBwcmVzZXJ2ZWRSZWdzID0gUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
OworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZCh0YWdWYWx1ZUdQUik7CisgICAgICAgIHByZXNl
cnZlZFJlZ3MuYWRkKHBheWxvYWRWYWx1ZUdQUik7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAgICBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5k
ZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCisgICAgICAgICAgICBwcmVzZXJ2ZWRSZWdz
LAorICAgICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRl
bnRpZmllcih2bSgpLnByb3BlcnR5TmFtZXMtPmRvbmUuaW1wbCgpKSwKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHRhZ0RvbmVHUFIsIHBheWxvYWREb25lR1BSKSwKKyAgICAgICAg
ICAgIEFjY2Vzc1R5cGU6OkdldEJ5SWQpOworICAgICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CisgICAgICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CisKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZShtZXRhZGF0YSk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9k
b25lLCBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUikpOworICAgICAgICBh
ZHZhbmNlVG9OZXh0Q2hlY2twb2ludCgpOworICAgIH0KKworCisgICAgeworICAgICAgICBHUFJS
ZWcgdGFnSXRlclJlc3VsdEdQUiA9IHJlZ1QxOworICAgICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJS
ZXN1bHRHUFIgPSByZWdUMDsKKworICAgICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUNjsKKyAg
ICAgICAgR1BSUmVnIHNjcmF0Y2gyID0gcmVnVDc7CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0
ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRydXRoeSh2bSgpLCBKU1ZhbHVlUmVncyh0YWdEb25lR1BS
LCBwYXlsb2FkRG9uZUdQUiksIHNjcmF0Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpOworCisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAg
bV9jb2RlQmxvY2ssCisgICAgICAgICAgICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCisg
ICAgICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9m
ZnNldCgpKSksCisgICAgICAgICAgICBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwK
KyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ1ZhbHVlR1BSLCBwYXlsb2FkVmFsdWVHUFIpLAor
ICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
KyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRl
Y29kZS5tX3ZhbHVlLCBKU1ZhbHVlUmVncyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BSKSk7
CisKKyAgICAgICAgaXRlcmF0aW9uRG9uZS5saW5rKHRoaXMpOworICAgIH0KKworICAgIGZhc3RD
YXNlLmxpbmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0
KGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAg
VU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsK
KyAgICBjb21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBp
dGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hl
Y2twb2ludChqdW1wKCkpOworCisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJl
ZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAgICAgICAgR1BSUmVnIHRhZ1ZhbHVlR1BSID0gcmVnVDE7
CisgICAgICAgIEdQUlJlZyBwYXlsb2FkVmFsdWVHUFIgPSByZWdUMDsKKyAgICAgICAgICAgIAor
ICAgICAgICBHUFJSZWcgdGFnSXRlclJlc3VsdEdQUiA9IHJlZ1QzOworICAgICAgICBHUFJSZWcg
cGF5bG9hZEl0ZXJSZXN1bHRHUFIgPSByZWdUMjsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyB0
YWdEb25lR1BSID0gcmVnVDU7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkRG9uZUdQUiA9IHJlZ1Q0
OworCisgICAgICAgIGxpbmtBbGxTbG93Q2FzZXMoaXRlcik7CisgICAgICAgIEp1bXBMaXN0IG5v
dE9iamVjdDsKKyAgICAgICAgbm90T2JqZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwodGFnSXRl
clJlc3VsdEdQUikpOworICAgICAgICBub3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0
KHBheWxvYWRJdGVyUmVzdWx0R1BSKSk7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlk
ZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJ
ZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAg
CisgICAgICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwg
Y2FsbCA9IGNhbGxPcGVyYXRpb25XaXRoUHJvZmlsZSgKKyAgICAgICAgICAgIGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKSwgLy8gbWV0YWRhdGEKKyAgICAgICAgICAgIG9wZXJhdGlvbkdl
dEJ5SWRPcHRpbWl6ZSwgLy8gb3BlcmF0aW9uCisgICAgICAgICAgICBkb25lVlJlZywgLy8gcmVz
dWx0CisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIC8vIGFyZzEKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLCAvLyBhcmcyCisgICAgICAg
ICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiks
IC8vIGFyZzMKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1v
cnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKworICAgICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKGRvbmVWUmVnLCBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2Fk
RG9uZUdQUikpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFs
dWUsIEpTVmFsdWVSZWdzKHRhZ1ZhbHVlR1BSLCBwYXlsb2FkVmFsdWVHUFIpKTsKKyAgICAgICAg
ZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2Jq
ZWN0LmxpbmsodGhpcyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVy
YXRvclJlc3VsdElzTm90T2JqZWN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSkpOworICAgIH0KKworICAgIHsgICAKKyAgICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1
bHRHUFIgPSByZWdUMTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRJdGVyUmVzdWx0R1BSID0gcmVn
VDA7CisKKyAgICAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICAgICAgVW5pcXVlZFN0
cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAg
ICAgIEpJVEdldEJ5SWRHZW5lcmF0b3ImIGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgr
K107CisKKyAgICAgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAg
Q2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKAorICAgICAgICAgICAgYnl0ZWNv
ZGUubWV0YWRhdGEobV9jb2RlQmxvY2spLCAvLyBtZXRhZGF0YQorICAgICAgICAgICAgb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplLCAvLyBvcGVyYXRpb24KKyAgICAgICAgICAgIHZhbHVlVlJlZywg
Ly8gcmVzdWx0CisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIC8vIGFyZzEKKyAgICAgICAgICAgIGdlbi5zdHViSW5mbygpLCAvLyBhcmcyCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3Vs
dEdQUiksIC8vIGFyZzMKKyAgICAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKworICAgICAg
ICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIH0KIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGQ5NDExMmI4MWE5Yzkw
Zjc4MzQxYTgwNWVlMzIwNDVhNWMwZTA2NDUuLjRjZmRiMzZhZjhiOTE1MDdlNzczMTFkNDFjNThl
YWUwOGEyZTJmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC00ODgsNiArNDg4LDkgQEAgbWFjcm8g
Y2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQogICAgICAgICBlbmQpCiBlbmQKIAorIyBsb2FkVmFy
aWFibGUgbG9hZHMgdGhlIHZhbHVlIG9mIGZpZWxkIGZpZWxkTmFtZSB1c2luZyBtYWNybyBnZXQK
KyMgaW50byByZWdpc3RlciB0YWdSZWcgYW5kIHBheWxvYWRSZWcKKyMgQ2xvYmJlcnM6IGluZGV4
UmVnCiBtYWNybyBsb2FkVmFyaWFibGUoZ2V0LCBmaWVsZE5hbWUsIGluZGV4UmVnLCB0YWdSZWcs
IHBheWxvYWRSZWcpCiAgICAgZ2V0KGZpZWxkTmFtZSwgaW5kZXhSZWcpCiAgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgaW5kZXhSZWcsIDhdLCB0YWdSZWcKQEAgLTY1MSw3ICs2NTQsNyBAQCBtYWNy
byB3cml0ZUJhcnJpZXJPbkdsb2JhbExleGljYWxFbnZpcm9ubWVudChzaXplLCBnZXQsIHZhbHVl
RmllbGROYW1lKQogZW5kCiAKIG1hY3JvIHZhbHVlUHJvZmlsZShvcGNvZGVTdHJ1Y3QsIHByb2Zp
bGVOYW1lLCBtZXRhZGF0YSwgdGFnLCBwYXlsb2FkKQotICAgIHN0b3JlaSB0YWcsICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9wcm9maWxlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0
YV0KKyAgICBzdG9yZWkgdGFnLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFt
ZSUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21ldGFkYXRhXQogICAgIHN0b3JlaSBwYXlsb2FkLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVwcm9maWxlTmFtZSUubV9idWNrZXRzICsgUGF5bG9h
ZE9mZnNldFttZXRhZGF0YV0KIGVuZAogCkBAIC0xNDEwLDYgKzE0MTMsNTIgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfYnlfaWRfZGlyZWN0LCBPcEdldEJ5SWREaXJlY3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3AKICAgICBkaXNwYXRjaCgpCiBlbmQpCiAKKyMgQXNzdW10aW9uOiBUaGUg
YmFzZSBvYmplY3QgaXMgaW4gdDMKK21hY3JvIHBlcmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0
cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQcm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXpl
LCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKHQyLCB0MSkKKyAgICBsb2FkYiAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKKyAg
ICAgICAgCisub3BHZXRCeUlkRGVmYXVsdDoKKyAgICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5
SWRNb2RlOjpEZWZhdWx0LCAub3BHZXRCeUlkUHJvdG9Mb2FkCisgICAgbG9hZGkgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QzXSwgdDEgIyBhc3N1bWVzIGJhc2Ugb2JqZWN0IGluIHQzCisgICAgbG9h
ZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1v
ZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAg
bG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1
bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9m
ZnNldCh0MSwgdDMsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1
ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAgIHJldHVybih0MCwgdDEpCisKKy5vcEdldEJ5
SWRQcm90b0xvYWQ6CisgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9M
b2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MQorICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRh
ZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQz
LCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xv
YWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BHZXRCeUlk
QXJyYXlMZW5ndGg6CisgICAgYmJuZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlM
ZW5ndGgsIC5vcEdldEJ5SWRVbnNldAorICAgIG1vdmUgdDMsIHQwCisgICAgYXJyYXlQcm9maWxl
KCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3Ro
TW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUpCisgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xv
d0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIHNsb3dMYWJlbAorICAgIGxv
YWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwCisgICAgbG9hZGkgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwg
dDAKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwKKyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgSW50MzJUYWcsIHQwKQorICAgIHJldHVybihJbnQz
MlRhZywgdDApCisgICAgCisub3BHZXRCeUlkVW5zZXQ6CisgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVx
IHQwLCB0MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQ
cm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywgMCkKKyAgICByZXR1cm4oVW5kZWZpbmVkVGFn
LCAwKQorCitlbmQKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJ
ZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0
YWRhdGEodDUsIHQwKQpAQCAtMTk4Miw2ICsyMDMxLDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZv
ckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogLmRvbmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBl
cihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBk
c3RWaXJ0dWFsUmVnaXN0ZXIsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEs
IGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpCisgICAgbWV0YWRhdGEodDUsIHQwKQorICAgIGdldENhbGxlZSh0MCkKKworICAgIGxvYWRw
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RT
ZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMs
IHQyLCAub3BDYWxsU2xvdworICAgIGdldEFyZ3VtZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAz
LCB0MworICAgIG5lZ2kgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5l
dyB2YWx1ZSBvZiBjZnIKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXModDIpICAgIAorICAgIHN0b3JlaSBQ
QywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3Jl
aSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0Mywgc3AK
KyAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAg
IGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVl
UHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50
cnlQdHJUYWcpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKK2VuZAorICAgICAgICAKIG1hY3Jv
IGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJl
Q2FsbCwgcHJvbG9ndWUpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgICAgICBtZXRhZGF0YSh0NSwgdDApCkBAIC0xOTkwLDI1ICsyMDYzLDE5IEBAIG1hY3JvIGNv
bW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2Fs
bCwgcHJvbG9ndWUpCiAgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGRO
YW1lLCBkc3QpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVl
LCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9w
Q2FsbFNsb3cpCi0gICAgICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0
dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMK
LSAgICAgICAgbmVnaSB0MwotICAgICAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhl
IG5ldyB2YWx1ZSBvZiBjZnIKLSAgICAgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zm
c2V0W3QzXQotICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAg
ICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtj
ZnJdCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXls
b2FkT2Zmc2V0W3QzXQotICAgICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0
W3QzXQotICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0
MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bj
b2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFy
Z2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAg
ICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAgICAgICAgZW5kCiAKLSAgICAub3BDYWxsU2xv
dzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVj
dCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAg
ICAgICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChkc3QpCisgICAgICAgICAgICBnZXR1KHNpemUs
IG9wY29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisgICAgICAgIGVuZAorCisgICAgICAgIG1hY3Jv
IGdldEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1
Y3QsIG1fYXJnYywgZHN0KQorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIGNhbGxIZWxw
ZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwg
cHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1
bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQogICAgIGVuZCkKIGVuZAogCkBAIC0yNjQyLDI1
ICsyNzA5LDE1MCBAQCBsbGludE9wV2l0aFJldHVybihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0
UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogICAgIHJldHVybihJbnQzMlRh
ZywgdDApCiBlbmQpCiAKLWxsaW50T3Aob3BfaXRlcmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4s
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJl
bChvcF9pdGVyYXRvcl9vcGVuLCBzaXplKQotICAgIGJyZWFrCi0gICAgaWYgQ19MT09QIG9yIENf
TE9PUF9XSU4KLSAgICAgICAgIyBJbnNlcnQgc3VwZXJmbG91cyBjYWxsIHJldHVybiBsYWJlbHMg
Zm9yIENsb29wLgotICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGEwICMgc3ltYm9sSXRlcmF0
b3IKLSAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBhMCAjIGdldCBuZXh0CitsbGludE9wV2l0
aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtYWNybyBmYXN0TmFycm93KCkK
KyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAg
ICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMy
KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikK
KyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1h
Y3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0
aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAg
IGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVu
R2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFj
cm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXRCeUlkU3RhcnQKICAg
ICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0
ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1Ro
aXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tP
ZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhp
c0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgIGNhbGxIZWxw
ZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGws
IE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJvZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFyZUZv
clJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRD
YWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGlu
Z1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoKKyAgICBtYWNybyBzdG9yZU5leHRBbmREaXNw
YXRjaCh2YWx1ZVRhZywgdmFsdWVQYXlsb2FkKQorICAgICAgICBtb3ZlIHZhbHVlVGFnLCB0Mgor
ICAgICAgICBtb3ZlIHZhbHVlUGF5bG9hZCwgdDMKKyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisg
ICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5k
CisKKyAgICAjIFdlIG5lZWQgdG8gbG9hZCBtX2l0ZXJhdG9yIGludG8gdDMgYmVjYXVzZSB0aGF0
J3Mgd2hlcmUKKyAgICAjIHBlcmZvcm1HZXRCeUlESGVscGVyIGV4cGVjdHMgdGhlIGJhc2Ugb2Jq
ZWN0ICAgIAorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1faXRlcmF0b3IsIHQzLCB0MCwgdDMpCisg
ICAgYmluZXEgdDAsIENlbGxUYWcsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKKyAg
ICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1f
bmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFk
YXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKworLml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dl
dF9uZXh0KQorICAgIGRpc3BhdGNoKCkKIGVuZCkKIAotbGxpbnRPcChvcF9pdGVyYXRvcl9uZXh0
LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gpCi0gICAgZGVmaW5l
T1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9yX25leHQsIHNpemUpCi0gICAgYnJlYWsKLSAg
ICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAgICAgICAjIEluc2VydCBzdXBlcmZsb3VzIGNh
bGwgcmV0dXJuIGxhYmVscyBmb3IgQ2xvb3AuCi0gICAgICAgICMgRklYTUU6IE5vdCBzdXJlIHdo
eSB0d28gYXJlIG9ubHkgbmVlZGVkLi4uCi0gICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAg
IyBuZXh0Ci0gICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAgIyBnZXQgZG9uZQorbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgICAgIAorICAgIGxvYWRW
YXJpYWJsZShnZXQsIG1fbmV4dCwgdDAsIHQxLCB0MCkKKyAgICBiaWVxIHQxLCBVbmRlZmluZWRU
YWcsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAgYnRpbnogdDAsIC5pdGVyYXRvck5leHRHZW5l
cmljCisKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2
KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNikK
KyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9p
dGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJy
b3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkK
KworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNp
bmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRp
b25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAgIGRpc3BhdGNoKCkKKwor
Lml0ZXJhdG9yTmV4dEdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldERvbmVDaGVja3BvaW50KCkK
KyAgICAgICAgam1wIC5nZXREb25lU3RhcnQKKyAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxl
ZShkc3QpCisgICAgICAgIGdldChtX25leHQsIGRzdCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdl
dEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRzdCkKKyAgICAgICAgZ2V0dShzaXplLCBPcEl0
ZXJhdG9yTmV4dCwgbV9zdGFja09mZnNldCwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0
QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0KQorICAgICAgICBtb3ZlIDEsIGRzdAorICAg
IGVuZAorCisgICAgIyBVc2UgbV92YWx1ZSBzbG90IGFzIGEgdG1wIHNpbmNlIHdlIGFyZSBnb2lu
ZyB0byB3cml0ZSB0byBpdCBsYXRlci4KKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX25leHQs
IF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9jYWxsLCBPcEl0ZXJhdG9yTmV4dCwgbV9u
ZXh0UmVzdWx0UHJvZmlsZSwgbV92YWx1ZSwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBn
b3RvR2V0RG9uZUNoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5j
bHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldERv
bmVTdGFydDoKKyAgICBtYWNybyBzdG9yZURvbmVBbmRKbXBUb0dldFZhbHVlKGRvbmVWYWx1ZVRh
ZywgZG9uZVZhbHVlUGF5bG9hZCkKKyAgICAgICAgbW92ZSBkb25lVmFsdWVUYWcsIHQwCisgICAg
ICAgIG1vdmUgZG9uZVZhbHVlUGF5bG9hZCwgdDEKKyAgICAgICAgZ2V0KG1fZG9uZSwgdDIpCisg
ICAgICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQK
ICAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fdmFsdWUsIHQzLCB0MCwgdDMpCisg
ICAgYmluZXEgdDAsIENlbGxUYWcsIC5nZXREb25lU2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVs
cGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2RlTWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5n
ZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisK
Ky5nZXREb25lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRv
cl9uZXh0X2dldF9kb25lKQorICAgIGJyYW5jaElmRXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9t
X3Nsb3dfcGF0aF90cmFtcG9saW5lKQorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDEs
IHQwLCB0MSkKKworICAgICMgc3RvcmVEb25lQW5kSm1wVG9HZXRWYWx1ZSBwdXRzIHRoZSBkb25l
VmFsdWUgaW50byB0MAorLmdldFZhbHVlU3RhcnQ6CisgICAgIyBJbiAzMiBiaXRzLCBmb2xsb3dp
bmcgc2xvdyBwYXRoIGlmIHRhZ3MgaXMgbm90IG51bGwsIHVuZGVmaW5lZCwgaW50MzIsIGJvb2xl
YW4uCisgICAgIyBUaGVzZSBzYXRpc2Z5IHRoZSBtYXNrIH4weDMuCisgICAgIyBUaGVyZWZvcmUg
aWYgdGhlIG1hc2sgaXMgX25vdF8gc2F0aXNmaWVkLCB3ZSBicmFuY2ggdG8gdGhlIHNsb3cgY2Fz
ZS4KKyAgICBidGlueiB0MCwgfjB4MywgLmdldFZhbHVlU2xvdworICAgIGJ0aXogdDEsIDB4MSwg
Lm5vdERvbmUKKyAgICBkaXNwYXRjaCgpCisKKy5ub3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFs
dWVBbmREaXNwYXRjaCh2VGFnLCB2UGF5bG9hZCkKKyAgICAgICAgbW92ZSB2VGFnLCB0MgorICAg
ICAgICBtb3ZlIHZQYXlsb2FkLCB0MworICAgICAgICBnZXQobV92YWx1ZSwgdDEpCisgICAgICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVu
dCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgIyBS
ZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5jZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBo
YXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX3ZhbHVlLCB0MywgdDAs
IHQzKQorICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0
IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdlIHdpbGwgaGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3Jl
LgorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1l
dGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZhbHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0
b3JlVmFsdWVBbmREaXNwYXRjaCkKKworLmdldFZhbHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgp
CiBlbmQpCiAKIGxsaW50T3BXaXRoUHJvZmlsZShvcF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0
SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjFhZDNh
ZjMyMjIyMmE1MzM1ZGI1ODg4YjE1MWNjOTJjODU4M2M5NC4uN2M2Yzk3NjgxNmIxYmU3MTcwMTQx
MDgyY2Q5NWY0N2I1ODc0MDk4ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNy0yNiAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KKworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1w
bGVtZW50YXRpb24gZm9yIDMyYml0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSm9pbnQgd29yayB3aXRoIENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFp
bC5jb20+LgorICAgICAgICBVbnNraXAgdGVzdHMgcHJldmlvdXNseSBza2lwcGVkIGR1ZSB0byBt
aXNzaW5nIGZvci4ub2YgaW50cmluc2ljcy4KKworICAgICAgICAqIHN0cmVzcy9mb3Itb2YtYXJy
YXktZGlmZmVyZW50LWdsb2JhbHMuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1pdGVyYXRv
ci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzOgorICAgICAgICAqIHN0
cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzOgor
ICAgICAgICAqIHN0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5q
czoKKwogMjAyMC0wNy0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2Yt
YXJyYXktZGlmZmVyZW50LWdsb2JhbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXkt
ZGlmZmVyZW50LWdsb2JhbHMuanMKaW5kZXggODE1YmY4NTk4ZjNmNTNlYjJiM2Y5NzEzZThlN2I1
Y2Q2MzE3ZWYzMS4uN2Q3N2NmODhhYjYwMmNlNGQzODdiNzFkY2NmYmYxZGFmMjBmOGUyZSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcwpA
QCAtMSw0ICsxLDMgQEAKLS8vQCBza2lwIGlmIFsiYXJtIiwgIm1pcHMiXS5pbmNsdWRlPygkYXJj
aGl0ZWN0dXJlKQogbGV0IGNvdW50ID0gMDsKIAogZnVuY3Rpb24gZm9vKGFycmF5KSB7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaW5saW5l
ZC1yZXR1cm4tbm9uLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1v
cGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzCmluZGV4IGM0ZDhhOGU4YjI4
ZWYyYThkNjZmNTRjNTFmMzU2MmE5OGIyMmE5MjUuLjIxODk3ZmJjZWIxZWQ1ZjU0N2QzODQ3NzYw
ZDVjYzMyMzEwZDBmOTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRv
ci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2Jq
ZWN0LmpzCkBAIC0xLDUgKzEsMyBAQAotLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRj
aCBTZXJpZXMgMyIgIyBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBmb3Itb2YgZm9yIDMyYml0
IGFyY2hpdGVjdHVyZS4KLS8vQCBza2lwIGlmIFsiYXJtIiwgIm1pcHMiXS5pbmNsdWRlPygkYXJj
aGl0ZWN0dXJlKQogbGV0IHNob3VsZFZlbmROdWxsID0gZmFsc2U7CiBmdW5jdGlvbiB2ZW5kSXRl
cmF0b3IoKSB7CiAgICAgaWYgKHNob3VsZFZlbmROdWxsKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWl0ZXJhdG9yLXNldC1sb2NhbC5qcyBi
L0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1pdGVyYXRvci1zZXQt
bG9jYWwuanMKaW5kZXggYzliMmY3MGZmZjllZmU0OGRkYzU3MTNlOGJiYzBiMWMzZmE2YWEyNC4u
YmMzY2Y3ZjExZDUzNGE0ODYzYzIzMmFmY2EyOTYyMjRjODIwYWQyMSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWl0ZXJhdG9yLXNldC1sb2Nh
bC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaXRl
cmF0b3Itc2V0LWxvY2FsLmpzCkBAIC0xLDUgKzEsMyBAQAotLy9AIHNraXAgaWYgJG1vZGVsID09
ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBmb3It
b2YgZm9yIDMyYml0IGFyY2hpdGVjdHVyZS4KLS8vQCBza2lwIGlmIFsiYXJtIiwgIm1pcHMiXS5p
bmNsdWRlPygkYXJjaGl0ZWN0dXJlKQogbGV0IHNob3VsZFZlbmROdWxsID0gZmFsc2U7CiBmdW5j
dGlvbiB2ZW5kSXRlcmF0b3IoKSB7CiAgICAgaWYgKHNob3VsZFZlbmROdWxsKQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJuLW5vbi1vYmplY3Qu
anMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVj
dC5qcwppbmRleCBlM2VkZmE5MjY5N2JlZmI3NTU3ZDBkYmI2MmY2YTRkODQxN2Q5MWUzLi5lNmYz
OWNjMzQzZWI5OGFlZTMwNjJkZTFjZmVjNGViMWI2NDI5NjdjIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1cm4tbm9uLW9iamVjdC5qcwpA
QCAtMSw1ICsxLDMgQEAKLS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVz
IDMiICMgV2UgYXJlIG5vdCBzdXBwb3J0aW5nIGZhc3QgZm9yLW9mIGZvciAzMmJpdCBhcmNoaXRl
Y3R1cmUuCi0vL0Agc2tpcCBpZiBbImFybSIsICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVy
ZSkKIGZ1bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICByZXR1cm4gMTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405291</attachid>
            <date>2020-07-27 10:45:27 -0700</date>
            <delta_ts>2020-07-29 02:31:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214737-20200727194512.patch</filename>
            <type>text/plain</type>
            <size>43105</size>
            <attacher name="Paulo Matos">pmatos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0OTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjQwNjNiOTYzZjk3NjQxNWI0ZTRjMjkxNjcwMWJkZmUzNzFjOThjLi41M2U2MGM2NDQ4MWJiYTRi
OGY1NjRiN2Y3ZWQ0M2U1YThjM2Y4YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMC0wNy0yNyAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
KworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMyYml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSm9pbnQgd29y
ayB3aXRoIENhaW8gTGltYSA8dGljYWlvbGltYUBnbWFpbC5jb20+LgorCisgICAgICAgIEltcGxl
bWVudHMgZm9yLi5vZiBpbnRyaW5zaWNzIGZvciAzMmJpdHMuCisgICAgICAgIEFkZHMgb3I4IGlu
c3RydWN0aW9uIHRvIEFSTXY3IGFuZCBNSVBTIE1hY3JvIEFzc2VtYmxlci4KKyAgICAgICAgQWRk
cyBpbnRyaW5zaWMgb3BlcmF0aW9ucyB0byBMTEludCBhbmQgQmFzZWxpbmUgZm9yIDMyYml0cy4K
KyAgICAgICAgRml4ZXMgREZHIE9TUiBFeGl0IGJ1Zywgd2hlcmUgY2hlY2twb2ludCB0ZW1wb3Jh
cnkgdmFsdWUgaXMKKyAgICAgICAgaW5jb3JyZWN0bHkgcmVjcmVhdGVkIGZvciBCYXNlbGluZS4K
KyAgICAgICAgUmVmYWN0b3JzIGNvZGUgaW4gREZHIE9TUiBFeGl0IHRvIGJlIGVhc2llciB0byBt
b2RpZnkgYW5kCisgICAgICAgIG1haW50YWluIGJ5IHNlcGFyYXRpbmcgdGhlIHN3aXRjaCBjYXNl
cyBmb3IgMzIgYW5kIDY0Yml0cy4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om9yOCk6IEFkZHMg
b3I4KFRydXN0ZWRJbW0sIEFic29sdXRlQWRkcmVzcykKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk12Nzo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnN0
b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yOCk6IEFkZHMgb3I4KFRydXN0ZWRJbW0sIEFi
c29sdXRlQWRkcmVzcykKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9yZTgp
OgorICAgICAgICAqIGFzc2VtYmxlci90ZXN0bWFzbS5jcHA6CisgICAgICAgIChKU0M6OnRlc3RP
ckltbU1lbSk6IFRlc3RzIG9yOAorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRp
b24pOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpP
U1JFeGl0Ojpjb21waWxlRXhpdCk6IEZpeGVzIERGRyBPU1IgRXhpdCBidWcsIHdoZXJlIGNoZWNr
cG9pbnQgdGVtcG9yYXJ5IHZhbHVlIGlzCisgICAgICAgIGluY29ycmVjdGx5IHJlY3JlYXRlZCBm
b3IgQmFzZWxpbmUuIFJlZmFjdG9ycyBjb2RlIGluIERGRyBPU1IgRXhpdCB0byBiZSBlYXNpZXIg
dG8gbW9kaWZ5IGFuZAorICAgICAgICBtYWludGFpbiBieSBzZXBhcmF0aW5nIHRoZSBzd2l0Y2gg
Y2FzZXMgZm9yIDMyIGFuZCA2NGJpdHMuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRDYWxsUmVz
dWx0KToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pdGVy
YXRvcl9vcGVuKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVu
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorCiAyMDIw
LTA3LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBwbHVnaW5F
bGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KCkgc2hvdWxkIHN1cHBvcnQgVk1JbnF1aXJ5
IHJlcXVlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCBjOGYzMzU1YWYwMDdmZmViYjRkNjQzNzE5NjdmMzdl
ZGVlZDk4ZmI2Li4zYzAzOWMwZDhhMjRlNzE4MDgxODc1NjBlMzM5YjdlMGUzZTdhMTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaApAQCAtMzYyLDkgKzM2MiwyMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm5lZyhkZXN0LCBzcmMpOwogICAgIH0KIAotICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRlc3QsIGRl
c3QsIHNyYyk7CisgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1t
ZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChhcm1JbW0u
aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0
ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9hZDgoYWRkcmVzc1RlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIo
ZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKKyAgICAgICAgICAg
IHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Cisg
ICAgICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGRlc3QpCkBAIC0zODQsNyArMzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHN0b3JlMTYoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgCisKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBz
cmMpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRy
ZXNzIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciks
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwpAQCAtNjkzLDcgKzcxMSw3IEBAIHByb3RlY3RlZDoKICAg
ICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFybUFkZHJl
c3MgYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3QgQXJtQWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKGFkZHJlc3MudHlwZSA9PSBBcm1BZGRy
ZXNzOjpIYXNJbmRleCkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN0cmIoc3JjLCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MudS5pbmRleCwgYWRkcmVzcy51LnNjYWxlKTsKQEAgLTg4NywyMyArOTA1
LDIzIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
KTsKICAgICB9CiAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBjb25zdCBBZGRyZXNzIGFkZHJl
c3MpCiAgICAgewogICAgICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU4KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFk
ZHJlc3MpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIHZv
aWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQg
KmFkZHJlc3MpCiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTgoc3JjLCBBcm1BZGRyZXNzKGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIDApKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzdG9yZTgoVHJ1c3Rl
ZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIg
aW1tLCBjb25zdCB2b2lkICphZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGlt
bTgoc3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwogICAgICAgICBtb3ZlKGltbTgs
IGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtOTE3LDYgKzkzNSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0
b3JlOChjb25zdCBSZWdpc3RlcklEIHNyYywgY29uc3QgUmVnaXN0ZXJJRCBhZGRycmVnKQorICAg
IHsKKyAgICAgICAgc3RvcmU4KHNyYywgQXJtQWRkcmVzcyhhZGRycmVnLCAwKSk7CisgICAgfQor
ICAgIAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJl
c3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCmluZGV4IDI0YjE5NzM5OTdmYjJkMDc5YmFkZDQ3OTNmMWRmZjRlZTI2NDBh
NDAuLmU2M2FiNDc1NWZmOGExYjA2OTdjY2Q3M2I2MjIwMjJkNmVjMDE5NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApA
QCAtNDc1LDYgKzQ3NSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVz
dCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjKTsKICAgICB9CiAKKworICAgIHZvaWQgb3I4KFRy
dXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgaWYg
KCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIGxvYWQ4KGRlc3QubV9wdHIs
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBvcjMyKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIHN0b3JlOChpbW1UZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdWludHB0cl90IGFkciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShh
ZGRyVGVtcFJlZ2lzdGVyLCAoYWRyICsgMHg4MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5sYnUoaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZm
ZmYpOworICAgICAgICAgICAgb3IzMihpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zYihpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAm
IDB4ZmZmZik7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCBv
cjE2KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMTMxMiw3ICsxMzMxLDcg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIHZvaWQqIGFkZHJlc3MpCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIGNv
bnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICBpZiAobV9maXhlZFdpZHRoKSB7CiAg
ICAgICAgICAgICAvKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci90ZXN0bWFzbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNt
LmNwcAppbmRleCA3ZjhiOTQ4NDVlNzU0Y2U1ODAwYTFlY2I3ZGE1Zjc4MzhiZWUyMzQ3Li42Y2Ni
MTllMWQ0OTA2Yjg5NzAxZTFhY2IzZmUxODk0MTgwZmY0ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcApAQCAtMjI4MCw2ICsyMjgwLDE2IEBAIHZv
aWQgdGVzdE9ySW1tTWVtKCkKICAgICBpbnZva2U8dm9pZD4ob3IxNik7CiAgICAgQ0hFQ0tfRVEo
bWVtb3J5TG9jYXRpb24sIDB4MTIzNDEyMzQgfCA0Mik7CiAKKyAgICBtZW1vcnlMb2NhdGlvbiA9
IDB4MTIzNDEyMzQ7CisgICAgYXV0byBvcjggPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQpIHsKKyAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKyAgICAgICAgaml0Lm9y
OChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIENDYWxsSGVscGVyczo6QWJzb2x1dGVB
ZGRyZXNzKCZtZW1vcnlMb2NhdGlvbikpOworICAgICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZShq
aXQpOworICAgICAgICBqaXQucmV0KCk7CisgICAgfSk7CisgICAgaW52b2tlPHZvaWQ+KG9yOCk7
CisgICAgQ0hFQ0tfRVEobWVtb3J5TG9jYXRpb24sIDB4MTIzNDEyMzQgfCA0Mik7CisKICAgICBt
ZW1vcnlMb2NhdGlvbiA9IDB4MTIzNDEyMzQ7CiAgICAgYXV0byBvcjE2SW52YWxpZExvZ2ljYWxJ
bW1JbkFSTTY0ID0gY29tcGlsZShbJl0gKENDYWxsSGVscGVycyYgaml0KSB7CiAgICAgICAgIGVt
aXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg0NDBkOWIwNjFh
YWQwOTdhNzUwYzlkZmExMWU3NWE0ZDg4ODY5YjAuLjIxNWQ2YjdlM2NhMjlhZmRiZWMwYTg0NDBh
MzU3OGJiNTkwMzJjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00MTg5LDcgKzQxODksNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlLCBFeAogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51
bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBz
dWJqZWN0Tm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKik+JiBjYWxsQmFjaywgRm9yT2ZOb2RlKiBmb3JMb29wTm9kZSwgUmVnaXN0ZXJJ
RCogZm9yTG9vcFN5bWJvbFRhYmxlKQogewotICAgIGlmICghT3B0aW9uczo6dXNlSXRlcmF0aW9u
SW50cmluc2ljcygpIHx8IGlzMzJCaXQoKSB8fCAoZm9yTG9vcE5vZGUgJiYgZm9yTG9vcE5vZGUt
PmlzRm9yQXdhaXQoKSkpIHsKKyAgICBpZiAoIU9wdGlvbnM6OnVzZUl0ZXJhdGlvbkludHJpbnNp
Y3MoKSB8fCAoZm9yTG9vcE5vZGUgJiYgZm9yTG9vcE5vZGUtPmlzRm9yQXdhaXQoKSkpIHsKICAg
ICAgICAgZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihub2RlLCBzdWJqZWN0Tm9kZSwgY2FsbEJhY2ss
IGZvckxvb3BOb2RlLCBmb3JMb29wU3ltYm9sVGFibGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggNjg0YWJhNDhk
MTdmNDE5YjMzOGEzMzMwYjE3YmUxOTMwM2YzMjUyMi4uODUzOThiZDc5ZmYxNGVkZTVmZmQ3NDRk
MmQyYzg5OTRmYmE2YTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
Y3BwCkBAIC02MDEsNiArNjAxLDggQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgICAgICAg
ICAgICAgICAgICBhdXRvJiByZWNvdmVyeSA9IHZhbHVlc1tpICsgdG1wT2Zmc2V0XTsKICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyB3aGF0IHRoZSBGVEwgZG9lcyBh
bmQgbWF0ZXJpYWxpemUgYWxsIHRoZSBKU1ZhbHVlcyBpbnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4K
ICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNobmlxdWUoKSkgeworCisj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDb25zdGFudDoKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlY292ZXJ5LmNvbnN0
YW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYxMSwzMSArNjEzLDUx
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwg
Y29uc3QgT1NSRXhpdCYgZXhpdCwgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICB9CiAKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAg
ICAgICAgICAgICAgICBjYXNlIEluUGFpcjoKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBj
YXNlIEluR1BSOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgorICAgICAgICAgICAg
ICAgICAgICBjYXNlIEluR1BSOgogICAgICAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZElu
SlNTdGFjazogewogICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0g
cmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4odG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjogewotI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjogewor
ICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0ganNCb29sZWFuKHN0
YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRtcE9mZnNldF0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyNlbHNlIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RhbnQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSByZWNvdmVyeS5jb25zdGFu
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQz
MkRpc3BsYWNlZEluSlNTdGFjazogeworICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRl
LT50bXBzW2ldID0ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4odG1wU2NyYXRjaFtpICsg
dG1wT2Zmc2V0XSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBjYXNlIEluUGFpcjoKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHRt
cFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwotI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94
ZWRDZWxsSW5HUFI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IqIHZhbHVlRGVzY3JpcHRvciA9IGJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yKj4odG1wU2NyYXRjaCArIGkgKyB0bXBPZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgc2lkZVN0YXRlLT50bXBzW2ldID0gSlNWYWx1ZShKU1ZhbHVlOjpDZWxsVGFnLCB2YWx1ZURl
c2NyaXB0b3ItPmFzQml0cy5wYXlsb2FkKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBj
YXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VW5ib3hlZEJvb2xlYW5JbkdQUjogewogICAgICAgICAgICAgICAgICAgICAgICAgc2lkZVN0YXRl
LT50bXBzW2ldID0ganNCb29sZWFuKHN0YXRpY19jYXN0PGJvb2w+KHRtcFNjcmF0Y2hbaSArIHRt
cE9mZnNldF0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IAogICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CmluZGV4IDQ3OGNjMDdlYzZmNTUyZDI0NjI1NGNlYzMxMDAzZWI2NjU4NmI4ZDIuLmM0ZDc1N2Ew
YzgxZTVlZThhNGQ0NmM2NTI4NDQ1MzUyMDFkNjlhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtNDQzLDYgKzQ0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCB0
YWcpOworICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklE
KTsKIAogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkSG90UGF0aChjb25zdCBJZGVudGlmaWVy
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBk
MTQwYWFjOWJlMmQ1NDAzZDFiYzBkOTkxMmFlOWUxMDVmODBkNDMzLi5jZmZmN2U2NjdhYmU3ODIw
NjBlNWU5NDViODM2MTk1NjkxNzc1NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCkBAIC0xLDQgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgogICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjksNiAr
MzEsNyBAQAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNs
dWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgpAQCAt
MzksNiArNDIsNyBAQAogI2luY2x1ZGUgIk9wY29kZUlubGluZXMuaCIKICNpbmNsdWRlICJSZXN1
bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2V0dXBWYXJhcmdzRnJhbWUuaCIKKyNpbmNsdWRlICJTbG93
UGF0aENhbGwuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlRodW5r
R2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtNDks
NyArNTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjplbWl0UHV0Q2FsbFJl
c3VsdChjb25zdCBPcCYgYnl0ZWNvZGUpCiB7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jaykpOwotICAgIGVtaXRTdG9yZShieXRlY29kZS5t
X2RzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0U3RvcmUoZGVzdGluYXRpb25Gb3IoYnl0ZWNv
ZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3RlcigpLCByZWdU
MSwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE1Miw5ICsxNTYsMTAgQEAgc3RkOjplbmFibGVfaWZf
dDwKICwgdm9pZD4KIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBD
YWxsTGlua0luZm8qKQogeworICAgIHVuc2lnbmVkIGNoZWNrcG9pbnQgPSBtX2J5dGVjb2RlSW5k
ZXguY2hlY2twb2ludCgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEo
bV9jb2RlQmxvY2spOwotICAgIGludCBhcmdDb3VudCA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBp
bnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50PihieXRlY29kZS5tX2FyZ3YpOwor
ICAgIGludCBhcmdDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVjb2Rl
LCBjaGVja3BvaW50KTsKKyAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAtc3RhdGljX2Nhc3Q8aW50
PihzdGFja09mZnNldEluUmVnaXN0ZXJzRm9yQ2FsbChieXRlY29kZSwgY2hlY2twb2ludCkpOwog
CiAgICAgaWYgKE9wOjpvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmco
KSkgewogICAgICAgICBlbWl0TG9hZChWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBD
YWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSksIHJlZ1QwLCByZWdUMSk7
CkBAIC0yNjksNyArMjc0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYWxsTGlua0luZm9JbmQKIHsKICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IE9wOjpvcGNvZGVJRDsKICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBieXRlY29kZS5t
X2NhbGxlZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlID0gY2FsbGVlRm9yKGJ5dGVjb2Rl
LCBtX2J5dGVjb2RlSW5kZXguY2hlY2twb2ludCgpKTsKIAogICAgIC8qIENhbGxlciBhbHdheXM6
CiAgICAgICAgIC0gVXBkYXRlcyBjYWxsRnJhbWVSZWdpc3RlciB0byBjYWxsZWUgY2FsbEZyYW1l
LgpAQCAtMzY2LDI0ICszNzEsMjYzIEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xvd0Nhc2Uo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFCiAgICAgZW1p
dFB1dENhbGxSZXN1bHQoYnl0ZWNvZGUpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRv
cl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX29w
ZW4oY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uKQogewotICAgIFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOworICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVy
YXRvck9wZW4+KCk7CisgICAgYXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6
IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X25hcnJvdzsKKyAgICAgICAgY2FzZSBXaWRl
MTY6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNjsKKyAgICAgICAgY2FzZSBX
aWRlMzI6IHJldHVybiBpdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMjsKKyAgICAgICAgZGVm
YXVsdDogUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7
CisKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGluc3RydWN0aW9uLCB0
cnlGYXN0RnVuY3Rpb24pOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgSnVtcCBmYXN0
Q2FzZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJpYykpKTsK
KworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOworCisgICAgVmlydHVhbFJlZ2lzdGVyIHZyID0gZGVzdGluYXRpb25G
b3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3Rl
cigpOworICAgIGFkdmFuY2VUb05leHRDaGVja3BvaW50KCk7CisgICAgCisgICAgLy8gY2FsbCBy
ZXN1bHQgKGl0ZXJhdG9yKSBpcyBpbiByZWdUMSAodGFnKS9yZWdUMCAocGF5bG9hZCkKKyAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZ2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQ7CisgICAg
CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHZyLCByZWdUMSk7CisKKyAgICBHUFJS
ZWcgdGFnSXRlcmF0b3JHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgcGF5bG9hZEl0ZXJhdG9yR1BS
ID0gcmVnVDA7CisKKyAgICBHUFJSZWcgdGFnTmV4dEdQUiA9IHRhZ0l0ZXJhdG9yR1BSOworICAg
IEdQUlJlZyBwYXlsb2FkTmV4dEdQUiA9IHBheWxvYWRJdGVyYXRvckdQUjsKKworICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAgICAgQ29kZU9y
aWdpbihtX2J5dGVjb2RlSW5kZXgpLAorICAgICAgICBDYWxsU2l0ZUluZGV4KEJ5dGVjb2RlSW5k
ZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCisgICAgICAgIFJlZ2lzdGVyU2V0OjpzdHVi
VW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3Jl
YXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVudC0+aW1wbCgpKSwKKyAgICAgICAgSlNWYWx1
ZVJlZ3ModGFnSXRlcmF0b3JHUFIsIHBheWxvYWRJdGVyYXRvckdQUiksCisgICAgICAgIEpTVmFs
dWVSZWdzKHRhZ05leHRHUFIsIHBheWxvYWROZXh0R1BSKSwKKyAgICAgICAgQWNjZXNzVHlwZTo6
R2V0QnlJZCk7CisgICAgCisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fbmV4dCwgSlNW
YWx1ZVJlZ3ModGFnTmV4dEdQUiwgcGF5bG9hZE5leHRHUFIpKTsKKworICAgIGZhc3RDYXNlLmxp
bmsodGhpcyk7CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0
IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBj
b21waWxlT3BDYWxsU2xvd0Nhc2U8T3BJdGVyYXRvck9wZW4+KGluc3RydWN0aW9uLCBpdGVyLCBt
X2NhbGxMaW5rSW5mb0luZGV4KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2lu
dChqdW1wKCkpOworCisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIEdQUlJlZyB0
YWdJdGVyYXRvckdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyBwYXlsb2FkSXRlcmF0b3JHUFIgPSBy
ZWdUMDsKKworICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKKyAgICBub3RPYmplY3QuYXBwZW5kKGJy
YW5jaElmTm90Q2VsbCh0YWdJdGVyYXRvckdQUikpOworICAgIG5vdE9iamVjdC5hcHBlbmQoYnJh
bmNoSWZOb3RPYmplY3QocGF5bG9hZEl0ZXJhdG9yR1BSKSk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOworICAgIFZpcnR1YWxSZWdpc3Rl
ciBuZXh0VlJlZyA9IGJ5dGVjb2RlLm1fbmV4dDsKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRl
bnQgPSB2bSgpLnByb3BlcnR5TmFtZXMtPm5leHQuaW1wbCgpOworCisgICAgSklUR2V0QnlJZEdl
bmVyYXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVy
YXRpb25XaXRoUHJvZmlsZSgKKyAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCAvLyBtZXRhZGF0YQorICAgICAgICBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIC8vIG9wZXJh
dGlvbgorICAgICAgICBuZXh0VlJlZywgLy8gcmVzdWx0CisgICAgICAgIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgLy8gYXJnMQorICAgICAgICBnZW4uc3R1Yklu
Zm8oKSwgLy8gYXJnMgorICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVyYXRvckdQUiwgcGF5bG9h
ZEl0ZXJhdG9yR1BSKSwgLy8gYXJnMworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50KS5yYXdCaXRzKCkpOyAvLyBhcmc0CisgICAg
CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICBh
dXRvIGRvbmUgPSBqdW1wKCk7CisKKyAgICBub3RPYmplY3QubGluayh0aGlzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRocm93SXRlcmF0b3JSZXN1bHRJc05vdE9iamVjdCwgVHJ1c3Rl
ZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpKTsKKworICAgIGRvbmUubGluayh0
aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dChjb25zdCBJbnN0cnVj
dGlvbiopCit2b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbikKIHsKLSAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOworICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIGF1dG8q
IHRyeUZhc3RGdW5jdGlvbiA9IChbJl0gKCkgeworICAgICAgICBzd2l0Y2ggKGluc3RydWN0aW9u
LT53aWR0aCgpKSB7CisgICAgICAgIGNhc2UgTmFycm93OiByZXR1cm4gaXRlcmF0b3JfbmV4dF90
cnlfZmFzdF9uYXJyb3c7CisgICAgICAgIGNhc2UgV2lkZTE2OiByZXR1cm4gaXRlcmF0b3JfbmV4
dF90cnlfZmFzdF93aWRlMTY7CisgICAgICAgIGNhc2UgV2lkZTMyOiByZXR1cm4gaXRlcmF0b3Jf
bmV4dF90cnlfZmFzdF93aWRlMzI7CisgICAgICAgIGRlZmF1bHQ6IFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KSgpOworCisgICAgSlNWYWx1ZVJlZ3MgbmV4
dFJlZ3MocmVnVDEsIHJlZ1QwKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2Rl
Lm1fbmV4dCwgbmV4dFJlZ3MpOworICAgIEp1bXAgZ2VuZXJpY0Nhc2UgPSBicmFuY2hJZk5vdEVt
cHR5KG5leHRSZWdzKTsKKworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
aW5zdHJ1Y3Rpb24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
KyAgICBKdW1wIGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSMiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2Rl
OjpHZW5lcmljKSkpOworCisgICAgZ2VuZXJpY0Nhc2UubGluayh0aGlzKTsKKyAgICBvcjgoVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEl0ZXJhdGlvbk1vZGU6OkdlbmVyaWMpKSwg
QWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX2l0ZXJhdGlvbk1ldGFkYXRhLnNlZW5Nb2Rlcykp
OworICAgIGNvbXBpbGVPcENhbGw8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBtX2NhbGxM
aW5rSW5mb0luZGV4KyspOworICAgIGFkdmFuY2VUb05leHRDaGVja3BvaW50KCk7CisgICAgLy8g
Y2FsbCByZXN1bHQgKHsgZG9uZSwgdmFsdWUgfSBKU09iamVjdCkgaW4gcmVnVDEsIHJlZ1QwCisK
KyAgICBHUFJSZWcgdGFnVmFsdWVHUFIgPSByZWdUMTsKKyAgICBHUFJSZWcgcGF5bG9hZFZhbHVl
R1BSID0gcmVnVDA7CisgICAgICAgIAorICAgIEdQUlJlZyB0YWdEb25lR1BSID0gcmVnVDU7Cisg
ICAgR1BSUmVnIHBheWxvYWREb25lR1BSID0gcmVnVDQ7CisKKyAgICB7CisgICAgICAgIEdQUlJl
ZyB0YWdJdGVyUmVzdWx0R1BSID0gcmVnVDM7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkSXRlclJl
c3VsdEdQUiA9IHJlZ1QyOworICAgICAgICAKKyAgICAgICAgLy8gaXRlclJlc3VsdEdQUiB3aWxs
IGdldCB0cmFzaGVkIGJ5IHRoZSBmaXJzdCBnZXQgYnkgaWQgYmVsb3cuCisgICAgICAgIG1vdmUo
cmVnVDEsIHRhZ0l0ZXJSZXN1bHRHUFIpOworICAgICAgICBtb3ZlKHJlZ1QwLCBwYXlsb2FkSXRl
clJlc3VsdEdQUik7CisKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHRhZ0l0
ZXJSZXN1bHRHUFIpOworCisgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZFJlZ3MgPSBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCk7CisgICAgICAgIHByZXNlcnZlZFJl
Z3MuYWRkKHRhZ1ZhbHVlR1BSKTsKKyAgICAgICAgcHJlc2VydmVkUmVncy5hZGQocGF5bG9hZFZh
bHVlR1BSKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBt
X2NvZGVCbG9jaywKKyAgICAgICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKKyAg
ICAgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zm
c2V0KCkpKSwKKyAgICAgICAgICAgIHByZXNlcnZlZFJlZ3MsCisgICAgICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVydHlO
YW1lcy0+ZG9uZS5pbXBsKCkpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFnSXRlclJlc3Vs
dEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFn
RG9uZUdQUiwgcGF5bG9hZERvbmVHUFIpLAorICAgICAgICAgICAgQWNjZXNzVHlwZTo6R2V0QnlJ
ZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAgYWRkU2xv
d0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAgICAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RvbmUsIEpTVmFsdWVSZWdzKHRhZ0Rv
bmVHUFIsIHBheWxvYWREb25lR1BSKSk7CisgICAgICAgIGFkdmFuY2VUb05leHRDaGVja3BvaW50
KCk7CisgICAgfQorCisgICAgeworICAgICAgICBHUFJSZWcgdGFnSXRlclJlc3VsdEdQUiA9IHJl
Z1QxOworICAgICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJSZXN1bHRHUFIgPSByZWdUMDsKKworICAg
ICAgICBHUFJSZWcgc2NyYXRjaDEgPSByZWdUNjsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gyID0g
cmVnVDc7CisgICAgICAgIGNvbnN0IGJvb2wgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkID0gZmFsc2U7CisgICAgICAgIEp1bXBMaXN0IGl0ZXJhdGlvbkRvbmUgPSBicmFuY2hJZlRy
dXRoeSh2bSgpLCBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUiksIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgZnBSZWdUMCwgZnBSZWdUMSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgICAgIEpJVEdl
dEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICAgICAgbV9jb2RlQmxvY2ssCisgICAgICAgICAg
ICBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgICAgICBDYWxsU2l0ZUluZGV4
KEJ5dGVjb2RlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKSksCisgICAgICAgICAgICBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKHZtKCkucHJvcGVy
dHlOYW1lcy0+dmFsdWUuaW1wbCgpKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJS
ZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHRhZ1ZhbHVlR1BSLCBwYXlsb2FkVmFsdWVHUFIpLAorICAgICAgICAgICAgQWNjZXNzVHlwZTo6
R2V0QnlJZCk7CisgICAgICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICAgICAg
YWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICAgICAgbV9nZXRCeUlkcy5hcHBl
bmQoZ2VuKTsKKworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKG1ldGFkYXRhKTsKKyAg
ICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCBKU1ZhbHVlUmVn
cyh0YWdWYWx1ZUdQUiwgcGF5bG9hZFZhbHVlR1BSKSk7CisKKyAgICAgICAgaXRlcmF0aW9uRG9u
ZS5saW5rKHRoaXMpOworICAgIH0KKworICAgIGZhc3RDYXNlLmxpbmsodGhpcyk7CiB9CiAKLXZv
aWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaXRl
cmF0b3JfbmV4dChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7Ci0gICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKyAgICBjb21waWxlT3BDYWxsU2xvd0Nh
c2U8T3BJdGVyYXRvck5leHQ+KGluc3RydWN0aW9uLCBpdGVyLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOworICAgIGVtaXRKdW1wU2xvd1RvSG90Rm9yQ2hlY2twb2ludChqdW1wKCkpOworCisgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yTmV4dD4oKTsKKyAgICB7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkb25lVlJlZyA9IGJ5dGVjb2RlLm1fZG9uZTsKKyAg
ICAgICAgR1BSUmVnIHRhZ1ZhbHVlR1BSID0gcmVnVDE7CisgICAgICAgIEdQUlJlZyBwYXlsb2Fk
VmFsdWVHUFIgPSByZWdUMDsKKyAgICAgICAgICAgIAorICAgICAgICBHUFJSZWcgdGFnSXRlclJl
c3VsdEdQUiA9IHJlZ1QzOworICAgICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJSZXN1bHRHUFIgPSBy
ZWdUMjsKKyAgICAgICAgCisgICAgICAgIEdQUlJlZyB0YWdEb25lR1BSID0gcmVnVDU7CisgICAg
ICAgIEdQUlJlZyBwYXlsb2FkRG9uZUdQUiA9IHJlZ1Q0OworCisgICAgICAgIGxpbmtBbGxTbG93
Q2FzZXMoaXRlcik7CisgICAgICAgIEp1bXBMaXN0IG5vdE9iamVjdDsKKyAgICAgICAgbm90T2Jq
ZWN0LmFwcGVuZChicmFuY2hJZk5vdENlbGwodGFnSXRlclJlc3VsdEdQUikpOworICAgICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90T2JqZWN0KHBheWxvYWRJdGVyUmVzdWx0R1BSKSk7
CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5wcm9wZXJ0eU5hbWVz
LT5kb25lLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVyYXRvciYgZ2VuID0gbV9nZXRC
eUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKyAgICAgICAgCisgICAgICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOworCisgICAgICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb25XaXRo
UHJvZmlsZSgKKyAgICAgICAgICAgIGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSwgLy8g
bWV0YWRhdGEKKyAgICAgICAgICAgIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgLy8gb3BlcmF0
aW9uCisgICAgICAgICAgICBkb25lVlJlZywgLy8gcmVzdWx0CisgICAgICAgICAgICBUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIC8vIGFyZzEKKyAgICAgICAgICAg
IGdlbi5zdHViSW5mbygpLCAvLyBhcmcyCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVy
UmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksIC8vIGFyZzMKKyAgICAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJh
d0JpdHMoKSk7IC8vIGFyZzQKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQ
YXRoQmVnaW4sIGNhbGwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGRvbmVWUmVn
LCBKU1ZhbHVlUmVncyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUikpOworICAgICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIEpTVmFsdWVSZWdzKHRhZ1ZhbHVl
R1BSLCBwYXlsb2FkVmFsdWVHUFIpKTsKKyAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVj
a3BvaW50KGp1bXAoKSk7CisKKyAgICAgICAgbm90T2JqZWN0LmxpbmsodGhpcyk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworICAgIH0KKworICAg
IHsgICAKKyAgICAgICAgR1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMTsKKyAgICAgICAg
R1BSUmVnIHBheWxvYWRJdGVyUmVzdWx0R1BSID0gcmVnVDA7CisKKyAgICAgICAgbGlua0FsbFNs
b3dDYXNlcyhpdGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZhbHVlVlJlZyA9IGJ5dGVj
b2RlLm1fdmFsdWU7CisKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50ID0gdm0oKS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCk7CisgICAgICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Im
IGdlbiA9IG1fZ2V0QnlJZHNbbV9nZXRCeUlkSW5kZXgrK107CisKKyAgICAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKAorICAgICAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCAvLyBtZXRhZGF0YQorICAgICAgICAgICAgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCAvLyBv
cGVyYXRpb24KKyAgICAgICAgICAgIHZhbHVlVlJlZywgLy8gcmVzdWx0CisgICAgICAgICAgICBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIC8vIGFyZzEKKyAgICAg
ICAgICAgIGdlbi5zdHViSW5mbygpLCAvLyBhcmcyCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh0
YWdJdGVyUmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksIC8vIGFyZzMKKyAgICAgICAg
ICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRl
bnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQKKworICAgICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IGQ1M2U2OTc3ZDM5ZDc1OWU2
NzQxMmZkOWFkMWI5ZTY3ODJiOTdkMzEuLjJmNzZkYjAwNjkyMTE4YWY4NTJlNzA2Mjk1MDI3NDI5
OTg1YWNmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC02MTYs
MTEgKzYxNiw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZkpT
Q2VsbChSZWdpc3RlcklEIHJlZykKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZkNlbGwocmVnKSk7
CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChSZWdpc3RlcklEIHJlZykKLXsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVn
KSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChSZWdpc3RlcklEIHJlZywgVmlydHVhbFJlZ2lzdGVyIHZSZWcpCiB7CiAgICAgaWYgKCFt
X2NvZGVCbG9jay0+aXNLbm93bkNlbGwodlJlZykpCkBAIC02NTYsNiArNjUxLDExIEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcihSZWdpc3RlcklE
IHJlZykKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0FMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChSZWdpc3RlcklEIHJlZykKK3sKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnKSk7Cit9CisKIEFMV0FZU19JTkxJTkUg
aW50IEpJVDo6anVtcFRhcmdldChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGludCB0
YXJnZXQpCiB7CiAgICAgaWYgKHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggZDk0MTEyYjgx
YTljOTBmNzgzNDFhODA1ZWUzMjA0NWE1YzBlMDY0NS4uMjc1MDY5MGEyZmY4MDljMjQ2NjNjMDhm
NWI2ZDMyYWJlMzhiODg0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTQ4OCw2ICs0ODgsOSBAQCBt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCiAgICAgICAgIGVuZCkKIGVuZAogCisjIGxv
YWRWYXJpYWJsZSBsb2FkcyB0aGUgdmFsdWUgb2YgZmllbGQgZmllbGROYW1lIHVzaW5nIG1hY3Jv
IGdldAorIyBpbnRvIHJlZ2lzdGVyIHRhZ1JlZyBhbmQgcGF5bG9hZFJlZworIyBDbG9iYmVyczog
aW5kZXhSZWcKIG1hY3JvIGxvYWRWYXJpYWJsZShnZXQsIGZpZWxkTmFtZSwgaW5kZXhSZWcsIHRh
Z1JlZywgcGF5bG9hZFJlZykKICAgICBnZXQoZmllbGROYW1lLCBpbmRleFJlZykKICAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCBpbmRleFJlZywgOF0sIHRhZ1JlZwpAQCAtNjUxLDcgKzY1NCw3IEBA
IG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KHNpemUsIGdldCwg
dmFsdWVGaWVsZE5hbWUpCiBlbmQKIAogbWFjcm8gdmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwg
cHJvZmlsZU5hbWUsIG1ldGFkYXRhLCB0YWcsIHBheWxvYWQpCi0gICAgc3RvcmVpIHRhZywgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX3Byb2ZpbGUubV9idWNrZXRzICsgVGFnT2Zmc2V0W21l
dGFkYXRhXQorICAgIHN0b3JlaSB0YWcsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2Zp
bGVOYW1lJS5tX2J1Y2tldHMgKyBUYWdPZmZzZXRbbWV0YWRhdGFdCiAgICAgc3RvcmVpIHBheWxv
YWQsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JXByb2ZpbGVOYW1lJS5tX2J1Y2tldHMgKyBQ
YXlsb2FkT2Zmc2V0W21ldGFkYXRhXQogZW5kCiAKQEAgLTE0MTAsNiArMTQxMyw1MyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZF9kaXJlY3QsIE9wR2V0QnlJZERpcmVjdCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcAogICAgIGRpc3BhdGNoKCkKIGVuZCkKIAorIyBBc3N1bXB0aW9u
OiBUaGUgYmFzZSBvYmplY3QgaXMgaW4gdDMKKyMgRklYTUU6IHRoaXMgaXMgdmVyeSBjbG9zZSB0
byB0aGUgNjRiaXQgdmVyc2lvbi4gQ29uc2lkZXIgcmVmYWN0b3JpbmcuCittYWNybyBwZXJmb3Jt
R2V0QnlJREhlbHBlcihvcGNvZGVTdHJ1Y3QsIG1vZGVNZXRhZGF0YU5hbWUsIHZhbHVlUHJvZmls
ZU5hbWUsIHNsb3dMYWJlbCwgc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0
MiwgdDEpCisgICAgbG9hZGIgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRh
TmFtZSUubW9kZVt0Ml0sIHQxCisgICAgICAgIAorLm9wR2V0QnlJZERlZmF1bHQ6CisgICAgYmJu
ZXEgdDEsIGNvbnN0ZXhwciBHZXRCeUlkTW9kZTo6RGVmYXVsdCwgLm9wR2V0QnlJZFByb3RvTG9h
ZAorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxICMgYXNzdW1lcyBiYXNl
IG9iamVjdCBpbiB0MworICAgIGxvYWRpICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVN
ZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0
MCwgdDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVt
b2RlTWV0YWRhdGFOYW1lJS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXRbdDJdLCB0MQorICAgIGxv
YWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQcm9m
aWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICByZXR1
cm4odDAsIHQxKQorCisub3BHZXRCeUlkUHJvdG9Mb2FkOgorICAgIGJibmVxIHQxLCBjb25zdGV4
cHIgR2V0QnlJZE1vZGU6OlByb3RvTG9hZCwgLm9wR2V0QnlJZEFycmF5TGVuZ3RoCisgICAgbG9h
ZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKKyAgICBsb2FkaSAlb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlE
W3QyXSwgdDMKKyAgICBiaW5lcSB0MywgdDEsIHNsb3dMYWJlbAorICAgIGxvYWRpcyAlb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hl
ZE9mZnNldFt0Ml0sIHQxCisgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9k
ZU1ldGFkYXRhTmFtZSUucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90W3QyXSwgdDMKKyAgICBsb2Fk
UHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDAsIHQxKQorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCB0MCwgdDEpCisgICAgcmV0dXJu
KHQwLCB0MSkKKworLm9wR2V0QnlJZEFycmF5TGVuZ3RoOgorICAgIGJibmVxIHQxLCBjb25zdGV4
cHIgR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoLCAub3BHZXRCeUlkVW5zZXQKKyAgICBtb3ZlIHQz
LCB0MAorICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQorICAg
IGJ0aXogdDAsIElzQXJyYXksIHNsb3dMYWJlbAorICAgIGJ0aXogdDAsIEluZGV4aW5nU2hhcGVN
YXNrLCBzbG93TGFiZWwKKyAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MAor
ICAgIGxvYWRpIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnB1YmxpY0xlbmd0aFt0MF0sIHQwCisgICAgYmlsdCB0MCwgMCwgc2xvd0xhYmVsCisgICAg
dmFsdWVQcm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIEludDMyVGFn
LCB0MCkKKyAgICByZXR1cm4oSW50MzJUYWcsIHQwKQorICAgIAorLm9wR2V0QnlJZFVuc2V0Ogor
ICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCisgICAgbG9hZGkgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjolbW9kZU1ldGFkYXRhTmFtZSUudW5zZXRNb2RlLnN0cnVjdHVy
ZUlEW3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIHNsb3dMYWJlbAorICAgIHZhbHVlUHJvZmls
ZShvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIHQyLCBVbmRlZmluZWRUYWcsIDApCisg
ICAgcmV0dXJuKFVuZGVmaW5lZFRhZywgMCkKKworZW5kCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1LCB0MCkKQEAgLTE5ODIsNiArMjAzMiwzMCBA
QCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKIC5kb25lOgog
ZW5kCiAKK21hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVj
dCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBwcmVwYXJlQ2FsbCwgc2l6
ZSwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50U3RhcnQsIGdldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAgIG1ldGFkYXRhKHQ1LCB0MCkKKyAgICBnZXRD
YWxsZWUodDApCisKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcENh
bGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBnZXRBcmd1bWVudFN0
YXJ0KHQzKQorICAgIGxzaGlmdGkgMywgdDMKKyAgICBuZWdpIHQzCisgICAgYWRkcCBjZnIsIHQz
ICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgc3RvcmVpIHQyLCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGdldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KHQyKSAgICAKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFn
T2Zmc2V0W2Nmcl0KKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0
W3QzXQorICAgIG1vdmUgdDMsIHNwCisgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0
NCwgSlNFbnRyeVB0clRhZykKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6
ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRp
c3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGlu
ZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93
UGF0aEZvckNhbGwob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVO
YW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwp
CitlbmQKKyAgICAgICAgCiBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgs
IG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTk5MCwy
NSArMjA2NCwxOSBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9w
Y29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICAgICAgZ2V0dShzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGZpZWxkTmFtZSwgZHN0KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQog
Ci0gICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExp
bmtCaXRbdDVdLCB0MgotICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXpl
LCB0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQotICAgICAgICBiaW5lcSB0MywgdDIsIC5v
cENhbGxTbG93Ci0gICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQot
ICAgICAgICBsc2hpZnRpIDMsIHQzCi0gICAgICAgIG5lZ2kgdDMKLSAgICAgICAgYWRkcCBjZnIs
IHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCi0gICAgICAgIHN0b3JlaSB0
MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVT
dHJ1Y3QsIG1fYXJnYywgdDIpCi0gICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXQotICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICsgUGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgc3RvcmVpIENlbGxU
YWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KLSAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAg
cHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21h
Y2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAg
Y2FsbFRhcmdldEZ1bmN0aW9uKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9m
aWxlLCBtX2RzdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIG1h
Y3JvIGdldENhbGxlZShkc3QpCisgICAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCisgICAgICAg
IGVuZAogCi0gICAgLm9wQ2FsbFNsb3c6Ci0gICAgICAgIHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVO
YW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIGRpc3BhdGNoLCBzbG93
UGF0aCwgcHJlcGFyZUNhbGwpCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50U3RhcnQoZHN0KQor
ICAgICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgZHN0KQorICAgICAg
ICBlbmQKKworICAgICAgICBtYWNybyBnZXRBcmd1bWVudENvdW50KGRzdCkKKyAgICAgICAgICAg
IGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ2MsIGRzdCkKKyAgICAgICAgZW5kCisgICAg
ICAgIAorICAgICAgICBjYWxsSGVscGVyKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIG1fcHJvZmlsZSwgbV9kc3QsIHByZXBhcmVDYWxsLCBzaXplLCBkaXNwYXRjaCwgbWV0YWRh
dGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwgZ2V0QXJndW1lbnRDb3VudCkKICAgICBl
bmQpCiBlbmQKIApAQCAtMjY0MiwyNSArMjcxMCwxNTAgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
Z2V0X3Jlc3RfbGVuZ3RoLCBPcEdldFJlc3RMZW5ndGgsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGMKICAgICByZXR1cm4oSW50MzJUYWcsIHQwKQogZW5kKQogCi1sbGludE9wKG9wX2l0ZXJhdG9y
X29wZW4sIE9wSXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCkKLSAgICBk
ZWZpbmVPU1JFeGl0UmV0dXJuTGFiZWwob3BfaXRlcmF0b3Jfb3Blbiwgc2l6ZSkKLSAgICBicmVh
awotICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCi0gICAgICAgICMgSW5zZXJ0IHN1cGVyZmxv
dXMgY2FsbCByZXR1cm4gbGFiZWxzIGZvciBDbG9vcC4KLSAgICAgICAgY2xvb3BDYWxsSlNGdW5j
dGlvbiBhMCAjIHN5bWJvbEl0ZXJhdG9yCi0gICAgICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAg
IyBnZXQgbmV4dAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9vcGVuLCBPcEl0ZXJh
dG9yT3BlbiwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisg
ICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Bl
bl90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAg
ICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jfb3Blbl90cnlfZmFzdF93aWRlMTYpCisgICAgZW5k
CisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jf
b3Blbl90cnlfZmFzdF93aWRlMzIpCisgICAgZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0
V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAoY2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAj
IEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdz
IHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVxIHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6
R2VuZXJpYywgLml0ZXJhdG9yT3BlbkdlbmVyaWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRv
ck9wZW5HZW5lcmljOgorICAgIG1hY3JvIGdvdG9HZXRCeUlkQ2hlY2twb2ludCgpCisgICAgICAg
IGptcCAuZ2V0QnlJZFN0YXJ0CiAgICAgZW5kCisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQor
ICAgICAgICBnZXQobV9zeW1ib2xJdGVyYXRvciwgZHN0KQorICAgIGVuZAorCisgICAgbWFjcm8g
Z2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzU3RhcnQoZHN0KQorICAgICAgICBnZXR1KHNpemUsIE9w
SXRlcmF0b3JPcGVuLCBtX3N0YWNrT2Zmc2V0LCBkc3QpCisgICAgZW5kCisKKyAgICBtYWNybyBn
ZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudChkc3QpCisgICAgICAgIG1vdmUgMSwgZHN0Cisg
ICAgZW5kCisKKyAgICBjYWxsSGVscGVyKG9wX2l0ZXJhdG9yX29wZW4sIF9sbGludF9zbG93X3Bh
dGhfaXRlcmF0b3Jfb3Blbl9jYWxsLCBPcEl0ZXJhdG9yT3BlbiwgbV9pdGVyYXRvclByb2ZpbGUs
IG1faXRlcmF0b3IsIHByZXBhcmVGb3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldEJ5SWRDaGVj
a3BvaW50LCBtZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFy
dCwgZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQpCisKKy5nZXRCeUlkU3RhcnQ6CisgICAg
bWFjcm8gc3RvcmVOZXh0QW5kRGlzcGF0Y2godmFsdWVUYWcsIHZhbHVlUGF5bG9hZCkKKyAgICAg
ICAgbW92ZSB2YWx1ZVRhZywgdDIKKyAgICAgICAgbW92ZSB2YWx1ZVBheWxvYWQsIHQzCisgICAg
ICAgIGdldChtX25leHQsIHQxKQorICAgICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAg
ICAgZGlzcGF0Y2goKQorICAgIGVuZAorCisgICAgIyBXZSBuZWVkIHRvIGxvYWQgbV9pdGVyYXRv
ciBpbnRvIHQzIGJlY2F1c2UgdGhhdCdzIHdoZXJlCisgICAgIyBwZXJmb3JtR2V0QnlJREhlbHBl
ciBleHBlY3RzIHRoZSBiYXNlIG9iamVjdCAgICAKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX2l0
ZXJhdG9yLCB0MywgdDAsIHQzKQorICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAuaXRlcmF0b3JPcGVu
R2VuZXJpY0dldE5leHRTbG93CisgICAgcGVyZm9ybUdldEJ5SURIZWxwZXIoT3BJdGVyYXRvck9w
ZW4sIG1fbW9kZU1ldGFkYXRhLCBtX25leHRQcm9maWxlLCAuaXRlcmF0b3JPcGVuR2VuZXJpY0dl
dE5leHRTbG93LCBzaXplLCBtZXRhZGF0YSwgc3RvcmVOZXh0QW5kRGlzcGF0Y2gpCisKKy5pdGVy
YXRvck9wZW5HZW5lcmljR2V0TmV4dFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfaXRlcmF0b3Jfb3Blbl9nZXRfbmV4dCkKKyAgICBkaXNwYXRjaCgpCiBlbmQpCiAKLWxs
aW50T3Aob3BfaXRlcmF0b3JfbmV4dCwgT3BJdGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoKQotICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9uZXh0
LCBzaXplKQotICAgIGJyZWFrCi0gICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAg
IyBJbnNlcnQgc3VwZXJmbG91cyBjYWxsIHJldHVybiBsYWJlbHMgZm9yIENsb29wLgotICAgICAg
ICAjIEZJWE1FOiBOb3Qgc3VyZSB3aHkgdHdvIGFyZSBvbmx5IG5lZWRlZC4uLgotICAgICAgICBj
bG9vcENhbGxKU0Z1bmN0aW9uIGEwICMgbmV4dAotICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9u
IGEwICMgZ2V0IGRvbmUKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfaXRlcmF0b3JfbmV4dCwgT3BJ
dGVyYXRvck5leHQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgICAgICAKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBtX25leHQsIHQwLCB0MSwgdDApCisg
ICAgYmllcSB0MSwgVW5kZWZpbmVkVGFnLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworICAgIGJ0aW56
IHQwLCAuaXRlcmF0b3JOZXh0R2VuZXJpYworCisgICAgbWFjcm8gZmFzdE5hcnJvdygpCisgICAg
ICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF9uYXJyb3cpCisgICAgZW5k
CisgICAgbWFjcm8gZmFzdFdpZGUxNigpCisgICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3Jf
bmV4dF90cnlfZmFzdF93aWRlMTYpCisgICAgZW5kCisgICAgbWFjcm8gZmFzdFdpZGUzMigpCisg
ICAgICAgIGNhbGxTbG93UGF0aChfaXRlcmF0b3JfbmV4dF90cnlfZmFzdF93aWRlMzIpCisgICAg
ZW5kCisgICAgc2l6ZShmYXN0TmFycm93LCBmYXN0V2lkZTE2LCBmYXN0V2lkZTMyLCBtYWNybyAo
Y2FsbE9wKSBjYWxsT3AoKSBlbmQpCisKKyAgICAjIEZJWE1FOiBXZSBzaG91bGQgZG8gdGhpcyB3
aXRoIGlubGluZSBhc3NlbWJseSBzaW5jZSBpdCdzIHRoZSAiZmFzdCIgY2FzZS4KKyAgICBiYmVx
IHIxLCBjb25zdGV4cHIgSXRlcmF0aW9uTW9kZTo6R2VuZXJpYywgLml0ZXJhdG9yTmV4dEdlbmVy
aWMKKyAgICBkaXNwYXRjaCgpCisKKy5pdGVyYXRvck5leHRHZW5lcmljOgorICAgIG1hY3JvIGdv
dG9HZXREb25lQ2hlY2twb2ludCgpCisgICAgICAgIGptcCAuZ2V0RG9uZVN0YXJ0CisgICAgZW5k
CisKKyAgICBtYWNybyBnZXRDYWxsZWUoZHN0KQorICAgICAgICBnZXQobV9uZXh0LCBkc3QpCisg
ICAgZW5kCisKKyAgICBtYWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisg
ICAgICAgIGdldHUoc2l6ZSwgT3BJdGVyYXRvck5leHQsIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAg
ICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAg
ICAgICAgbW92ZSAxLCBkc3QKKyAgICBlbmQKKworICAgICMgVXNlIG1fdmFsdWUgc2xvdCBhcyBh
IHRtcCBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gd3JpdGUgdG8gaXQgbGF0ZXIuCisgICAgY2FsbEhl
bHBlcihvcF9pdGVyYXRvcl9uZXh0LCBfbGxpbnRfc2xvd19wYXRoX2l0ZXJhdG9yX25leHRfY2Fs
bCwgT3BJdGVyYXRvck5leHQsIG1fbmV4dFJlc3VsdFByb2ZpbGUsIG1fdmFsdWUsIHByZXBhcmVG
b3JSZWd1bGFyQ2FsbCwgc2l6ZSwgZ290b0dldERvbmVDaGVja3BvaW50LCBtZXRhZGF0YSwgZ2V0
Q2FsbGVlLCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydCwgZ2V0QXJndW1lbnRJbmNsdWRp
bmdUaGlzQ291bnQpCisKKy5nZXREb25lU3RhcnQ6CisgICAgbWFjcm8gc3RvcmVEb25lQW5kSm1w
VG9HZXRWYWx1ZShkb25lVmFsdWVUYWcsIGRvbmVWYWx1ZVBheWxvYWQpCisgICAgICAgIG1vdmUg
ZG9uZVZhbHVlVGFnLCB0MAorICAgICAgICBtb3ZlIGRvbmVWYWx1ZVBheWxvYWQsIHQxCisgICAg
ICAgIGdldChtX2RvbmUsIHQyKQorICAgICAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICAg
ICAgam1wIC5nZXRWYWx1ZVN0YXJ0CiAgICAgZW5kCisKKyAgICBsb2FkVmFyaWFibGUoZ2V0LCBt
X3ZhbHVlLCB0MywgdDAsIHQzKQorICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAuZ2V0RG9uZVNsb3cK
KyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJhdG9yTmV4dCwgbV9kb25lTW9kZU1ldGFk
YXRhLCBtX2RvbmVQcm9maWxlLCAuZ2V0RG9uZVNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZURv
bmVBbmRKbXBUb0dldFZhbHVlKQorCisuZ2V0RG9uZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRfZG9uZSkKKyAgICBicmFuY2hJZkV4Y2Vw
dGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKKyAgICBsb2FkVmFy
aWFibGUoZ2V0LCBtX2RvbmUsIHQxLCB0MCwgdDEpCisKKyAgICAjIHN0b3JlRG9uZUFuZEptcFRv
R2V0VmFsdWUgcHV0cyB0aGUgZG9uZVZhbHVlIGludG8gdDAKKy5nZXRWYWx1ZVN0YXJ0OgorICAg
ICMgSW4gMzIgYml0cywgZm9sbG93aW5nIHNsb3cgcGF0aCBpZiB0YWdzIGlzIG5vdCBudWxsLCB1
bmRlZmluZWQsIGludDMyLCBib29sZWFuLgorICAgICMgVGhlc2Ugc2F0aXNmeSB0aGUgbWFzayB+
MHgzLgorICAgICMgVGhlcmVmb3JlIGlmIHRoZSBtYXNrIGlzIF9ub3RfIHNhdGlzZmllZCwgd2Ug
YnJhbmNoIHRvIHRoZSBzbG93IGNhc2UuCisgICAgYnRpbnogdDAsIH4weDMsIC5nZXRWYWx1ZVNs
b3cKKyAgICBidGl6IHQxLCAweDEsIC5ub3REb25lCisgICAgZGlzcGF0Y2goKQorCisubm90RG9u
ZToKKyAgICBtYWNybyBzdG9yZVZhbHVlQW5kRGlzcGF0Y2godlRhZywgdlBheWxvYWQpCisgICAg
ICAgIG1vdmUgdlRhZywgdDIKKyAgICAgICAgbW92ZSB2UGF5bG9hZCwgdDMKKyAgICAgICAgZ2V0
KG1fdmFsdWUsIHQxKQorICAgICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICAgICAgY2hl
Y2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodDAsIDB4YmFkZGIwMWUpCisgICAgICAgIGRpc3BhdGNo
KCkKKyAgICBlbmQKKworICAgICMgUmVsb2FkIHRoZSBuZXh0IHJlc3VsdCB0bXAgc2luY2UgdGhl
IGdldF9ieV9pZCBhYm92ZSBtYXkgaGF2ZSBjbG9iYmVyZWQgdDMuCisgICAgbG9hZFZhcmlhYmxl
KGdldCwgbV92YWx1ZSwgdDMsIHQwLCB0MykKKyAgICAjIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sg
aWYgdGhlIGl0ZXJhdG9yIHJlc3VsdCBpcyBhIGNlbGwgaGVyZSBzaW5jZSB3ZSB3aWxsIGhhdmUg
dGhyb3duIGFuIGVycm9yIGJlZm9yZS4KKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yTmV4dCwgbV92YWx1ZU1vZGVNZXRhZGF0YSwgbV92YWx1ZVByb2ZpbGUsIC5nZXRWYWx1ZVNs
b3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZVZhbHVlQW5kRGlzcGF0Y2gpCisKKy5nZXRWYWx1ZVNs
b3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9nZXRf
dmFsdWUpCisgICAgZGlzcGF0Y2goKQogZW5kKQogCiBsbGludE9wV2l0aFByb2ZpbGUob3BfZ2V0
X2ludGVybmFsX2ZpZWxkLCBPcEdldEludGVybmFsRmllbGQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGYxYWQzYWYzMjIyMjJhNTMzNWRiNTg4OGIxNTFjYzkyYzg1ODNjOTQu
LmZiNmZjNTliMTAyOGNjODE4ZDY2ZjMwMmZmY2Y4ZmJhMGVjZDIzZDEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMjAtMDctMjcgIFBhdWxvIE1hdG9zICA8cG1hdG9zQGlnYWxpYS5jb20+CisKKyAgICAgICAg
Zm9yLi5vZiBpbnRyaW5zaWNzIGltcGxlbWVudGF0aW9uIGZvciAzMmJpdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDczNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpvaW50IHdvcmsgd2l0aCBDYWlv
IExpbWEgPHRpY2Fpb2xpbWFAZ21haWwuY29tPi4KKyAgICAgICAgVW5za2lwIHRlc3RzIHByZXZp
b3VzbHkgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBmb3IuLm9mIGludHJpbnNpY3MuCisKKyAgICAg
ICAgKiBzdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzOgorICAgICAgICAq
IHN0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaW5saW5lZC1yZXR1cm4tbm9uLW9i
amVjdC5qczoKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWl0
ZXJhdG9yLXNldC1sb2NhbC5qczoKKyAgICAgICAgKiBzdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9w
ZW4tcmV0dXJuLW5vbi1vYmplY3QuanM6CisKIDIwMjAtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVudC1nbG9iYWxzLmpzCmluZGV4IDgxNWJmODU5
OGYzZjUzZWIyYjNmOTcxM2U4ZTdiNWNkNjMxN2VmMzEuLjdkNzdjZjg4YWI2MDJjZTRkMzg3Yjcx
ZGNjZmJmMWRhZjIwZjhlMmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1hcnJh
eS1kaWZmZXJlbnQtZ2xvYmFscy5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXkt
ZGlmZmVyZW50LWdsb2JhbHMuanMKQEAgLTEsNCArMSwzIEBACi0vL0Agc2tpcCBpZiBbImFybSIs
ICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVyZSkKIGxldCBjb3VudCA9IDA7CiAKIGZ1bmN0
aW9uIGZvbyhhcnJheSkgewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJh
dG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0dXJuLW5vbi1vYmplY3QuanMgYi9KU1Rlc3RzL3N0
cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaW5saW5lZC1yZXR1cm4tbm9uLW9iamVj
dC5qcwppbmRleCBjNGQ4YThlOGIyOGVmMmE4ZDY2ZjU0YzUxZjM1NjJhOThiMjJhOTI1Li4yMTg5
N2ZiY2ViMWVkNWY1NDdkMzg0Nzc2MGQ1Y2MzMjMxMGQwZjk0IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaW5saW5lZC1yZXR1cm4tbm9uLW9i
amVjdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQt
aW5saW5lZC1yZXR1cm4tbm9uLW9iamVjdC5qcwpAQCAtMSw1ICsxLDMgQEAKLS8vQCBza2lwIGlm
ICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgV2UgYXJlIG5vdCBzdXBwb3J0aW5n
IGZhc3QgZm9yLW9mIGZvciAzMmJpdCBhcmNoaXRlY3R1cmUuCi0vL0Agc2tpcCBpZiBbImFybSIs
ICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVyZSkKIGxldCBzaG91bGRWZW5kTnVsbCA9IGZh
bHNlOwogZnVuY3Rpb24gdmVuZEl0ZXJhdG9yKCkgewogICAgIGlmIChzaG91bGRWZW5kTnVsbCkK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1hdC1p
dGVyYXRvci1zZXQtbG9jYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Bl
bi1vc3ItYXQtaXRlcmF0b3Itc2V0LWxvY2FsLmpzCmluZGV4IGM5YjJmNzBmZmY5ZWZlNDhkZGM1
NzEzZThiYmMwYjFjM2ZhNmFhMjQuLmJjM2NmN2YxMWQ1MzRhNDg2M2MyMzJhZmNhMjk2MjI0Yzgy
MGFkMjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9z
ci1hdC1pdGVyYXRvci1zZXQtbG9jYWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0
ZXJhdG9yLW9wZW4tb3NyLWF0LWl0ZXJhdG9yLXNldC1sb2NhbC5qcwpAQCAtMSw1ICsxLDMgQEAK
LS8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgV2UgYXJlIG5v
dCBzdXBwb3J0aW5nIGZhc3QgZm9yLW9mIGZvciAzMmJpdCBhcmNoaXRlY3R1cmUuCi0vL0Agc2tp
cCBpZiBbImFybSIsICJtaXBzIl0uaW5jbHVkZT8oJGFyY2hpdGVjdHVyZSkKIGxldCBzaG91bGRW
ZW5kTnVsbCA9IGZhbHNlOwogZnVuY3Rpb24gdmVuZEl0ZXJhdG9yKCkgewogICAgIGlmIChzaG91
bGRWZW5kTnVsbCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1v
cGVuLXJldHVybi1ub24tb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9y
LW9wZW4tcmV0dXJuLW5vbi1vYmplY3QuanMKaW5kZXggZTNlZGZhOTI2OTdiZWZiNzU1N2QwZGJi
NjJmNmE0ZDg0MTdkOTFlMy4uZTZmMzljYzM0M2ViOThhZWUzMDYyZGUxY2ZlYzRlYjFiNjQyOTY3
YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tcmV0dXJu
LW5vbi1vYmplY3QuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4t
cmV0dXJuLW5vbi1vYmplY3QuanMKQEAgLTEsNSArMSwzIEBACi0vL0Agc2tpcCBpZiAkbW9kZWwg
PT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IGZv
ci1vZiBmb3IgMzJiaXQgYXJjaGl0ZWN0dXJlLgotLy9AIHNraXAgaWYgWyJhcm0iLCAibWlwcyJd
LmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBmdW5jdGlvbiB2ZW5kSXRlcmF0b3IoKSB7CiAgICAg
cmV0dXJuIDE7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405446</attachid>
            <date>2020-07-29 02:31:48 -0700</date>
            <delta_ts>2020-07-29 03:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214737-20200729113132.patch</filename>
            <type>text/plain</type>
            <size>42470</size>
            <attacher name="Paulo Matos">pmatos</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDkzZDE5NjIyYzIyMTY4ZTg2ODE3MzcwYmE3YWFkMzRjZjg3ODZiLi4wN2RlMGUyNTI2MTYwYTE0
NWE3ZDQ1MWU5MmM4ZTQzN2RjMTJmOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMC0wNy0yOSAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4K
KworICAgICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMyYml0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBKb2ludCB3b3Jr
IHdpdGggQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCisKKyAgICAgICAgSW1wbGVt
ZW50cyBmb3IuLm9mIGludHJpbnNpY3MgZm9yIDMyYml0cy4KKyAgICAgICAgQWRkcyBvcjggaW5z
dHJ1Y3Rpb24gdG8gQVJNdjcgYW5kIE1JUFMgTWFjcm8gQXNzZW1ibGVyLgorICAgICAgICBBZGRz
IGludHJpbnNpYyBvcGVyYXRpb25zIHRvIExMSW50IGFuZCBCYXNlbGluZSBmb3IgMzJiaXRzLgor
ICAgICAgICBGaXhlcyBERkcgT1NSIEV4aXQgYnVnLCB3aGVyZSBjaGVja3BvaW50IHRlbXBvcmFy
eSB2YWx1ZSBpcworICAgICAgICBpbmNvcnJlY3RseSByZWNyZWF0ZWQgZm9yIEJhc2VsaW5lLgor
ICAgICAgICBSZWZhY3RvcnMgY29kZSBpbiBERkcgT1NSIEV4aXQgdG8gYmUgZWFzaWVyIHRvIG1v
ZGlmeSBhbmQKKyAgICAgICAgbWFpbnRhaW4gYnkgc2VwYXJhdGluZyB0aGUgc3dpdGNoIGNhc2Vz
IGZvciAzMiBhbmQgNjRiaXRzLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6b3I4KTogQWRkcyBv
cjgoVHJ1c3RlZEltbSwgQWJzb2x1dGVBZGRyZXNzKQorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpvcjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6c3Rv
cmU4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6b3I4KTogQWRkcyBvcjgoVHJ1c3RlZEltbSwgQWJz
b2x1dGVBZGRyZXNzKQorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN0b3JlOCk6
CisgICAgICAgICogYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6dGVzdE9y
SW1tTWVtKTogVGVzdHMgb3I4CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9T
UkV4aXQ6OmNvbXBpbGVFeGl0KTogRml4ZXMgREZHIE9TUiBFeGl0IGJ1Zywgd2hlcmUgY2hlY2tw
b2ludCB0ZW1wb3JhcnkgdmFsdWUgaXMKKyAgICAgICAgaW5jb3JyZWN0bHkgcmVjcmVhdGVkIGZv
ciBCYXNlbGluZS4gUmVmYWN0b3JzIGNvZGUgaW4gREZHIE9TUiBFeGl0IHRvIGJlIGVhc2llciB0
byBtb2RpZnkgYW5kCisgICAgICAgIG1haW50YWluIGJ5IHNlcGFyYXRpbmcgdGhlIHN3aXRjaCBj
YXNlcyBmb3IgMzIgYW5kIDY0Yml0cy4KKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICog
aml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENhbGxSZXN1
bHQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2l0ZXJh
dG9yX29wZW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4p
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfaXRlcmF0b3JfbmV4dCk6CisgICAgICAgICogaml0L0pJVElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwp
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisKIDIwMjAt
MDctMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBSZWZsZWN0IG9iamVjdCBzaG91bGQgaGF2ZSB0b1N0cmluZ1RhZyB3aXRoICJSZWZsZWN0Igpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaAppbmRleCBjOGYzMzU1YWYwMDdmZmViYjRkNjQzNzE5NjdmMzdlZGVlZDk4ZmI2Li41
ZjMzMDRlZjkzMmM4YzcxMDc0OTY0NDE4Yjc4ODNjMmJiN2VhMTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApAQCAt
MzYyLDkgKzM2MiwyMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZyhkZXN0LCBz
cmMpOwogICAgIH0KIAotICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHZvaWQgb3I4KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRlc3QsIGRlc3QsIHNyYyk7Cisg
ICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtl
RW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKSB7
CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9hZDgoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgYXJtSW1tKTsKKyAgICAgICAgICAgIHN0b3JlOChkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBsb2FkOChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBz
dG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNz
IGRlc3QpCkBAIC0zODQsNyArMzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0b3JlMTYo
ZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKKyAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBzcmMpOworICAgIH0K
KwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOwpAQCAtODk3LDEzICs5MTUsMTMgQEAgcHVibGljOgogICAgICAgICBzdG9yZTgo
c3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHN0
b3JlOChSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdp
c3RlcklEIHNyYywgY29uc3Qgdm9pZCAqYWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIHN0b3Jl
OChzcmMsIEFybUFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCkpOwogICAgIH0KICAgICAK
LSAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQorICAgIHZv
aWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIGNvbnN0IHZvaWQgKmFkZHJlc3MpCiAgICAgewog
ICAgICAgICBUcnVzdGVkSW1tMzIgaW1tOChzdGF0aWNfY2FzdDxpbnQ4X3Q+KGltbS5tX3ZhbHVl
KSk7CiAgICAgICAgIG1vdmUoaW1tOCwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC05MTcsNiArOTM1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mp
OwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGFk
ZHJyZWcpCisgICAgeworICAgICAgICBzdG9yZTgoc3JjLCBBcm1BZGRyZXNzKGFkZHJyZWcsIDAp
KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFk
ZHJlc3MoYWRkcmVzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggMjRiMTk3Mzk5N2ZiMmQwNzliYWRkNDc5M2Yx
ZGZmNGVlMjY0MGE0MC4uZTYzYWI0NzU1ZmY4YTFiMDY5N2NjZDczYjYyMjAyMmQ2ZWMwMTk2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCkBAIC00NzUsNiArNDc1LDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VidShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmMpOwogICAgIH0KIAorCisgICAg
dm9pZCBvcjgoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgbG9hZDgo
ZGVzdC5tX3B0ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG9yMzIoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmU4KGltbVRlbXBSZWdpc3RlciwgZGVzdC5t
X3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1aW50cHRyX3QgYWRyID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9wdHIpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIgKyAweDgwMDApID4+IDE2KTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmxidShpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIs
IGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICBvcjMyKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNiKGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdp
c3RlciwgYWRyICYgMHhmZmZmKTsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKyAgICAK
ICAgICB2b2lkIG9yMTYoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0xMzEy
LDcgKzEzMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHN0b3Jl
OChSZWdpc3RlcklEIHNyYywgdm9pZCogYWRkcmVzcykKKyAgICB2b2lkIHN0b3JlOChSZWdpc3Rl
cklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChtX2ZpeGVk
V2lkdGgpIHsKICAgICAgICAgICAgIC8qCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvdGVzdG1hc20uY3BwCmluZGV4IDdmOGI5NDg0NWU3NTRjZTU4MDBhMWVjYjdkYTVmNzgzOGJl
ZTIzNDcuLjZjY2IxOWUxZDQ5MDZiODk3MDFlMWFjYjNmZTE4OTQxODBmZjRmZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVzdG1hc20uY3BwCkBAIC0yMjgwLDYgKzIy
ODAsMTYgQEAgdm9pZCB0ZXN0T3JJbW1NZW0oKQogICAgIGludm9rZTx2b2lkPihvcjE2KTsKICAg
ICBDSEVDS19FUShtZW1vcnlMb2NhdGlvbiwgMHgxMjM0MTIzNCB8IDQyKTsKIAorICAgIG1lbW9y
eUxvY2F0aW9uID0gMHgxMjM0MTIzNDsKKyAgICBhdXRvIG9yOCA9IGNvbXBpbGUoWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCkgeworICAgICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOworICAg
ICAgICBqaXQub3I4KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgQ0NhbGxIZWxwZXJz
OjpBYnNvbHV0ZUFkZHJlc3MoJm1lbW9yeUxvY2F0aW9uKSk7CisgICAgICAgIGVtaXRGdW5jdGlv
bkVwaWxvZ3VlKGppdCk7CisgICAgICAgIGppdC5yZXQoKTsKKyAgICB9KTsKKyAgICBpbnZva2U8
dm9pZD4ob3I4KTsKKyAgICBDSEVDS19FUShtZW1vcnlMb2NhdGlvbiwgMHgxMjM0MTIzNCB8IDQy
KTsKKwogICAgIG1lbW9yeUxvY2F0aW9uID0gMHgxMjM0MTIzNDsKICAgICBhdXRvIG9yMTZJbnZh
bGlkTG9naWNhbEltbUluQVJNNjQgPSBjb21waWxlKFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsK
ICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
ODQ0MGQ5YjA2MWFhZDA5N2E3NTBjOWRmYTExZTc1YTRkODg4NjliMC4uMjE1ZDZiN2UzY2EyOWFm
ZGJlYzBhODQ0MGEzNTc4YmI1OTAzMmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQxODksNyAr
NDE4OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24o
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YmplY3ROb2RlLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqKT4mIGNhbGxCYWNrLCBGb3JPZk5vZGUqIGZvckxvb3BOb2Rl
LCBSZWdpc3RlcklEKiBmb3JMb29wU3ltYm9sVGFibGUpCiB7Ci0gICAgaWYgKCFPcHRpb25zOjp1
c2VJdGVyYXRpb25JbnRyaW5zaWNzKCkgfHwgaXMzMkJpdCgpIHx8IChmb3JMb29wTm9kZSAmJiBm
b3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpKSkgeworICAgIGlmICghT3B0aW9uczo6dXNlSXRlcmF0
aW9uSW50cmluc2ljcygpIHx8IChmb3JMb29wTm9kZSAmJiBmb3JMb29wTm9kZS0+aXNGb3JBd2Fp
dCgpKSkgewogICAgICAgICBlbWl0R2VuZXJpY0VudW1lcmF0aW9uKG5vZGUsIHN1YmplY3ROb2Rl
LCBjYWxsQmFjaywgZm9yTG9vcE5vZGUsIGZvckxvb3BTeW1ib2xUYWJsZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAppbmRl
eCBmZGZmMmJjZGNlZDExYzY2ZmE4OTcwODk1NjJlNmJmMzZlZjM4YmU1Li5jOGQ1ZTlmODJiODU2
ZTI3YjlhZjQ0MGQ2ZDExYTAxZGM5NTQyODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdC5jcHAKQEAgLTU5OSw0MSArNTk5LDU5IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGls
ZUV4aXQoQ0NhbGxIZWxwZXJzJiBqaXQsIFZNJiB2bSwgY29uc3QgT1NSRXhpdCYgZXhpdCwgY29u
c3QKICAgICAgICAgICAgICAgICAgICAgYXV0byYgcmVjb3ZlcnkgPSB2YWx1ZXNbaSArIHRtcE9m
ZnNldF07CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gd2hhdCB0
aGUgRlRMIGRvZXMgYW5kIG1hdGVyaWFsaXplIGFsbCB0aGUgSlNWYWx1ZXMgaW50byB0aGUgc2Ny
YXRjaCBidWZmZXIuCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5p
cXVlKCkpIHsKKwogICAgICAgICAgICAgICAgICAgICBjYXNlIENvbnN0YW50OgogICAgICAgICAg
ICAgICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVjb3ZlcnkuY29uc3RhbnQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAgICAgICAgICAg
ICAKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRJ
bnQzMkluR1BSOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0
YWNrOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih0bXBTY3JhdGNoW2kgKyB0bXBPZmZzZXRdKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCi0j
aWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJblBhaXI6Ci0j
ZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgICAgICAgICBj
YXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVW5i
b3hlZENlbGxJbkdQUjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZGVTdGF0ZS0+dG1wc1tpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KHRt
cFNjcmF0Y2gpW2kgKyB0bXBPZmZzZXRdOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBjYXNlIFVuYm94
ZWRDZWxsSW5HUFI6IHsKLSNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgICAgICBj
YXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVT
dGF0ZS0+dG1wc1tpXSA9IGpzQm9vbGVhbihzdGF0aWNfY2FzdDxib29sPih0bXBTY3JhdGNoW2kg
KyB0bXBPZmZzZXRdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisjZWxzZSAvLyBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAg
ICAgICAgICBjYXNlIFVuYm94ZWRJbnQzMkluR1BSOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWRl
U3RhdGUtPnRtcHNbaV0gPSBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90Pih0bXBTY3JhdGNo
W2kgKyB0bXBPZmZzZXRdKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNhc2UgSW5QYWlyOgorICAg
ICAgICAgICAgICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazogewogICAgICAgICAgICAg
ICAgICAgICAgICAgc2lkZVN0YXRlLT50bXBzW2ldID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4odG1wU2NyYXRjaClbaSArIHRtcE9mZnNldF07Ci0jZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAg
ICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VW5ib3hlZENlbGxJbkdQUjogewogICAgICAgICAgICAgICAgICAgICAgICAgRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciogdmFsdWVEZXNjcmlwdG9yID0gYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURl
c2NyaXB0b3IqPih0bXBTY3JhdGNoICsgaSArIHRtcE9mZnNldCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBzaWRlU3RhdGUtPnRtcHNbaV0gPSBKU1ZhbHVlKEpTVmFsdWU6OkNlbGxUYWcsIHZh
bHVlRGVzY3JpcHRvci0+YXNCaXRzLnBheWxvYWQpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQm9vbGVhbkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzaWRl
U3RhdGUtPnRtcHNbaV0gPSBqc0Jvb2xlYW4oc3RhdGljX2Nhc3Q8Ym9vbD4odG1wU2NyYXRjaFtp
ICsgdG1wT2Zmc2V0XSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogCiAgICAgICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggZjNiMDkyNDAxOTM0NzcwNGRiMDU0ZWI0N2EwOGJkODUyZGFlMDVhYi4uNTA4
YWY1MGY2MWViMzE2ZmUzMzM5YTk3ZDUwZWM1NGIxOTU2Yzc5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC00NDMsNiArNDQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyKTsKICAgICAgICAg
dm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3Rl
cklEIHRhZyk7CisgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lz
dGVySUQpOwogCiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5SWRIb3RQYXRoKGNvbnN0IElkZW50
aWZpZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmlu
ZGV4IGQxNDBhYWM5YmUyZDU0MDNkMWJjMGQ5OTEyYWU5ZTEwNWY4MGQ0MzMuLmNmZmY3ZTY2N2Fi
ZTc4MjA2MGU1ZTk0NWI4MzYxOTU2OTE3NzU1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTEsNCArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
OSw2ICszMSw3IEBACiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICNpbmNsdWRlICJKSVQuaCIKIAor
I2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgi
CkBAIC0zOSw2ICs0Miw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlSW5saW5lcy5oIgogI2luY2x1ZGUg
IlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTZXR1cFZhcmFyZ3NGcmFtZS5oIgorI2luY2x1ZGUg
IlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAi
VGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBA
IC00OSw3ICs1Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogdm9pZCBKSVQ6OmVtaXRQdXRD
YWxsUmVzdWx0KGNvbnN0IE9wJiBieXRlY29kZSkKIHsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKSk7Ci0gICAgZW1pdFN0b3JlKGJ5dGVj
b2RlLm1fZHN0LCByZWdUMSwgcmVnVDApOworICAgIGVtaXRTdG9yZShkZXN0aW5hdGlvbkZvcihi
eXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJlZ2lzdGVyKCks
IHJlZ1QxLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3JldChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMTUyLDkgKzE1NiwxMCBAQCBzdGQ6OmVuYWJs
ZV9pZl90PAogLCB2b2lkPgogSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNv
ZGUsIENhbGxMaW5rSW5mbyopCiB7CisgICAgdW5zaWduZWQgY2hlY2twb2ludCA9IG1fYnl0ZWNv
ZGVJbmRleC5jaGVja3BvaW50KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7Ci0gICAgaW50IGFyZ0NvdW50ID0gYnl0ZWNvZGUubV9hcmdjOwot
ICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlLm1fYXJn
dik7CisgICAgaW50IGFyZ0NvdW50ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0
ZWNvZGUsIGNoZWNrcG9pbnQpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2Fz
dDxpbnQ+KHN0YWNrT2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50
KSk7CiAKICAgICBpZiAoT3A6Om9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7CiAgICAgICAgIGVtaXRMb2FkKFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNl
dCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSwgcmVnVDAsIHJl
Z1QxKTsKQEAgLTI2OSw3ICsyNzQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZAogewogICAg
IE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZSA9IGJ5dGVj
b2RlLm1fY2FsbGVlOworICAgIFZpcnR1YWxSZWdpc3RlciBjYWxsZWUgPSBjYWxsZWVGb3IoYnl0
ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5jaGVja3BvaW50KCkpOwogCiAgICAgLyogQ2FsbGVyIGFs
d2F5czoKICAgICAgICAgLSBVcGRhdGVzIGNhbGxGcmFtZVJlZ2lzdGVyIHRvIGNhbGxlZSBjYWxs
RnJhbWUuCkBAIC0zNjYsMjQgKzM3MSwyNjMgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93
Q2FzZShjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUUKICAg
ICBlbWl0UHV0Q2FsbFJlc3VsdChieXRlY29kZSk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2l0
ZXJhdG9yX29wZW4oY29uc3QgSW5zdHJ1Y3Rpb24qKQordm9pZCBKSVQ6OmVtaXRfb3BfaXRlcmF0
b3Jfb3Blbihjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgVU5SRUFDSEFC
TEVfRk9SX1BMQVRGT1JNKCk7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxP
cEl0ZXJhdG9yT3Blbj4oKTsKKyAgICBhdXRvKiB0cnlGYXN0RnVuY3Rpb24gPSAoWyZdICgpIHsK
KyAgICAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+d2lkdGgoKSkgeworICAgICAgICBjYXNlIE5h
cnJvdzogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3RfbmFycm93OworICAgICAgICBjYXNl
IFdpZGUxNjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTE2OworICAgICAgICBj
YXNlIFdpZGUzMjogcmV0dXJuIGl0ZXJhdG9yX29wZW5fdHJ5X2Zhc3Rfd2lkZTMyOworICAgICAg
ICBkZWZhdWx0OiBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
fSkoKTsKKworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgaW5zdHJ1Y3Rp
b24sIHRyeUZhc3RGdW5jdGlvbik7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICBKdW1w
IGZhc3RDYXNlID0gYnJhbmNoMzIoTm90RXF1YWwsIEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwg
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQzMl90PihJdGVyYXRpb25Nb2RlOjpHZW5lcmlj
KSkpOworCisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIG1f
Y2FsbExpbmtJbmZvSW5kZXgrKyk7CisKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdnIgPSBkZXN0aW5h
dGlvbkZvcihieXRlY29kZSwgbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKSkudmlydHVhbFJl
Z2lzdGVyKCk7CisgICAgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAgICAKKyAgICAvLyBj
YWxsIHJlc3VsdCAoaXRlcmF0b3IpIGlzIGluIHJlZ1QxICh0YWcpL3JlZ1QwIChwYXlsb2FkKQor
ICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dDsK
KyAgICAKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwodnIsIHJlZ1QxKTsKKworICAg
IEdQUlJlZyB0YWdJdGVyYXRvckdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyBwYXlsb2FkSXRlcmF0
b3JHUFIgPSByZWdUMDsKKworICAgIEdQUlJlZyB0YWdOZXh0R1BSID0gdGFnSXRlcmF0b3JHUFI7
CisgICAgR1BSUmVnIHBheWxvYWROZXh0R1BSID0gcGF5bG9hZEl0ZXJhdG9yR1BSOworCisgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLAorICAgICAgICBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksCisgICAgICAgIENhbGxTaXRlSW5kZXgoQnl0ZWNv
ZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKKyAgICAgICAgUmVnaXN0ZXJTZXQ6
OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tSW1tb3J0YWxJZGVudGlmaWVyKGlkZW50LT5pbXBsKCkpLAorICAgICAgICBK
U1ZhbHVlUmVncyh0YWdJdGVyYXRvckdQUiwgcGF5bG9hZEl0ZXJhdG9yR1BSKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3ModGFnTmV4dEdQUiwgcGF5bG9hZE5leHRHUFIpLAorICAgICAgICBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKKyAgICAKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7Cisg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOworCisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShieXRlY29kZS5tZXRhZGF0YSht
X2NvZGVCbG9jaykpOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9uZXh0
LCBKU1ZhbHVlUmVncyh0YWdOZXh0R1BSLCBwYXlsb2FkTmV4dEdQUikpOworCisgICAgZmFzdENh
c2UubGluayh0aGlzKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX29wZW4o
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3Zv
aWQgSklUOjplbWl0U2xvd19vcF9pdGVyYXRvcl9vcGVuKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwor
ICAgIGNvbXBpbGVPcENhbGxTbG93Q2FzZTxPcEl0ZXJhdG9yT3Blbj4oaW5zdHJ1Y3Rpb24sIGl0
ZXIsIG1fY2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVj
a3BvaW50KGp1bXAoKSk7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgR1BS
UmVnIHRhZ0l0ZXJhdG9yR1BSID0gcmVnVDE7CisgICAgR1BSUmVnIHBheWxvYWRJdGVyYXRvckdQ
UiA9IHJlZ1QwOworCisgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgIG5vdE9iamVjdC5hcHBl
bmQoYnJhbmNoSWZOb3RDZWxsKHRhZ0l0ZXJhdG9yR1BSKSk7CisgICAgbm90T2JqZWN0LmFwcGVu
ZChicmFuY2hJZk5vdE9iamVjdChwYXlsb2FkSXRlcmF0b3JHUFIpKTsKKworICAgIGF1dG8gYnl0
ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIG5leHRWUmVnID0gYnl0ZWNvZGUubV9uZXh0OworICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBpZGVudCA9IHZtKCkucHJvcGVydHlOYW1lcy0+bmV4dC5pbXBsKCk7CisKKyAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yJiBnZW4gPSBtX2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAgIAor
ICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisgICAgQ2FsbCBjYWxsID0gY2Fs
bE9wZXJhdGlvbldpdGhQcm9maWxlKAorICAgICAgICBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIC8vIG1ldGFkYXRhCisgICAgICAgIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgLy8g
b3BlcmF0aW9uCisgICAgICAgIG5leHRWUmVnLCAvLyByZXN1bHQKKyAgICAgICAgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCAvLyBhcmcxCisgICAgICAgIGdlbi5z
dHViSW5mbygpLCAvLyBhcmcyCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0l0ZXJhdG9yR1BSLCBw
YXlsb2FkSXRlcmF0b3JHUFIpLCAvLyBhcmczCisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIoaWRlbnQpLnJhd0JpdHMoKSk7IC8vIGFyZzQK
KyAgICAKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwor
ICAgIGF1dG8gZG9uZSA9IGp1bXAoKTsKKworICAgIG5vdE9iamVjdC5saW5rKHRoaXMpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3VsdElzTm90T2JqZWN0LCBU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSkpOworCisgICAgZG9uZS5s
aW5rKHRoaXMpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9pdGVyYXRvcl9uZXh0KGNvbnN0IElu
c3RydWN0aW9uKikKK3ZvaWQgSklUOjplbWl0X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQogewotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck5leHQ+KCk7Cisg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAg
YXV0byogdHJ5RmFzdEZ1bmN0aW9uID0gKFsmXSAoKSB7CisgICAgICAgIHN3aXRjaCAoaW5zdHJ1
Y3Rpb24tPndpZHRoKCkpIHsKKyAgICAgICAgY2FzZSBOYXJyb3c6IHJldHVybiBpdGVyYXRvcl9u
ZXh0X3RyeV9mYXN0X25hcnJvdzsKKyAgICAgICAgY2FzZSBXaWRlMTY6IHJldHVybiBpdGVyYXRv
cl9uZXh0X3RyeV9mYXN0X3dpZGUxNjsKKyAgICAgICAgY2FzZSBXaWRlMzI6IHJldHVybiBpdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMjsKKyAgICAgICAgZGVmYXVsdDogUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICBKU1ZhbHVlUmVn
cyBuZXh0UmVncyhyZWdUMSwgcmVnVDApOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV9uZXh0LCBuZXh0UmVncyk7CisgICAgSnVtcCBnZW5lcmljQ2FzZSA9IGJyYW5jaElm
Tm90RW1wdHkobmV4dFJlZ3MpOworCisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBpbnN0cnVjdGlvbiwgdHJ5RmFzdEZ1bmN0aW9uKTsKKyAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOworICAgIEp1bXAgZmFzdENhc2UgPSBicmFuY2gzMihOb3RFcXVhbCwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KEl0ZXJhdGlv
bk1vZGU6OkdlbmVyaWMpKSk7CisKKyAgICBnZW5lcmljQ2FzZS5saW5rKHRoaXMpOworICAgIG9y
OChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oSXRlcmF0aW9uTW9kZTo6R2VuZXJp
YykpLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1faXRlcmF0aW9uTWV0YWRhdGEuc2Vlbk1v
ZGVzKSk7CisgICAgY29tcGlsZU9wQ2FsbDxPcEl0ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24sIG1f
Y2FsbExpbmtJbmZvSW5kZXgrKyk7CisgICAgYWR2YW5jZVRvTmV4dENoZWNrcG9pbnQoKTsKKyAg
ICAvLyBjYWxsIHJlc3VsdCAoeyBkb25lLCB2YWx1ZSB9IEpTT2JqZWN0KSBpbiByZWdUMSwgcmVn
VDAKKworICAgIEdQUlJlZyB0YWdWYWx1ZUdQUiA9IHJlZ1QxOworICAgIEdQUlJlZyBwYXlsb2Fk
VmFsdWVHUFIgPSByZWdUMDsKKyAgICAgICAgCisgICAgR1BSUmVnIHRhZ0RvbmVHUFIgPSByZWdU
NTsKKyAgICBHUFJSZWcgcGF5bG9hZERvbmVHUFIgPSByZWdUNDsKKworICAgIHsKKyAgICAgICAg
R1BSUmVnIHRhZ0l0ZXJSZXN1bHRHUFIgPSByZWdUMzsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRJ
dGVyUmVzdWx0R1BSID0gcmVnVDI7CisgICAgICAgIAorICAgICAgICAvLyBpdGVyUmVzdWx0R1BS
IHdpbGwgZ2V0IHRyYXNoZWQgYnkgdGhlIGZpcnN0IGdldCBieSBpZCBiZWxvdy4KKyAgICAgICAg
bW92ZShyZWdUMSwgdGFnSXRlclJlc3VsdEdQUik7CisgICAgICAgIG1vdmUocmVnVDAsIHBheWxv
YWRJdGVyUmVzdWx0R1BSKTsKKworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
dGFnSXRlclJlc3VsdEdQUik7CisKKyAgICAgICAgUmVnaXN0ZXJTZXQgcHJlc2VydmVkUmVncyA9
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKTsKKyAgICAgICAgcHJlc2Vy
dmVkUmVncy5hZGQodGFnVmFsdWVHUFIpOworICAgICAgICBwcmVzZXJ2ZWRSZWdzLmFkZChwYXls
b2FkVmFsdWVHUFIpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAg
ICAgIG1fY29kZUJsb2NrLAorICAgICAgICAgICAgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgp
LAorICAgICAgICAgICAgQ2FsbFNpdGVJbmRleChCeXRlY29kZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eC5vZmZzZXQoKSkpLAorICAgICAgICAgICAgcHJlc2VydmVkUmVncywKKyAgICAgICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5wcm9w
ZXJ0eU5hbWVzLT5kb25lLmltcGwoKSksCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh0YWdJdGVy
UmVzdWx0R1BSLCBwYXlsb2FkSXRlclJlc3VsdEdQUiksCisgICAgICAgICAgICBKU1ZhbHVlUmVn
cyh0YWdEb25lR1BSLCBwYXlsb2FkRG9uZUdQUiksCisgICAgICAgICAgICBBY2Nlc3NUeXBlOjpH
ZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRzLmFwcGVu
ZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEpOworICAg
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fZG9uZSwgSlNWYWx1ZVJlZ3Mo
dGFnRG9uZUdQUiwgcGF5bG9hZERvbmVHUFIpKTsKKyAgICAgICAgYWR2YW5jZVRvTmV4dENoZWNr
cG9pbnQoKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIEdQUlJlZyB0YWdJdGVyUmVzdWx0R1BS
ID0gcmVnVDE7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkSXRlclJlc3VsdEdQUiA9IHJlZ1QwOwor
CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHJlZ1Q2OworICAgICAgICBHUFJSZWcgc2NyYXRj
aDIgPSByZWdUNzsKKyAgICAgICAgY29uc3QgYm9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBmYWxzZTsKKyAgICAgICAgSnVtcExpc3QgaXRlcmF0aW9uRG9uZSA9IGJyYW5j
aElmVHJ1dGh5KHZtKCksIEpTVmFsdWVSZWdzKHRhZ0RvbmVHUFIsIHBheWxvYWREb25lR1BSKSwg
c2NyYXRjaDEsIHNjcmF0Y2gyLCBmcFJlZ1QwLCBmcFJlZ1QxLCBzaG91bGRDaGVja01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7CisKKyAgICAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgICAgICBtX2NvZGVCbG9jaywKKyAgICAg
ICAgICAgIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwKKyAgICAgICAgICAgIENhbGxTaXRl
SW5kZXgoQnl0ZWNvZGVJbmRleChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkpKSwKKyAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAgICAg
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JbW1vcnRhbElkZW50aWZpZXIodm0oKS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZS5pbXBsKCkpLAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModGFn
SXRlclJlc3VsdEdQUiwgcGF5bG9hZEl0ZXJSZXN1bHRHUFIpLAorICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModGFnVmFsdWVHUFIsIHBheWxvYWRWYWx1ZUdQUiksCisgICAgICAgICAgICBBY2Nlc3NU
eXBlOjpHZXRCeUlkKTsKKyAgICAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAg
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgICAgICBtX2dldEJ5SWRz
LmFwcGVuZChnZW4pOworCisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobWV0YWRhdGEp
OworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fdmFsdWUsIEpTVmFs
dWVSZWdzKHRhZ1ZhbHVlR1BSLCBwYXlsb2FkVmFsdWVHUFIpKTsKKworICAgICAgICBpdGVyYXRp
b25Eb25lLmxpbmsodGhpcyk7CisgICAgfQorCisgICAgZmFzdENhc2UubGluayh0aGlzKTsKIH0K
IAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2l0ZXJhdG9yX25leHQoY29uc3QgSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJikKK3ZvaWQgSklUOjplbWl0U2xvd19v
cF9pdGVyYXRvcl9uZXh0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICBVTlJFQUNIQUJMRV9GT1JfUExB
VEZPUk0oKTsKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgIGNvbXBpbGVPcENhbGxT
bG93Q2FzZTxPcEl0ZXJhdG9yTmV4dD4oaW5zdHJ1Y3Rpb24sIGl0ZXIsIG1fY2FsbExpbmtJbmZv
SW5kZXgrKyk7CisgICAgZW1pdEp1bXBTbG93VG9Ib3RGb3JDaGVja3BvaW50KGp1bXAoKSk7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JOZXh0PigpOwor
ICAgIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGRvbmVWUmVnID0gYnl0ZWNvZGUubV9kb25l
OworICAgICAgICBHUFJSZWcgdGFnVmFsdWVHUFIgPSByZWdUMTsKKyAgICAgICAgR1BSUmVnIHBh
eWxvYWRWYWx1ZUdQUiA9IHJlZ1QwOworICAgICAgICAgICAgCisgICAgICAgIEdQUlJlZyB0YWdJ
dGVyUmVzdWx0R1BSID0gcmVnVDM7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkSXRlclJlc3VsdEdQ
UiA9IHJlZ1QyOworICAgICAgICAKKyAgICAgICAgR1BSUmVnIHRhZ0RvbmVHUFIgPSByZWdUNTsK
KyAgICAgICAgR1BSUmVnIHBheWxvYWREb25lR1BSID0gcmVnVDQ7CisKKyAgICAgICAgbGlua0Fs
bFNsb3dDYXNlcyhpdGVyKTsKKyAgICAgICAgSnVtcExpc3Qgbm90T2JqZWN0OworICAgICAgICBu
b3RPYmplY3QuYXBwZW5kKGJyYW5jaElmTm90Q2VsbCh0YWdJdGVyUmVzdWx0R1BSKSk7CisgICAg
ICAgIG5vdE9iamVjdC5hcHBlbmQoYnJhbmNoSWZOb3RPYmplY3QocGF5bG9hZEl0ZXJSZXN1bHRH
UFIpKTsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2bSgpLnByb3BlcnR5
TmFtZXMtPmRvbmUuaW1wbCgpOworICAgICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yJiBnZW4gPSBt
X2dldEJ5SWRzW21fZ2V0QnlJZEluZGV4KytdOworICAgICAgICAKKyAgICAgICAgTGFiZWwgY29s
ZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyAgICAgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlv
bldpdGhQcm9maWxlKAorICAgICAgICAgICAgYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
LCAvLyBtZXRhZGF0YQorICAgICAgICAgICAgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplLCAvLyBv
cGVyYXRpb24KKyAgICAgICAgICAgIGRvbmVWUmVnLCAvLyByZXN1bHQKKyAgICAgICAgICAgIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgLy8gYXJnMQorICAgICAg
ICAgICAgZ2VuLnN0dWJJbmZvKCksIC8vIGFyZzIKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHRh
Z0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwgLy8gYXJnMworICAgICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihpZGVu
dCkucmF3Qml0cygpKTsgLy8gYXJnNAorCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwo
Y29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZG9u
ZVZSZWcsIEpTVmFsdWVSZWdzKHRhZ0RvbmVHUFIsIHBheWxvYWREb25lR1BSKSk7CisgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV92YWx1ZSwgSlNWYWx1ZVJlZ3ModGFn
VmFsdWVHUFIsIHBheWxvYWRWYWx1ZUdQUikpOworICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdEZv
ckNoZWNrcG9pbnQoanVtcCgpKTsKKworICAgICAgICBub3RPYmplY3QubGluayh0aGlzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmpl
Y3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisgICAgfQor
CisgICAgeyAgIAorICAgICAgICBHUFJSZWcgdGFnSXRlclJlc3VsdEdQUiA9IHJlZ1QxOworICAg
ICAgICBHUFJSZWcgcGF5bG9hZEl0ZXJSZXN1bHRHUFIgPSByZWdUMDsKKworICAgICAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmFsdWVWUmVnID0g
Ynl0ZWNvZGUubV92YWx1ZTsKKworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaWRlbnQgPSB2
bSgpLnByb3BlcnR5TmFtZXMtPnZhbHVlLmltcGwoKTsKKyAgICAgICAgSklUR2V0QnlJZEdlbmVy
YXRvciYgZ2VuID0gbV9nZXRCeUlkc1ttX2dldEJ5SWRJbmRleCsrXTsKKworICAgICAgICBMYWJl
bCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgICAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uV2l0aFByb2ZpbGUoCisgICAgICAgICAgICBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVC
bG9jayksIC8vIG1ldGFkYXRhCisgICAgICAgICAgICBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IC8vIG9wZXJhdGlvbgorICAgICAgICAgICAgdmFsdWVWUmVnLCAvLyByZXN1bHQKKyAgICAgICAg
ICAgIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgLy8gYXJnMQor
ICAgICAgICAgICAgZ2VuLnN0dWJJbmZvKCksIC8vIGFyZzIKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHRhZ0l0ZXJSZXN1bHRHUFIsIHBheWxvYWRJdGVyUmVzdWx0R1BSKSwgLy8gYXJnMworICAg
ICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmll
cihpZGVudCkucmF3Qml0cygpKTsgLy8gYXJnNAorCisgICAgICAgIGdlbi5yZXBvcnRTbG93UGF0
aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggZDUzZTY5NzdkMzlk
NzU5ZTY3NDEyZmQ5YWQxYjllNjc4MmI5N2QzMS4uMmY3NmRiMDA2OTIxMThhZjg1MmU3MDYyOTUw
Mjc0Mjk5ODVhY2ZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAg
LTYxNiwxMSArNjE2LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2Fz
ZUlmSlNDZWxsKFJlZ2lzdGVySUQgcmVnKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmQ2VsbChy
ZWcpKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKFJlZ2lzdGVySUQgcmVnKQotewotICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2Vs
bChyZWcpKTsKLX0KLQogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnLCBWaXJ0dWFsUmVnaXN0ZXIgdlJlZykKIHsKICAgICBp
ZiAoIW1fY29kZUJsb2NrLT5pc0tub3duQ2VsbCh2UmVnKSkKQEAgLTY1Niw2ICs2NTEsMTEgQEAg
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90TnVtYmVyKFJlZ2lz
dGVySUQgcmVnKQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAorQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQgcmVnKQor
eworICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChyZWcpKTsKK30KKwogQUxXQVlTX0lO
TElORSBpbnQgSklUOjpqdW1wVGFyZ2V0KGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
aW50IHRhcmdldCkKIHsKICAgICBpZiAodGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBkOTQx
MTJiODFhOWM5MGY3ODM0MWE4MDVlZTMyMDQ1YTVjMGUwNjQ1Li4yNzUwNjkwYTJmZjgwOWMyNDY2
M2MwOGY1YjZkMzJhYmUzOGI4ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNDg4LDYgKzQ4OCw5
IEBAIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKICAgICAgICAgZW5kKQogZW5kCiAK
KyMgbG9hZFZhcmlhYmxlIGxvYWRzIHRoZSB2YWx1ZSBvZiBmaWVsZCBmaWVsZE5hbWUgdXNpbmcg
bWFjcm8gZ2V0CisjIGludG8gcmVnaXN0ZXIgdGFnUmVnIGFuZCBwYXlsb2FkUmVnCisjIENsb2Ji
ZXJzOiBpbmRleFJlZwogbWFjcm8gbG9hZFZhcmlhYmxlKGdldCwgZmllbGROYW1lLCBpbmRleFJl
ZywgdGFnUmVnLCBwYXlsb2FkUmVnKQogICAgIGdldChmaWVsZE5hbWUsIGluZGV4UmVnKQogICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4UmVnLCA4XSwgdGFnUmVnCkBAIC02NTEsNyArNjU0
LDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoc2l6ZSwg
Z2V0LCB2YWx1ZUZpZWxkTmFtZSkKIGVuZAogCiBtYWNybyB2YWx1ZVByb2ZpbGUob3Bjb2RlU3Ry
dWN0LCBwcm9maWxlTmFtZSwgbWV0YWRhdGEsIHRhZywgcGF5bG9hZCkKLSAgICBzdG9yZWkgdGFn
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fcHJvZmlsZS5tX2J1Y2tldHMgKyBUYWdPZmZz
ZXRbbWV0YWRhdGFdCisgICAgc3RvcmVpIHRhZywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
cHJvZmlsZU5hbWUlLm1fYnVja2V0cyArIFRhZ09mZnNldFttZXRhZGF0YV0KICAgICBzdG9yZWkg
cGF5bG9hZCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjolcHJvZmlsZU5hbWUlLm1fYnVja2V0
cyArIFBheWxvYWRPZmZzZXRbbWV0YWRhdGFdCiBlbmQKIApAQCAtMTQxMCw2ICsxNDEzLDUzIEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkX2RpcmVjdCwgT3BHZXRCeUlkRGlyZWN0
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwCiAgICAgZGlzcGF0Y2goKQogZW5kKQogCisjIEFzc3Vt
cHRpb246IFRoZSBiYXNlIG9iamVjdCBpcyBpbiB0MworIyBGSVhNRTogdGhpcyBpcyB2ZXJ5IGNs
b3NlIHRvIHRoZSA2NGJpdCB2ZXJzaW9uLiBDb25zaWRlciByZWZhY3RvcmluZy4KK21hY3JvIHBl
cmZvcm1HZXRCeUlESGVscGVyKG9wY29kZVN0cnVjdCwgbW9kZU1ldGFkYXRhTmFtZSwgdmFsdWVQ
cm9maWxlTmFtZSwgc2xvd0xhYmVsLCBzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFk
YXRhKHQyLCB0MSkKKyAgICBsb2FkYiAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0
YWRhdGFOYW1lJS5tb2RlW3QyXSwgdDEKKyAgICAgICAgCisub3BHZXRCeUlkRGVmYXVsdDoKKyAg
ICBiYm5lcSB0MSwgY29uc3RleHByIEdldEJ5SWRNb2RlOjpEZWZhdWx0LCAub3BHZXRCeUlkUHJv
dG9Mb2FkCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEgIyBhc3N1bWVz
IGJhc2Ugb2JqZWN0IGluIHQzCisgICAgbG9hZGkgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjol
bW9kZU1ldGFkYXRhTmFtZSUuZGVmYXVsdE1vZGUuc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJp
bmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6JW1vZGVNZXRhZGF0YU5hbWUlLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldFt0Ml0sIHQxCisg
ICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwLCB0MSkKKyAgICB2YWx1
ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgdDAsIHQxKQorICAg
IHJldHVybih0MCwgdDEpCisKKy5vcEdldEJ5SWRQcm90b0xvYWQ6CisgICAgYmJuZXEgdDEsIGNv
bnN0ZXhwciBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkLCAub3BHZXRCeUlkQXJyYXlMZW5ndGgKKyAg
ICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQorICAgIGxvYWRpICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUuc3RydWN0
dXJlSURbdDJdLCB0MworICAgIGJpbmVxIHQzLCB0MSwgc2xvd0xhYmVsCisgICAgbG9hZGlzICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1vZGVNZXRhZGF0YU5hbWUlLnByb3RvTG9hZE1vZGUu
Y2FjaGVkT2Zmc2V0W3QyXSwgdDEKKyAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
OiVtb2RlTWV0YWRhdGFOYW1lJS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3RbdDJdLCB0MworICAg
IGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIHQwLCB0MSkKKyAgICBy
ZXR1cm4odDAsIHQxKQorCisub3BHZXRCeUlkQXJyYXlMZW5ndGg6CisgICAgYmJuZXEgdDEsIGNv
bnN0ZXhwciBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgsIC5vcEdldEJ5SWRVbnNldAorICAgIG1v
dmUgdDMsIHQwCisgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6JW1v
ZGVNZXRhZGF0YU5hbWUlLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUsIHQwLCB0MiwgdDUp
CisgICAgYnRpeiB0MCwgSXNBcnJheSwgc2xvd0xhYmVsCisgICAgYnRpeiB0MCwgSW5kZXhpbmdT
aGFwZU1hc2ssIHNsb3dMYWJlbAorICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10s
IHQwCisgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKKyAgICBiaWx0IHQwLCAwLCBzbG93TGFiZWwK
KyAgICB2YWx1ZVByb2ZpbGUob3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCB0MiwgSW50
MzJUYWcsIHQwKQorICAgIHJldHVybihJbnQzMlRhZywgdDApCisgICAgCisub3BHZXRCeUlkVW5z
ZXQ6CisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKKyAgICBsb2FkaSAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6OiVtb2RlTWV0YWRhdGFOYW1lJS51bnNldE1vZGUuc3Ry
dWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgc2xvd0xhYmVsCisgICAgdmFsdWVQ
cm9maWxlKG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgdDIsIFVuZGVmaW5lZFRhZywg
MCkKKyAgICByZXR1cm4oVW5kZWZpbmVkVGFnLCAwKQorCitlbmQKIAogbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDUsIHQwKQpAQCAtMTk4Miw2ICsyMDMy
LDMwIEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogLmRv
bmU6CiBlbmQKIAorbWFjcm8gY2FsbEhlbHBlcihvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2Rl
U3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIHByZXBhcmVDYWxs
LCBzaXplLCBkaXNwYXRjaCwgbWV0YWRhdGEsIGdldENhbGxlZSwgZ2V0QXJndW1lbnRTdGFydCwg
Z2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpCisgICAgbWV0YWRhdGEodDUsIHQwKQorICAg
IGdldENhbGxlZSh0MCkKKworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0Mgor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0Mywg
Lm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGdldEFyZ3Vt
ZW50U3RhcnQodDMpCisgICAgbHNoaWZ0aSAzLCB0MworICAgIG5lZ2kgdDMKKyAgICBhZGRwIGNm
ciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBzdG9yZWkgdDIs
IENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgZ2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXModDIpICAgIAorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdP
ZmZzZXRbdDNdCisgICAgbW92ZSB0Mywgc3AKKyAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0Miwg
dDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgIGNhbGxUYXJnZXRGdW5jdGlvbihvcGNvZGVOYW1l
LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3Rl
ciwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9t
YWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisKKy5vcENhbGxTbG93OgorICAg
IHNsb3dQYXRoRm9yQ2FsbChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJv
ZmlsZU5hbWUsIGRzdFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJl
Q2FsbCkKK2VuZAorICAgICAgICAKIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgICAgICBtZXRhZGF0YSh0NSwgdDApCkBAIC0x
OTkwLDI1ICsyMDY0LDE5IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0
aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgICAgICBnZXR1
KHNpemUsIG9wY29kZVN0cnVjdCwgZmllbGROYW1lLCBkc3QpCiAgICAgICAgIGVuZCwgbWV0YWRh
dGEpCiAKLSAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVX
aXRoTGlua0JpdFt0NV0sIHQyCi0gICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCi0gICAgICAgIGJpbmVxIHQzLCB0
MiwgLm9wQ2FsbFNsb3cKLSAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwg
dDMpCi0gICAgICAgIGxzaGlmdGkgMywgdDMKLSAgICAgICAgbmVnaSB0MwotICAgICAgICBhZGRw
IGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKLSAgICAgICAgc3Rv
cmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBnZXR1KHNpemUsIG9w
Y29kZVN0cnVjdCwgbV9hcmdjLCB0MikKLSAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyArIFRhZ09mZnNldFtjZnJdCi0gICAgICAgIHN0b3JlaSB0MiwgQXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgKyBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICBzdG9yZWkg
Q2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQotICAgICAgICBtb3ZlIHQzLCBzcAotICAg
ICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAg
ICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24ob3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCBt
X3Byb2ZpbGUsIG1fZHN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAg
ICAgbWFjcm8gZ2V0Q2FsbGVlKGRzdCkKKyAgICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKKyAg
ICAgICAgZW5kCiAKLSAgICAub3BDYWxsU2xvdzoKLSAgICAgICAgc2xvd1BhdGhGb3JDYWxsKG9w
Y29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgZGlzcGF0Y2gs
IHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKKyAgICAgICAgbWFjcm8gZ2V0QXJndW1lbnRTdGFydChk
c3QpCisgICAgICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCBkc3QpCisg
ICAgICAgIGVuZAorCisgICAgICAgIG1hY3JvIGdldEFyZ3VtZW50Q291bnQoZHN0KQorICAgICAg
ICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJnYywgZHN0KQorICAgICAgICBlbmQK
KyAgICAgICAgCisgICAgICAgIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29k
ZVN0cnVjdCwgbV9wcm9maWxlLCBtX2RzdCwgcHJlcGFyZUNhbGwsIHNpemUsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgZ2V0Q2FsbGVlLCBnZXRBcmd1bWVudFN0YXJ0LCBnZXRBcmd1bWVudENvdW50KQog
ICAgIGVuZCkKIGVuZAogCkBAIC0yNjQyLDI1ICsyNzEwLDE1MCBAQCBsbGludE9wV2l0aFJldHVy
bihvcF9nZXRfcmVzdF9sZW5ndGgsIE9wR2V0UmVzdExlbmd0aCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0YwogICAgIHJldHVybihJbnQzMlRhZywgdDApCiBlbmQpCiAKLWxsaW50T3Aob3BfaXRl
cmF0b3Jfb3BlbiwgT3BJdGVyYXRvck9wZW4sIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQot
ICAgIGRlZmluZU9TUkV4aXRSZXR1cm5MYWJlbChvcF9pdGVyYXRvcl9vcGVuLCBzaXplKQotICAg
IGJyZWFrCi0gICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KLSAgICAgICAgIyBJbnNlcnQgc3Vw
ZXJmbG91cyBjYWxsIHJldHVybiBsYWJlbHMgZm9yIENsb29wLgotICAgICAgICBjbG9vcENhbGxK
U0Z1bmN0aW9uIGEwICMgc3ltYm9sSXRlcmF0b3IKLSAgICAgICAgY2xvb3BDYWxsSlNGdW5jdGlv
biBhMCAjIGdldCBuZXh0CitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2l0ZXJhdG9yX29wZW4sIE9w
SXRlcmF0b3JPcGVuLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKKyAgICBtYWNybyBmYXN0TmFycm93KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRv
cl9vcGVuX3RyeV9mYXN0X25hcnJvdykKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkK
KyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUxNikKKyAg
ICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMyKCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVy
YXRvcl9vcGVuX3RyeV9mYXN0X3dpZGUzMikKKyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3cs
IGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1hY3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKwor
ICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNl
IGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAgIGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25N
b2RlOjpHZW5lcmljLCAuaXRlcmF0b3JPcGVuR2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0
ZXJhdG9yT3BlbkdlbmVyaWM6CisgICAgbWFjcm8gZ290b0dldEJ5SWRDaGVja3BvaW50KCkKKyAg
ICAgICAgam1wIC5nZXRCeUlkU3RhcnQKICAgICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShk
c3QpCisgICAgICAgIGdldChtX3N5bWJvbEl0ZXJhdG9yLCBkc3QpCisgICAgZW5kCisKKyAgICBt
YWNybyBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNTdGFydChkc3QpCisgICAgICAgIGdldHUoc2l6
ZSwgT3BJdGVyYXRvck9wZW4sIG1fc3RhY2tPZmZzZXQsIGRzdCkKKyAgICBlbmQKKworICAgIG1h
Y3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc0NvdW50KGRzdCkKKyAgICAgICAgbW92ZSAxLCBk
c3QKKyAgICBlbmQKKworICAgIGNhbGxIZWxwZXIob3BfaXRlcmF0b3Jfb3BlbiwgX2xsaW50X3Ns
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2NhbGwsIE9wSXRlcmF0b3JPcGVuLCBtX2l0ZXJhdG9yUHJv
ZmlsZSwgbV9pdGVyYXRvciwgcHJlcGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0QnlJ
ZENoZWNrcG9pbnQsIG1ldGFkYXRhLCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhp
c1N0YXJ0LCBnZXRBcmd1bWVudEluY2x1ZGluZ1RoaXNDb3VudCkKKworLmdldEJ5SWRTdGFydDoK
KyAgICBtYWNybyBzdG9yZU5leHRBbmREaXNwYXRjaCh2YWx1ZVRhZywgdmFsdWVQYXlsb2FkKQor
ICAgICAgICBtb3ZlIHZhbHVlVGFnLCB0MgorICAgICAgICBtb3ZlIHZhbHVlUGF5bG9hZCwgdDMK
KyAgICAgICAgZ2V0KG1fbmV4dCwgdDEpCisgICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgICAgICBkaXNwYXRjaCgpCisgICAgZW5kCisKKyAgICAjIFdlIG5lZWQgdG8gbG9hZCBtX2l0
ZXJhdG9yIGludG8gdDMgYmVjYXVzZSB0aGF0J3Mgd2hlcmUKKyAgICAjIHBlcmZvcm1HZXRCeUlE
SGVscGVyIGV4cGVjdHMgdGhlIGJhc2Ugb2JqZWN0ICAgIAorICAgIGxvYWRWYXJpYWJsZShnZXQs
IG1faXRlcmF0b3IsIHQzLCB0MCwgdDMpCisgICAgYmluZXEgdDAsIENlbGxUYWcsIC5pdGVyYXRv
ck9wZW5HZW5lcmljR2V0TmV4dFNsb3cKKyAgICBwZXJmb3JtR2V0QnlJREhlbHBlcihPcEl0ZXJh
dG9yT3BlbiwgbV9tb2RlTWV0YWRhdGEsIG1fbmV4dFByb2ZpbGUsIC5pdGVyYXRvck9wZW5HZW5l
cmljR2V0TmV4dFNsb3csIHNpemUsIG1ldGFkYXRhLCBzdG9yZU5leHRBbmREaXNwYXRjaCkKKwor
Lml0ZXJhdG9yT3BlbkdlbmVyaWNHZXROZXh0U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQorICAgIGRpc3BhdGNoKCkKIGVuZCkK
IAotbGxpbnRPcChvcF9pdGVyYXRvcl9uZXh0LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gpCi0gICAgZGVmaW5lT1NSRXhpdFJldHVybkxhYmVsKG9wX2l0ZXJhdG9y
X25leHQsIHNpemUpCi0gICAgYnJlYWsKLSAgICBpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgotICAg
ICAgICAjIEluc2VydCBzdXBlcmZsb3VzIGNhbGwgcmV0dXJuIGxhYmVscyBmb3IgQ2xvb3AuCi0g
ICAgICAgICMgRklYTUU6IE5vdCBzdXJlIHdoeSB0d28gYXJlIG9ubHkgbmVlZGVkLi4uCi0gICAg
ICAgIGNsb29wQ2FsbEpTRnVuY3Rpb24gYTAgIyBuZXh0Ci0gICAgICAgIGNsb29wQ2FsbEpTRnVu
Y3Rpb24gYTAgIyBnZXQgZG9uZQorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9pdGVyYXRvcl9uZXh0
LCBPcEl0ZXJhdG9yTmV4dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCisgICAgICAgIAorICAgIGxvYWRWYXJpYWJsZShnZXQsIG1fbmV4dCwgdDAsIHQxLCB0
MCkKKyAgICBiaWVxIHQxLCBVbmRlZmluZWRUYWcsIC5pdGVyYXRvck5leHRHZW5lcmljCisgICAg
YnRpbnogdDAsIC5pdGVyYXRvck5leHRHZW5lcmljCisKKyAgICBtYWNybyBmYXN0TmFycm93KCkK
KyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X25hcnJvdykKKyAg
ICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTE2KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVy
YXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUxNikKKyAgICBlbmQKKyAgICBtYWNybyBmYXN0V2lkZTMy
KCkKKyAgICAgICAgY2FsbFNsb3dQYXRoKF9pdGVyYXRvcl9uZXh0X3RyeV9mYXN0X3dpZGUzMikK
KyAgICBlbmQKKyAgICBzaXplKGZhc3ROYXJyb3csIGZhc3RXaWRlMTYsIGZhc3RXaWRlMzIsIG1h
Y3JvIChjYWxsT3ApIGNhbGxPcCgpIGVuZCkKKworICAgICMgRklYTUU6IFdlIHNob3VsZCBkbyB0
aGlzIHdpdGggaW5saW5lIGFzc2VtYmx5IHNpbmNlIGl0J3MgdGhlICJmYXN0IiBjYXNlLgorICAg
IGJiZXEgcjEsIGNvbnN0ZXhwciBJdGVyYXRpb25Nb2RlOjpHZW5lcmljLCAuaXRlcmF0b3JOZXh0
R2VuZXJpYworICAgIGRpc3BhdGNoKCkKKworLml0ZXJhdG9yTmV4dEdlbmVyaWM6CisgICAgbWFj
cm8gZ290b0dldERvbmVDaGVja3BvaW50KCkKKyAgICAgICAgam1wIC5nZXREb25lU3RhcnQKKyAg
ICBlbmQKKworICAgIG1hY3JvIGdldENhbGxlZShkc3QpCisgICAgICAgIGdldChtX25leHQsIGRz
dCkKKyAgICBlbmQKKworICAgIG1hY3JvIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0KGRz
dCkKKyAgICAgICAgZ2V0dShzaXplLCBPcEl0ZXJhdG9yTmV4dCwgbV9zdGFja09mZnNldCwgZHN0
KQorICAgIGVuZAorCisgICAgbWFjcm8gZ2V0QXJndW1lbnRJbmNsdWRpbmdUaGlzQ291bnQoZHN0
KQorICAgICAgICBtb3ZlIDEsIGRzdAorICAgIGVuZAorCisgICAgIyBVc2UgbV92YWx1ZSBzbG90
IGFzIGEgdG1wIHNpbmNlIHdlIGFyZSBnb2luZyB0byB3cml0ZSB0byBpdCBsYXRlci4KKyAgICBj
YWxsSGVscGVyKG9wX2l0ZXJhdG9yX25leHQsIF9sbGludF9zbG93X3BhdGhfaXRlcmF0b3JfbmV4
dF9jYWxsLCBPcEl0ZXJhdG9yTmV4dCwgbV9uZXh0UmVzdWx0UHJvZmlsZSwgbV92YWx1ZSwgcHJl
cGFyZUZvclJlZ3VsYXJDYWxsLCBzaXplLCBnb3RvR2V0RG9uZUNoZWNrcG9pbnQsIG1ldGFkYXRh
LCBnZXRDYWxsZWUsIGdldEFyZ3VtZW50SW5jbHVkaW5nVGhpc1N0YXJ0LCBnZXRBcmd1bWVudElu
Y2x1ZGluZ1RoaXNDb3VudCkKKworLmdldERvbmVTdGFydDoKKyAgICBtYWNybyBzdG9yZURvbmVB
bmRKbXBUb0dldFZhbHVlKGRvbmVWYWx1ZVRhZywgZG9uZVZhbHVlUGF5bG9hZCkKKyAgICAgICAg
bW92ZSBkb25lVmFsdWVUYWcsIHQwCisgICAgICAgIG1vdmUgZG9uZVZhbHVlUGF5bG9hZCwgdDEK
KyAgICAgICAgZ2V0KG1fZG9uZSwgdDIpCisgICAgICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgICAgICBqbXAgLmdldFZhbHVlU3RhcnQKICAgICBlbmQKKworICAgIGxvYWRWYXJpYWJsZShn
ZXQsIG1fdmFsdWUsIHQzLCB0MCwgdDMpCisgICAgYmluZXEgdDAsIENlbGxUYWcsIC5nZXREb25l
U2xvdworICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9wSXRlcmF0b3JOZXh0LCBtX2RvbmVNb2Rl
TWV0YWRhdGEsIG1fZG9uZVByb2ZpbGUsIC5nZXREb25lU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0
b3JlRG9uZUFuZEptcFRvR2V0VmFsdWUpCisKKy5nZXREb25lU2xvdzoKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQorICAgIGJyYW5jaElm
RXhjZXB0aW9uKF9sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lKQorICAgIGxv
YWRWYXJpYWJsZShnZXQsIG1fZG9uZSwgdDEsIHQwLCB0MSkKKworICAgICMgc3RvcmVEb25lQW5k
Sm1wVG9HZXRWYWx1ZSBwdXRzIHRoZSBkb25lVmFsdWUgaW50byB0MAorLmdldFZhbHVlU3RhcnQ6
CisgICAgIyBJbiAzMiBiaXRzLCBmb2xsb3dpbmcgc2xvdyBwYXRoIGlmIHRhZ3MgaXMgbm90IG51
bGwsIHVuZGVmaW5lZCwgaW50MzIsIGJvb2xlYW4uCisgICAgIyBUaGVzZSBzYXRpc2Z5IHRoZSBt
YXNrIH4weDMuCisgICAgIyBUaGVyZWZvcmUgaWYgdGhlIG1hc2sgaXMgX25vdF8gc2F0aXNmaWVk
LCB3ZSBicmFuY2ggdG8gdGhlIHNsb3cgY2FzZS4KKyAgICBidGlueiB0MCwgfjB4MywgLmdldFZh
bHVlU2xvdworICAgIGJ0aXogdDEsIDB4MSwgLm5vdERvbmUKKyAgICBkaXNwYXRjaCgpCisKKy5u
b3REb25lOgorICAgIG1hY3JvIHN0b3JlVmFsdWVBbmREaXNwYXRjaCh2VGFnLCB2UGF5bG9hZCkK
KyAgICAgICAgbW92ZSB2VGFnLCB0MgorICAgICAgICBtb3ZlIHZQYXlsb2FkLCB0MworICAgICAg
ICBnZXQobV92YWx1ZSwgdDEpCisgICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgICAg
ICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MCwgMHhiYWRkYjAxZSkKKyAgICAgICAgZGlz
cGF0Y2goKQorICAgIGVuZAorCisgICAgIyBSZWxvYWQgdGhlIG5leHQgcmVzdWx0IHRtcCBzaW5j
ZSB0aGUgZ2V0X2J5X2lkIGFib3ZlIG1heSBoYXZlIGNsb2JiZXJlZCB0My4KKyAgICBsb2FkVmFy
aWFibGUoZ2V0LCBtX3ZhbHVlLCB0MywgdDAsIHQzKQorICAgICMgV2UgZG9uJ3QgbmVlZCB0byBj
aGVjayBpZiB0aGUgaXRlcmF0b3IgcmVzdWx0IGlzIGEgY2VsbCBoZXJlIHNpbmNlIHdlIHdpbGwg
aGF2ZSB0aHJvd24gYW4gZXJyb3IgYmVmb3JlLgorICAgIHBlcmZvcm1HZXRCeUlESGVscGVyKE9w
SXRlcmF0b3JOZXh0LCBtX3ZhbHVlTW9kZU1ldGFkYXRhLCBtX3ZhbHVlUHJvZmlsZSwgLmdldFZh
bHVlU2xvdywgc2l6ZSwgbWV0YWRhdGEsIHN0b3JlVmFsdWVBbmREaXNwYXRjaCkKKworLmdldFZh
bHVlU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pdGVyYXRvcl9uZXh0
X2dldF92YWx1ZSkKKyAgICBkaXNwYXRjaCgpCiBlbmQpCiAKIGxsaW50T3BXaXRoUHJvZmlsZShv
cF9nZXRfaW50ZXJuYWxfZmllbGQsIE9wR2V0SW50ZXJuYWxGaWVsZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIHJldHVybikKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDNlMjAzY2NlMWI1ZTViZmY4NzE3OTQyZTNkOTBjYzQ3N2Y0
NWZiZi4uOGQ3M2I0YThhOGY0MGE4ZmJmMTViYjI4ZDVlZWJmNDg1NjkwZWI1MCAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wNy0yOSAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KKworICAg
ICAgICBmb3IuLm9mIGludHJpbnNpY3MgaW1wbGVtZW50YXRpb24gZm9yIDMyYml0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBKb2ludCB3b3JrIHdpdGgg
Q2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCisgICAgICAgIFVuc2tpcCB0ZXN0cyBw
cmV2aW91c2x5IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgZm9yLi5vZiBpbnRyaW5zaWNzLgorCisg
ICAgICAgICogc3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qczoKKyAgICAg
ICAgKiBzdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0dXJuLW5v
bi1vYmplY3QuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLW9zci1h
dC1pdGVyYXRvci1zZXQtbG9jYWwuanM6CisgICAgICAgICogc3RyZXNzL2Zvci1vZi1pdGVyYXRv
ci1vcGVuLXJldHVybi1ub24tb2JqZWN0LmpzOgorCiAyMDIwLTA3LTI5ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUmVmbGVjdCBvYmplY3Qgc2hv
dWxkIGhhdmUgdG9TdHJpbmdUYWcgd2l0aCAiUmVmbGVjdCIKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcyBiL0pTVGVzdHMvc3RyZXNz
L2Zvci1vZi1hcnJheS1kaWZmZXJlbnQtZ2xvYmFscy5qcwppbmRleCA4MTViZjg1OThmM2Y1M2Vi
MmIzZjk3MTNlOGU3YjVjZDYzMTdlZjMxLi43ZDc3Y2Y4OGFiNjAyY2U0ZDM4N2I3MWRjY2ZiZjFk
YWYyMGY4ZTJlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtYXJyYXktZGlmZmVy
ZW50LWdsb2JhbHMuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWFycmF5LWRpZmZlcmVu
dC1nbG9iYWxzLmpzCkBAIC0xLDQgKzEsMyBAQAotLy9AIHNraXAgaWYgWyJhcm0iLCAibWlwcyJd
LmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBsZXQgY291bnQgPSAwOwogCiBmdW5jdGlvbiBmb28o
YXJyYXkpIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVu
LW9zci1hdC1pbmxpbmVkLXJldHVybi1ub24tb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9y
LW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0dXJuLW5vbi1vYmplY3QuanMKaW5k
ZXggYzRkOGE4ZThiMjhlZjJhOGQ2NmY1NGM1MWYzNTYyYTk4YjIyYTkyNS4uMjE4OTdmYmNlYjFl
ZDVmNTQ3ZDM4NDc3NjBkNWNjMzIzMTBkMGY5NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3Mv
Zm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQtcmV0dXJuLW5vbi1vYmplY3QuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0LWlubGluZWQt
cmV0dXJuLW5vbi1vYmplY3QuanMKQEAgLTEsNSArMSwzIEBACi0vL0Agc2tpcCBpZiAkbW9kZWwg
PT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IGZv
ci1vZiBmb3IgMzJiaXQgYXJjaGl0ZWN0dXJlLgotLy9AIHNraXAgaWYgWyJhcm0iLCAibWlwcyJd
LmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBsZXQgc2hvdWxkVmVuZE51bGwgPSBmYWxzZTsKIGZ1
bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICBpZiAoc2hvdWxkVmVuZE51bGwpCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaXRlcmF0b3It
c2V0LWxvY2FsLmpzIGIvSlNUZXN0cy9zdHJlc3MvZm9yLW9mLWl0ZXJhdG9yLW9wZW4tb3NyLWF0
LWl0ZXJhdG9yLXNldC1sb2NhbC5qcwppbmRleCBjOWIyZjcwZmZmOWVmZTQ4ZGRjNTcxM2U4YmJj
MGIxYzNmYTZhYTI0Li5iYzNjZjdmMTFkNTM0YTQ4NjNjMjMyYWZjYTI5NjIyNGM4MjBhZDIxIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1vc3ItYXQtaXRl
cmF0b3Itc2V0LWxvY2FsLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1v
cGVuLW9zci1hdC1pdGVyYXRvci1zZXQtbG9jYWwuanMKQEAgLTEsNSArMSwzIEBACi0vL0Agc2tp
cCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIFdlIGFyZSBub3Qgc3VwcG9y
dGluZyBmYXN0IGZvci1vZiBmb3IgMzJiaXQgYXJjaGl0ZWN0dXJlLgotLy9AIHNraXAgaWYgWyJh
cm0iLCAibWlwcyJdLmluY2x1ZGU/KCRhcmNoaXRlY3R1cmUpCiBsZXQgc2hvdWxkVmVuZE51bGwg
PSBmYWxzZTsKIGZ1bmN0aW9uIHZlbmRJdGVyYXRvcigpIHsKICAgICBpZiAoc2hvdWxkVmVuZE51
bGwpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9mb3Itb2YtaXRlcmF0b3Itb3Blbi1yZXR1
cm4tbm9uLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLXJl
dHVybi1ub24tb2JqZWN0LmpzCmluZGV4IGUzZWRmYTkyNjk3YmVmYjc1NTdkMGRiYjYyZjZhNGQ4
NDE3ZDkxZTMuLmU2ZjM5Y2MzNDNlYjk4YWVlMzA2MmRlMWNmZWM0ZWIxYjY0Mjk2N2MgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLXJldHVybi1ub24tb2Jq
ZWN0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Zvci1vZi1pdGVyYXRvci1vcGVuLXJldHVybi1u
b24tb2JqZWN0LmpzCkBAIC0xLDUgKzEsMyBAQAotLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBs
ZSBXYXRjaCBTZXJpZXMgMyIgIyBXZSBhcmUgbm90IHN1cHBvcnRpbmcgZmFzdCBmb3Itb2YgZm9y
IDMyYml0IGFyY2hpdGVjdHVyZS4KLS8vQCBza2lwIGlmIFsiYXJtIiwgIm1pcHMiXS5pbmNsdWRl
PygkYXJjaGl0ZWN0dXJlKQogZnVuY3Rpb24gdmVuZEl0ZXJhdG9yKCkgewogICAgIHJldHVybiAx
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>