<?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>229543</bug_id>
          
          <creation_ts>2021-08-26 01:26:51 -0700</creation_ts>
          <short_desc>[JSC] ASSERT failed in stress/for-in-tests.js (32bit)</short_desc>
          <delta_ts>2021-09-14 03:13:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mikhail</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1787508</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-08-26 01:26:51 -0700</bug_when>
    <thetext>Very likely introduced by r280760, very likely making other tests fail. Stack trace:

ASSERTION FAILED: currentLowest != NUM_REGS &amp;&amp; currentSpillOrder != SpillHintInvalid
../../Source/JavaScriptCore/dfg/DFGRegisterBank.h(137) : JSC::DFG::RegisterBank&lt;BankInfo&gt;::RegID JSC::DFG::RegisterBank&lt;BankInfo&gt;::allocate(JSC::VirtualRegister&amp;) [with BankInfo = JSC::GPRInfo; JSC::DFG::RegisterBank&lt;BankInfo&gt;::RegID = JSC::ARMRegisters::RegisterID]

Thread 1 &quot;jsc&quot; received signal SIGABRT, Aborted.
__libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
47	../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file or directory.
(gdb) bt
#0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
#1  0xf5eeeea0 in __libc_signal_restore_set (set=0xfffebcac) at ../sysdeps/unix/sysv/linux/internal-signals.h:86
#2  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:48
#3  0xf5edf7a2 in __GI_abort () at abort.c:79
#4  0xf629a090 in CRASH_WITH_INFO(...) () at WTF/Headers/wtf/Assertions.h:750
#5  0xf68d1e9e in JSC::DFG::RegisterBank&lt;JSC::GPRInfo&gt;::allocate (this=0xf23f6224, spillMe=...) at ../../Source/JavaScriptCore/dfg/DFGRegisterBank.h:137
#6  0xf68cc656 in JSC::DFG::SpeculativeJIT::allocate (this=0xf23f6000) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:237
#7  0xf68788c2 in JSC::DFG::GPRTemporary::GPRTemporary (this=0xfffebfec, jit=0xf23f6000) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1600
#8  0xf68789e0 in JSC::DFG::JSValueRegsTemporary::JSValueRegsTemporary (this=0xfffebfe4, jit=0xf23f6000) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1635
#9  0xf68a6e80 in operator() (__closure=0xfffec73c) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13597
#10 0xf68c5010 in WTF::ScopedLambdaFunctor&lt;std::tuple&lt;JSC::JSValueRegs, JSC::DataFormat&gt;(JSC::DataFormat), JSC::DFG::SpeculativeJIT::compileEnumeratorGetByVal(JSC::DFG::Node*)::&lt;lambda(JSC::GPRReg)&gt;::&lt;lambda(JSC::DataFormat)&gt; &gt;::implFunction(void *, JSC::DataFormat) (argument=0xfffec734, arguments#0=JSC::DataFormatJS)
    at WTF/Headers/wtf/ScopedLambda.h:106
#11 0xf68d4ca0 in WTF::ScopedLambda&lt;std::tuple&lt;JSC::JSValueRegs, JSC::DataFormat&gt; (JSC::DataFormat)&gt;::operator()&lt;JSC::DataFormat&gt;(JSC::DataFormat&amp;&amp;) const (this=0xfffec734)
    at WTF/Headers/wtf/ScopedLambda.h:58
#12 0xf6a417be in JSC::DFG::SpeculativeJIT::compileGetByVal(JSC::DFG::Node*, WTF::ScopedLambda&lt;std::tuple&lt;JSC::JSValueRegs, JSC::DataFormat&gt; (JSC::DataFormat)&gt; const&amp;) (
    this=0xf23f6000, node=0xf371aa20, prefix=...) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:1881
#13 0xf68a7592 in operator() (__closure=0xfffec7ec, baseCellGPR=JSC::ARMRegisters::r2) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13584
#14 0xf68a776c in JSC::DFG::SpeculativeJIT::compileEnumeratorGetByVal (this=0xf23f6000, node=0xf371aa20) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13674
#15 0xf6a4b548 in JSC::DFG::SpeculativeJIT::compile (this=0xf23f6000, node=0xf371aa20) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4232
#16 0xf687b9e0 in JSC::DFG::SpeculativeJIT::compileCurrentBlock (this=0xf23f6000) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2291
#17 0xf687c042 in JSC::DFG::SpeculativeJIT::compile (this=0xf23f6000) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2401
#18 0xf673885e in JSC::DFG::JITCompiler::compileBody (this=0xfffed940) at ../../Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:135
#19 0xf673a250 in JSC::DFG::JITCompiler::compileFunction (this=0xfffed940) at ../../Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:437
#20 0xf67b59cc in JSC::DFG::Plan::compileInThreadImpl (this=0xf3799bc0) at ../../Source/JavaScriptCore/dfg/DFGPlan.cpp:343
#21 0xf6cb6f64 in JSC::JITPlan::compileInThread (this=0xf3799bc0, thread=0x0) at ../../Source/JavaScriptCore/jit/JITPlan.cpp:165
#22 0xf6cfe4e0 in JSC::JITWorklist::enqueue (this=0xf37c7360, plan=...) at ../../Source/JavaScriptCore/jit/JITWorklist.cpp:83
#23 0xf66de744 in JSC::DFG::compileImpl (vm=..., codeBlock=0xf1fad180, profiledDFGCodeBlock=0x0, mode=JSC::JITCompilationMode::DFG, osrEntryBytecodeIndex=..., 
    mustHandleValues=..., callback=...) at ../../Source/JavaScriptCore/dfg/DFGDriver.cpp:90
#24 0xf66de7f0 in JSC::DFG::compile (vm=..., codeBlock=0xf1fad180, profiledDFGCodeBlock=0x0, mode=JSC::JITCompilationMode::DFG, osrEntryBytecodeIndex=..., 
    mustHandleValues=..., callback=...) at ../../Source/JavaScriptCore/dfg/DFGDriver.cpp:106
#25 0xf6cafb26 in JSC::operationOptimize (vmPointer=0xf25f5000, bytecodeIndexBits=0) at ../../Source/JavaScriptCore/jit/JITOperations.cpp:2088
#26 0xf270d6bc in ?? ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789628</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-02 01:28:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/82664792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790238</commentid>
    <comment_count>2</comment_count>
      <attachid>437283</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-03 10:40:38 -0700</bug_when>
    <thetext>Created attachment 437283
v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790313</commentid>
    <comment_count>3</comment_count>
      <attachid>437283</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-03 12:58:25 -0700</bug_when>
    <thetext>Comment on attachment 437283
v1

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13659
&gt; +            // Zero out modeGPR, it&apos;s not used anymore and we might want to reuse it.
&gt; +            m_jit.xorPtr(modeGPR, modeGPR);

I don&apos;t think this is necessary.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:13699
&gt; +                    // We can reuse modeGPR, since it&apos;s not used anymore. This reduces a bit the register pressure in some architectures.
&gt; +                    storageGPR = modeGPR;

I think this is not correct. modeGPR comes from SpeculateStrictInt32Operand. This means that some other node can expect that this register still contains the value for mode.
If we change it, then we will break that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792318</commentid>
    <comment_count>4</comment_count>
      <attachid>437864</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-10 06:45:35 -0700</bug_when>
    <thetext>Created attachment 437864
WIP

WIP. Implement a generic call op for enumeratorGetByVal that just calls the slow path, and use it on 32bit. There&apos;s a ugly hack (passing the metadata pointer to the slow path method) to be able to reuse easily the code, since this is just for testing. Seems to get rid of a lot of failures without introducing a ton of new regressions (like the previous attempt).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792417</commentid>
    <comment_count>5</comment_count>
      <attachid>437864</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-10 10:00:29 -0700</bug_when>
    <thetext>Comment on attachment 437864
WIP

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4486
&gt; +    JSValueRegsFlushedCallResult result(this);
&gt; +    JSValueRegs resultRegs = result.regs();

This should be done after calling flushRegisters()

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4499
&gt; +    SpeculateStrictInt32Operand index(this, m_graph.varArgChild(node, 3));
&gt; +    SpeculateStrictInt32Operand mode(this, m_graph.varArgChild(node, 4));
&gt; +    SpeculateCellOperand enumerator(this, m_graph.varArgChild(node, 5));

We should retrieve GPRReg for each ones before calling flushRegisters().

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1014
&gt; +    JSValue propertyName = GET_C(bytecode.m_propertyName).jsValue();

It was GET() in the previous code (not GET_C).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792677</commentid>
    <comment_count>6</comment_count>
      <attachid>437947</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-11 04:20:07 -0700</bug_when>
    <thetext>Created attachment 437947
v3

v3, addressing comments, added a pointer to a follow-up to reenable the optimizations, passed the arrayProfile and enumerator metadata directly to the slow path op so I don&apos;t need to include the bytecode header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792678</commentid>
    <comment_count>7</comment_count>
      <attachid>437948</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-11 04:21:52 -0700</bug_when>
    <thetext>Created attachment 437948
v4

v4, minor nit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792894</commentid>
    <comment_count>8</comment_count>
      <attachid>437948</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 02:20:48 -0700</bug_when>
    <thetext>Comment on attachment 437948
v4

Can you set r? if this is ready?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792905</commentid>
    <comment_count>9</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 03:20:42 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #8)
&gt; Comment on attachment 437948 [details]
&gt; v4
&gt; 
&gt; Can you set r? if this is ready?

Yeah, I think this is good to go but I want to double check it&apos;s not causing any other issues. Will set r? then! In the meantime bug #230150 is another related (easier) issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792906</commentid>
    <comment_count>10</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 03:36:57 -0700</bug_when>
    <thetext>Yeah, so I think there&apos;s definitely at least one mistake in the current patch. I get this in JSTests/stress/for-in-primitive-index-on-prototype.js:

DFG ASSERTION FAILED: Edge verification error: D@71-&gt;Check:Cell:D@67 was expected to have type Cell but has type Int32 (12884901888)
../../Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h(173) : void JSC::DFG::AbstractInterpreter&lt;AbstractStateType&gt;::verifyEdge(JSC::DFG::Node*, JSC::DFG::Edge) [with AbstractStateType = JSC::DFG::InPlaceAbstractState]

Thread 1 &quot;jsc&quot; received signal SIGABRT, Aborted.
__libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
47	../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file or directory.
(gdb) bt
#0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47
#1  0xf5e6dea0 in __libc_signal_restore_set (set=0xfffeb51c) at ../sysdeps/unix/sysv/linux/internal-signals.h:86
#2  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:48
#3  0xf5e5e7a2 in __GI_abort () at abort.c:79
#4  0xf621a210 in CRASH_WITH_INFO(...) () at WTF/Headers/wtf/Assertions.h:750
#5  0xf65b4456 in JSC::DFG::AbstractInterpreter&lt;JSC::DFG::InPlaceAbstractState&gt;::verifyEdge (this=0xf22ffec0, node=0xf369ba80, edge=...)
    at ../../Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:173
#6  0xf65ad73c in JSC::DFG::AbstractInterpreter&lt;JSC::DFG::InPlaceAbstractState&gt;::verifyEdges (this=0xf22ffec0, node=0xf369ba80)
    at ../../Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:179
#7  0xf6591140 in JSC::DFG::AbstractInterpreter&lt;JSC::DFG::InPlaceAbstractState&gt;::executeEffects (this=0xf22ffec0, clobberLimit=8, node=0xf369ba80)
    at ../../Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:348
#8  0xf6851e5e in JSC::DFG::AbstractInterpreter&lt;JSC::DFG::InPlaceAbstractState&gt;::executeEffects (this=0xf22ffec0, indexInBlock=8)
    at ../../Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:4708
#9  0xf67f9944 in JSC::DFG::SpeculativeJIT::compileCurrentBlock (this=0xf22ffb00) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2309
#10 0xf67f9e7a in JSC::DFG::SpeculativeJIT::compile (this=0xf22ffb00) at ../../Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2401
#11 0xf66b6f6e in JSC::DFG::JITCompiler::compileBody (this=0xfffed9c0) at ../../Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:135
#12 0xf66b895c in JSC::DFG::JITCompiler::compileFunction (this=0xfffed9c0) at ../../Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:437
#13 0xf67343f8 in JSC::DFG::Plan::compileInThreadImpl (this=0xf369f000) at ../../Source/JavaScriptCore/dfg/DFGPlan.cpp:343
#14 0xf6c65bcc in JSC::JITPlan::compileInThread (this=0xf369f000, thread=0x0) at ../../Source/JavaScriptCore/jit/JITPlan.cpp:165
#15 0xf6ca8214 in JSC::JITWorklist::enqueue (this=0xf36c5288, plan=...) at ../../Source/JavaScriptCore/jit/JITWorklist.cpp:83
#16 0xf665cb8c in JSC::DFG::compileImpl (vm=..., codeBlock=0xf1eac1c0, profiledDFGCodeBlock=0x0, mode=JSC::JITCompilationMode::DFG, osrEntryBytecodeIndex=..., 
    mustHandleValues=..., callback=...) at ../../Source/JavaScriptCore/dfg/DFGDriver.cpp:90
#17 0xf665cc38 in JSC::DFG::compile (vm=..., codeBlock=0xf1eac1c0, profiledDFGCodeBlock=0x0, mode=JSC::JITCompilationMode::DFG, osrEntryBytecodeIndex=..., 
    mustHandleValues=..., callback=...) at ../../Source/JavaScriptCore/dfg/DFGDriver.cpp:106
#18 0xf6c5e78e in JSC::operationOptimize (vmPointer=0xf24f5000, bytecodeIndexBits=0) at ../../Source/JavaScriptCore/jit/JITOperations.cpp:2095
#19 0xf25ff804 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
quit) 

Seems the speculation in the new method is wrong, or something is out of sync with what is happening now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792931</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 05:58:05 -0700</bug_when>
    <thetext>(In reply to Xan Lopez from comment #10)
&gt; 
&gt; Seems the speculation in the new method is wrong, or something is out of
&gt; sync with what is happening now.

For 32bit the Fixup phase has base as a cell, so we should either change that or make the DFG call operator for 32bit just do that. New patch will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792940</commentid>
    <comment_count>12</comment_count>
      <attachid>438037</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 07:17:06 -0700</bug_when>
    <thetext>Created attachment 438037
v5

Speculate cell for base operand on 32bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792993</commentid>
    <comment_count>13</comment_count>
      <attachid>438037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 10:24:47 -0700</bug_when>
    <thetext>Comment on attachment 438037
v5

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792999</commentid>
    <comment_count>14</comment_count>
      <attachid>438037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 10:38:59 -0700</bug_when>
    <thetext>Comment on attachment 438037
v5

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

Ah, I found a bug.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4486
&gt; +    SpeculateCellOperand baseOperand(this, m_graph.varArgChild(node, 0), ManualOperandSpeculation);

If you want to use SpeculateCellOperand, then you need to use CellUse / KnownCellUse for base edge. But we do not have that edge, and no speculate().
You need to attach CellUse / KnownCellUse in fixup phase in 32bit. (And you also need to check the other EnumeratorGetByVal use to ensure that edge UseKind is handled.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4488
&gt; +    JSValueOperand property(this, m_graph.varArgChild(node, 1), ManualOperandSpeculation);

This ManualOperandSpeculation is wrong: if you use ManualOperandSpeculation, then you need to call `speculate(...)`.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.h:131
&gt; +            // If propertyName is not a cell then we are in index+named mode, so do what RecoverNameAndGetVal does.
&gt; +            JSString* string = enumerator-&gt;propertyNameAtIndex(index);
&gt; +            auto propertyName = string-&gt;toIdentifier(globalObject);
&gt; +            RETURN_IF_EXCEPTION(scope, { });
&gt; +            RELEASE_AND_RETURN(scope, baseValue.get(globalObject, propertyName));

Why do we need this new code? Can you add a test which stress this code path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793029</commentid>
    <comment_count>15</comment_count>
      <attachid>438060</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 11:44:22 -0700</bug_when>
    <thetext>Created attachment 438060
v6

- the FixUp phase was already setting CellUse for the base, so no changes there.
- get rid of the ManualOperandSpeculation args.
- add a comment clarifying what&apos;s the reason for the extra branch in the CommonSlowPaths method, with a reference to the bug to get rid of it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793031</commentid>
    <comment_count>16</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 11:45:39 -0700</bug_when>
    <thetext>(In reply to Xan Lopez from comment #15)
&gt; Created attachment 438060 [details]
&gt; v6
&gt; 
&gt; - add a comment clarifying what&apos;s the reason for the extra branch in the
&gt; CommonSlowPaths method, with a reference to the bug to get rid of it again.

oh, and this is already tested by several tests, right. the same one in the bug title will fail without this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793035</commentid>
    <comment_count>17</comment_count>
      <attachid>438060</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 11:47:48 -0700</bug_when>
    <thetext>Comment on attachment 438060
v6

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

r=me with nits.

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2550
&gt; +    JSValue base = JSValue(baseCell);
&gt; +    RETURN_IF_EXCEPTION(scope, { });
&gt; +

This is not necessary. You can just pass JSCell* baseCell to CommonSlowPaths::opEnumeratorGetByVal

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2552
&gt; +    RETURN_IF_EXCEPTION(scope, { });

This is not necessary since JSValue::decode never throws an error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793104</commentid>
    <comment_count>18</comment_count>
      <attachid>438080</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 14:35:12 -0700</bug_when>
    <thetext>Created attachment 438080
v7

- Change the explicit JSCell*-&gt;JSValue conversion for an implicit one when calling the slow path
- Make the new code in the CommonSlowPaths method just available for 32bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793121</commentid>
    <comment_count>19</comment_count>
      <attachid>438080</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-13 15:22:27 -0700</bug_when>
    <thetext>Comment on attachment 438080
v7

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

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:2549
&gt; +    RETURN_IF_EXCEPTION(scope, { });

This is not necessary. Please remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793205</commentid>
    <comment_count>20</comment_count>
      <attachid>438104</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2021-09-13 23:48:11 -0700</bug_when>
    <thetext>Created attachment 438104
v8

Remove unnecessary RETURN_IF_EXCEPTION()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793227</commentid>
    <comment_count>21</comment_count>
      <attachid>438104</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-14 01:28:17 -0700</bug_when>
    <thetext>Comment on attachment 438104
v8

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793243</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-14 03:04:16 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793245</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-14 03:13:30 -0700</bug_when>
    <thetext>Committed r282385 (241646@main): &lt;https://commits.webkit.org/241646@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438104.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437283</attachid>
            <date>2021-09-03 10:40:38 -0700</date>
            <delta_ts>2021-09-03 13:23:54 -0700</delta_ts>
            <desc>v1</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>6718</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAwOGY5Y2VlZmE3ZDhkOThhMjc2YTc4ZWFiOTViZTEzNjU5Y2U5MjZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogRnJpLCAzIFNlcCAyMDIxIDEzOjA5OjQ5ICswMjAwClN1YmplY3Q6IFtQ
QVRDSF0gW0pTQ10gQVNTRVJUIGZhaWxlZCBpbiBzdHJlc3MvZm9yLWluLXRlc3RzLmpzICgzMmJp
dCkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1NDMKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKREZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1l
cmF0b3JHZXRCeVZhbCB1c2VzIHR3byBtb3JlCnJlZ2lzdGVycyB0aGFuIHdlIGhhdmUgb24gQVJN
djcuIEFkZCBvbmUgbW9yZSBjYWxsZWUtc2F2ZSByZWdpc3Rlcgp0byBERkcsIGFuZCByZXVzZSBv
bmUgcmVnaXN0ZXIgaW4gdGhhdCBtZXRob2QuCgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CihKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwpOgoq
IGppdC9HUFJJbmZvLmg6CihKU0M6OkdQUkluZm86OnRvUmVnaXN0ZXIpOgooSlNDOjpHUFJJbmZv
Ojp0b0luZGV4KToKKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgooSlNDOjpSZWdpc3RlclNldDo6ZGZn
Q2FsbGVlU2F2ZVJlZ2lzdGVycyk6Ci0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKysrKysrKysrCiAuLi4vSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCAgfCAyMCArKysrKysrKystLS0tLS0tLS0tCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCAgICAgICAgICAgfCAgNiArKystLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwICAgICB8ICAxICsKIDQg
ZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZWM4YjZjNTkzYzU5Li4zODFiY2FjMjYzZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA5LTAzICBYYW4gTMOzcGV6
ICA8eGFuQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gQVNTRVJUIGZhaWxlZCBpbiBzdHJl
c3MvZm9yLWluLXRlc3RzLmpzICgzMmJpdCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9y
R2V0QnlWYWwgdXNlcyB0d28gbW9yZQorICAgICAgICByZWdpc3RlcnMgdGhhbiB3ZSBoYXZlIG9u
IEFSTXY3LiBBZGQgb25lIG1vcmUgY2FsbGVlLXNhdmUgcmVnaXN0ZXIKKyAgICAgICAgdG8gREZH
LCBhbmQgcmV1c2Ugb25lIHJlZ2lzdGVyIGluIHRoYXQgbWV0aG9kLgorCisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoK
KyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkdQUklu
Zm86OnRvSW5kZXgpOgorICAgICAgICAqIGppdC9SZWdpc3RlclNldC5jcHA6CisgICAgICAgIChK
U0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKwogMjAyMS0wOS0wMiAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEZpeCBX
ZWJLaXRBZGRpdGlvbnMgZGlyZWN0b3J5IHRyYXZlcnNhbCBpbiBvZmZsaW5lYXNtCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDgxNjRm
YWViYzA0Mi4uNTIxNzVmYzliYjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTM2NTEsMTkgKzEzNjUxLDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgICAgICAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKIAotICAgICAgICAgICAgYm9vbCBo
YXZlU3RvcmFnZSA9ICEhc3RvcmFnZUVkZ2U7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3Rv
cmFnZVRlbXBvcmFyeTsKLSAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSOwotICAgICAgICAg
ICAgaWYgKCFoYXZlU3RvcmFnZSkgewotICAgICAgICAgICAgICAgIHN0b3JhZ2VUZW1wb3Jhcnkg
PSBHUFJUZW1wb3JhcnkodGhpcywgUmV1c2UsIGVudW1lcmF0b3IpOwotICAgICAgICAgICAgICAg
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlVGVtcG9yYXJ5LmdwcigpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7Ci0KICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3RGYXN0TmFtZWRDYXNlczsKIAogICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBnZW5lcmF0ZSB0aGlzIGNvZGUgaWYgd2Uga25v
dyBiYXNlIGlzIG5vdCBhbiBvYmplY3QuCiAgICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBtb2RlR1BS
LCBUcnVzdGVkSW1tMzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZSB8IEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGUpKSk7CisgICAgICAgICAgICAvLyBa
ZXJvIG91dCBtb2RlR1BSLCBpdCdzIG5vdCB1c2VkIGFueW1vcmUgYW5kIHdlIG1pZ2h0IHdhbnQg
dG8gcmV1c2UgaXQuCisgICAgICAgICAgICBtX2ppdC54b3JQdHIobW9kZUdQUiwgbW9kZUdQUik7
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoYmFz
ZUVkZ2UpLmlzVHlwZShTcGVjQ2VsbCkpCiAgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1l
ZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZUNlbGxHUFIpKTsKQEAgLTEz
Njk5LDggKzEzNjkyLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9y
R2V0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAg
ICAgICBtX2ppdC5uZWczMihzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zaWdu
RXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWhhdmVTdG9yYWdlKQorICAgICAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0
b3JhZ2VFZGdlOworICAgICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSOworICAgICAgICAg
ICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2Fu
IHJldXNlIG1vZGVHUFIsIHNpbmNlIGl0J3Mgbm90IHVzZWQgYW55bW9yZS4gVGhpcyByZWR1Y2Vz
IGEgYml0IHRoZSByZWdpc3RlciBwcmVzc3VyZSBpbiBzb21lIGFyY2hpdGVjdHVyZXMuCisgICAg
ICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBtb2RlR1BSOwogICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VDZWxsR1BSLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisK
ICAgICAgICAgICAgICAgICBjb25zdGV4cHIgaW50cHRyX3Qgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5
ID0gb2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRPZkxpbmVPZmZzZXQpICogc3RhdGljX2Nhc3Q8
aW50cHRyX3Q+KHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwogICAgICAgICAgICAgICAgIG1faml0
LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VHUFIsIHNjcmF0Y2hH
UFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkZpcnN0UHJvcGVydHkpLCBy
ZXN1bHRSZWdzKTsKICAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDVmZjYyNDc0MWFiNy4uMmY3
Y2Y1YWJiYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNTM4LDcgKzUz
OCw3IEBAIHB1YmxpYzoKIGNsYXNzIEdQUkluZm8gewogcHVibGljOgogICAgIHR5cGVkZWYgR1BS
UmVnIFJlZ2lzdGVyVHlwZTsKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gOTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mUmVn
aXN0ZXJzID0gMTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKIAogICAgIC8vIFRl
bXBvcmFyeSByZWdpc3RlcnMuCkBAIC01NjcsNyArNTY3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCBy
ZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdDUzEgfTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJz
XSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJl
Z1Q3LCByZWdDUzAsIHJlZ0NTMSB9OwogICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtp
bmRleF07CiAgICAgfQogCkBAIC01ODMsNyArNTgzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50
PihyZWcpIDwgMTYpOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdp
c3RlclsxNl0gPQotICAgICAgICAgICAgeyAwLCAxLCAyLCAzLCA3LCA2LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgNCwgNSwgOCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXggfTsKKyAgICAgICAgICAgIHsgMCwg
MSwgMiwgMywgNywgNiwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDQsIDUsIDksIDgsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCB9Owog
ICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlclNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcAppbmRleCBjNTI5ZDc0YWZlYzguLjY0NmNkNGY5MzUyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTI1NCw2ICsyNTQsNyBAQCBSZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzEpOwogI2VsaWYgQ1BVKEFSTTY0KQogICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4
ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0tIAoyLjMxLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437864</attachid>
            <date>2021-09-10 06:45:35 -0700</date>
            <delta_ts>2021-09-11 04:20:07 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>0001-WIP-provide-a-generic-call-operation-for-enumeratorG.patch</filename>
            <type>text/plain</type>
            <size>23586</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA1MWE2YzI2YmFhMjM4MGQwOGQ2OWVmODVkYTVkZTYzOGIxM2FjMjQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFdJUCwgcHJvdmlkZSBhIGdlbmVyaWMgY2FsbCBvcGVyYXRpb24gZm9yIGVudW1lcmF0
b3JHZXRCeVZhbAogdGhhdCBqdXN0IGRvZXMgdGhlIHNsb3cgcGF0aC4KCi0tLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDE2ICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggICAgIHwgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8IDEwOCAtLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgICAgICAgICAgICB8ICAyMyAr
KysrCiAuLi4vZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwICAgICAgICAgICAgICAgfCAxMDgg
KysrKysrKysrKysrKysrKysrCiAuLi4vcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwICAgICAg
ICAgICAgICAgfCAgMzMgKy0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCAgfCAgNDkgKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMjAwIGluc2VydGlv
bnMoKyksIDEzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCA5NDdkZDYxYWRjMzkuLmYyYzU1OGQyZGQwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNTM4LDYgKzI1Mzgs
MjIgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JJbkJ5VmFs
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2IKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwo
Z2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSkpOwogfQogCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNl
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3BlcnR5TmFtZVZhbHVlLCB1aW50MzJfdCBpbmRleCwg
aW50MzJfdCBtb2RlTnVtYmVyLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3Ip
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6
OmRlY29kZShiYXNlVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5TmFtZVZh
bHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOyAgICAKKyAgICBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9IHN0YXRpY19jYXN0PEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1lcmF0b3JHZXRC
eVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5LCBpbmRleCwgbW9kZSwgZW51bWVyYXRv
cikpKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JI
YXNPd25Qcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3BlcnR5TmFt
ZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgaW50MzJfdCBtb2RlTnVtYmVyKSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCmluZGV4IDE0ZTQyNTcxZGY1ZC4uMTIwY2E5ZDhiZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTEyLDYgKzExMiw3IEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0
eU5hbWUsIEVuY29kZWRKU1ZhCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVu
dW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIHVpbnQzMl90LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgdWludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckdldEJ5
VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdSZWdl
eHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJh
eSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHZvaWQqLCBzaXplX3QpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggZTMyM2M5ZGUyYzNmLi44ZTQ4ZGQzYWM3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzY4NywxMTQgKzEzNjg3LDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlO
YW1lKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBu
b2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
OwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0gICAg
ICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAgICAg
IGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVn
cywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAgICAg
ICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0gICAg
ICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAgICAgICAgaWYgKHN0b3JhZ2VF
ZGdlKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRnZSk7
Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9k
ZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgICAg
ICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQotICAgICAgICAgICAgcmVzdWx0
ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVn
cy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3Jh
Z2VFZGdlOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0gICAg
ICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2Up
IHsKLSAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMs
IFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFn
ZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2Jq
ZWN0LgotICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICgh
bV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAg
ICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJh
c2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCi0g
ICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1
Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAgICAg
YXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BS
LAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtO
YW1lZD8KLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5u
b2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5k
KGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQK
LSAgICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3In
cyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAg
ICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwotCi0g
ICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
YmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAgICAg
ICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAgICAgICAgIG91dE9mTGluZUFj
Y2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwg
c2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJ
bmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9q
aXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXZl
U3RvcmFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3Rv
cmFnZUdQUik7Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9mRmly
c3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAqIHN0
YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BS
LCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJzdFBy
b3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZCht
X2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub3RGYXN0TmFtZWRD
YXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVz
dWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdlIHJl
bHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChnZW5l
cmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJhdGlv
bkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAgICAg
IGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRvckdQ
UikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAgIGlm
IChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAvLyBVc2UgbWFudWFsIG9w
ZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBt
b3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJh
c2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywg
YmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRlKGJh
c2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5k
LmdwcigpKTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25U
eXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0eShO
b2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggNTU1OWUxMDU1OTVkLi4zZWNkNDgzM2VhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDQ4MCw2
ICs0NDgwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShOb2Rl
KiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQogCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKE5vZGUqIG5vZGUpCit7
CisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICAvLyBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAg
IC8vIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAvLyBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAv
LyBHUFJSZWcgcHJvcGVydHlHUFIgPSBiYXNlLmdwcigpOworICAgIAorICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJl
Z3MoKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDEpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgIEpTVmFsdWVSZWdz
IHByb3BlcnR5UmVncyA9IHByb3BlcnR5LmpzVmFsdWVSZWdzKCk7CisgICAgU3BlY3VsYXRlU3Ry
aWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykp
OworICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBtb2RlKHRoaXMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgNCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3Io
dGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA1KSk7CisKKyAgICBmbHVzaFJlZ2lzdGVy
cygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2VuZXJp
YywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9w
ZXJ0eVJlZ3MsIGluZGV4LmdwcigpLCBtb2RlLmdwcigpLCBlbnVtZXJhdG9yLmdwcigpKTsKKyAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7Cit9CiAjZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMTg5
ZjY1NGE0Y2JjLi4yNTY5YjI5OWExMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNjM1Miw2ICs2MzUyLDExNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGF0ZUdldChOb2RlKiBub2RlKQogICAgIH0KIH0KIAor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2Rl
KQoreworICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOwor
ICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgeworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOworICAgICAgICBKU1ZhbHVlUmVnc1Rl
bXBvcmFyeSByZXN1bHQ7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7CisgICAgICAg
IEdQUlJlZyBpbmRleEdQUjsKKyAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOworCisgICAgICAgIGNv
bXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVncywg
RGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgeworICAgICAgICAgICAg
RWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7CisgICAgICAg
ICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOworICAgICAgICAgICAgaWYgKHN0b3JhZ2VFZGdl
KQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRnZSk7Cisg
ICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQz
Mk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCA1KSk7CisKKyAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9kZS5n
cHIoKTsKKyAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7CisgICAgICAgICAgICBl
bnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKKworICAgICAgICAgICAgcmVzdWx0ID0g
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7CisgICAgICAgICAgICByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVncy5w
YXlsb2FkR1BSKCk7CisKKyAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VF
ZGdlOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7CisgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKKyAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpIHsK
KyAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMsIFJl
dXNlLCBlbnVtZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZVRl
bXBvcmFyeS5ncHIoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOworCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2JqZWN0
LgorICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3Qz
MihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OkdlbmVyaWNNb2RlKSkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghbV9z
dGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQorICAgICAgICAgICAgICAg
ICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2VD
ZWxsR1BSKSk7CisKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1Y3R1
cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KKyAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworCisgICAgICAgICAgICAgICAgYXV0
byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2Fj
aGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE1h
eWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtOYW1l
ZD8KKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5ub2Rl
KCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCisgICAgICAgICAgICAg
ICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKGJh
ZFN0cnVjdHVyZSk7CisKKyAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQKKyAg
ICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3IncyBj
YWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAg
aW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOworCisgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoYmFz
ZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmplY3Q6
Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7CisKKyAgICAgICAgICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisKKyAgICAgICAgICAgICAgICAvLyBP
dGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQorICAgICAgICAgICAgICAgIG91dE9mTGluZUFjY2Vz
cy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwgc2Ny
YXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxp
bmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQu
bmVnMzIoc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9Q
dHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICAgICAgaWYgKCFoYXZlU3Rv
cmFnZSkKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFn
ZUdQUik7CisgICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9mRmlyc3RQ
cm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAqIHN0YXRp
Y19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BSLCBz
Y3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJzdFByb3Bl
cnR5KSwgcmVzdWx0UmVncyk7CisgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2pp
dC5qdW1wKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNl
cy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVzdWx0
UmVncywgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgfSkpOworCisgICAgICAgIC8vIFdlIHJlbHkg
b24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCisgICAgICAgIEFTU0VSVChnZW5lcmF0
aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJhdGlvbklu
Zm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOworCisgICAgICAgIGlm
IChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQorICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikp
OworCisgICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgfTsKKworICAgIGlmIChp
c0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgeworICAgICAgICAvLyBVc2UgbWFudWFsIG9wZXJh
bmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBtb3Jl
IHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KKyAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJhc2VF
ZGdlKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFz
ZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIGdlbmVyYXRlKGJhc2VP
cGVyYW5kLmdwcigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
T3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7CisgICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdw
cigpKTsKKyAgICB9Cit9CisKICNlbmRpZgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApp
bmRleCAyMWEwMDQxZmJjZDYuLjUwMTU3Zjg5ODQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1Byb21pc2VDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgorCiAjaW5j
bHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENvbW1vbi5oIgogI2luY2x1ZGUg
IkxMSW50RXhjZXB0aW9ucy5oIgpAQCAtMTAxMCw0MiArMTAxMSwxNCBAQCBKU0NfREVGSU5FX0NP
TU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICBCRUdJ
TigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5TmFtZSA9IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHlO
YW1lKS5qc1ZhbHVlKCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwogICAgIGF1dG8gbW9kZSA9IHN0YXRpY19jYXN0PEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6RmxhZz4oR0VUKGJ5dGVjb2RlLm1fbW9kZSkuanNWYWx1ZSgpLmFzVUludDMyKCkp
OwogICAgIG1ldGFkYXRhLm1fZW51bWVyYXRvck1ldGFkYXRhIHw9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KG1vZGUpOwotCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yID0g
anNDYXN0PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcio+KEdFVChieXRlY29kZS5tX2VudW1lcmF0
b3IpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgaW5kZXggPSBHRVQoYnl0ZWNvZGUubV9pbmRl
eCkuanNWYWx1ZSgpLmFzSW50MzIoKTsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGU6IHsKLSAgICAgICAgaWYgKExJS0VM
WShiYXNlVmFsdWUuaXNDZWxsKCkpKQotICAgICAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2Zp
bGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7
Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOwotICAgIH0KLSAgICBjYXNlIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZTogewotICAgICAgICBpZiAoTElLRUxZKGJh
c2VWYWx1ZS5pc0NlbGwoKSkgJiYgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpID09
IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKLSAgICAgICAgICAgIC8vIFdlJ2xs
IG9ubHkgbWF0Y2ggdGhlIHN0cnVjdHVyZSBJRCBpZiB0aGUgYmFzZSBpcyBhbiBvYmplY3QuCi0g
ICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1cmVQcm9wZXJ0
eUluZGV4KCkpOwotICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXRPYmpl
Y3QoKS0+Z2V0RGlyZWN0KGluZGV4IDwgZW51bWVyYXRvci0+Y2FjaGVkSW5saW5lQ2FwYWNpdHko
KSA/IGluZGV4IDogaW5kZXggLSBlbnVtZXJhdG9yLT5jYWNoZWRJbmxpbmVDYXBhY2l0eSgpICsg
Zmlyc3RPdXRPZkxpbmVPZmZzZXQpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtZXRh
ZGF0YS5tX2VudW1lcmF0b3JNZXRhZGF0YSB8PSBzdGF0aWNfY2FzdDx1aW50OF90PihKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6Okhhc1NlZW5Pd25TdHJ1Y3R1cmVNb2RlU3RydWN0dXJlTWlzbWF0
Y2gpOwotICAgICAgICBGQUxMVEhST1VHSDsKLSAgICB9CiAKLSAgICBjYXNlIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKLSAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc0Nl
bGwoKSAmJiBtb2RlICE9IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9k
ZSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJ
RChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBKU1N0cmluZyog
c3RyaW5nID0gYXNTdHJpbmcoR0VUKGJ5dGVjb2RlLm1fcHJvcGVydHlOYW1lKS5qc1ZhbHVlKCkp
OwotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgICAgICBSRVRVUk5fUFJP
RklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSkpOwotICAgIH0K
LQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBSRVRVUk5fUFJPRklMRUQoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1lcmF0b3JHZXRCeVZh
bChnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSwgcHJvcGVydHlOYW1lLCBpbmRleCwgbW9kZSwgZW51
bWVyYXRvciwgJm1ldGFkYXRhKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDBkM2Q3MjkwNTMwYS4uMDIyZTZjZWQ1
ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMjUsMTIgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0
ZWNvZGVTdHJ1Y3RzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
U2xvd1BhdGhGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC05MSw2
ICs5Myw1MyBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKFZNJiB2bSwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbgogICAgIHJldHVybiBwYWRkaW5nOwog
fQogCitpbmxpbmUgSlNWYWx1ZSBvcEVudW1lcmF0b3JHZXRCeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1
ZSwgdW5zaWduZWQgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZyBtb2RlLCBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IsIE9wRW51bWVyYXRvckdldEJ5VmFs
OjpNZXRhZGF0YSogbWV0YWRhdGEgPSBudWxscHRyKQoreworICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OkluZGV4ZWRNb2RlOiB7CisgICAgICAgIGlmIChtZXRhZGF0YSAmJiBMSUtFTFkoYmFzZVZhbHVl
LmlzQ2VsbCgpKSkKKyAgICAgICAgICAgIG1ldGFkYXRhLT5tX2FycmF5UHJvZmlsZS5vYnNlcnZl
U3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOworICAgIH0KKyAgICBjYXNlIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZTogeworICAgICAgICBpZiAoTElLRUxZKGJh
c2VWYWx1ZS5pc0NlbGwoKSkgJiYgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpID09
IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKKyAgICAgICAgICAgIC8vIFdlJ2xs
IG9ubHkgbWF0Y2ggdGhlIHN0cnVjdHVyZSBJRCBpZiB0aGUgYmFzZSBpcyBhbiBvYmplY3QuCisg
ICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1cmVQcm9wZXJ0
eUluZGV4KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFs
dWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNhY2hlZElubGlu
ZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVkSW5saW5lQ2Fw
YWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAobWV0YWRhdGEpCisgICAgICAgICAgICAgICAgbWV0YWRhdGEtPm1fZW51bWVy
YXRvck1ldGFkYXRhIHw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6SGFzU2Vlbk93blN0cnVjdHVyZU1vZGVTdHJ1Y3R1cmVNaXNtYXRjaCk7CisgICAgICAg
IH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorCisgICAgY2FzZSBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7CisgICAgICAgIGlmIChtZXRhZGF0YSAmJiBiYXNl
VmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0
cnVjdHVyZU1vZGUpCisgICAgICAgICAgICBtZXRhZGF0YS0+bV9hcnJheVByb2ZpbGUub2JzZXJ2
ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7CisgICAgICAg
IGlmIChwcm9wZXJ0eU5hbWVWYWx1ZS5pc0NlbGwoKSkgeworICAgICAgICAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGFzU3RyaW5nKHByb3BlcnR5TmFtZVZhbHVlKTsKKyAgICAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKyAgICAgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5
TmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgcHJvcGVydHlOYW1l
IGlzIG5vdCBhIGNlbGwgdGhlbiB3ZSBhcmUgaW4gaW5kZXgrbmFtZWQgbW9kZSAoPyksIHNvIGRv
IHdoYXQgUmVjb3Zlck5hbWVBbmRHZXRWYWwgZG9lcy4KKyAgICAgICAgICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSBlbnVtZXJhdG9yLT5wcm9wZXJ0eU5hbWVBdEluZGV4KGluZGV4KTsKKyAgICAgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHt9KTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiBpbmxpbmUgYm9vbCBvcElu
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsLCBKU1Zh
bHVlIHByb3BOYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLS0gCjIuMzEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437947</attachid>
            <date>2021-09-11 04:20:07 -0700</date>
            <delta_ts>2021-09-11 04:21:52 -0700</delta_ts>
            <desc>v3</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>26436</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmNzdhODhkNDVhZTQxYTAzODI0MjNkZDVmOTQyODk4MGJkZWE3OWU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFTU0VSVCBmYWlsZWQgaW4gc3RyZXNzL2Zvci1pbi10ZXN0cy5qcyAoMzJi
aXQpCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQzCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNpbmNlIHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzCnRvbyBtYW55IHJlZ2lzdGVycyBmb3Ig
MzJiaXQuIFJldmVydCB0byB0aGUgc2xvdyBwYXRoIGFzIGEKdGVtcG9yYXJ5IG1lYXN1cmUgdG8g
YXZvaWQgY3Jhc2hlcywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQpvcHRpbWl6YXRpb25zIGxh
dGVyIG9uIChzZWUgYnVnICMyMzAxODkpLgoKKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CihKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEgZ2VuZXJpYyBjYWxsCm9w
ZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbC4KKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZgpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3
b3JrIG9uIDMyYml0LgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IGNhbGwgdGhlIGdl
bmVyaWMgY2FsbCBvcCBhbHdheXMuCiogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgooSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRo
ZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCiogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgoo
SlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xv
dyBwYXRoCmZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKb3BlcmF0aW9uLgoqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CihKU0M6
OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwpOgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAyOSArKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDE2ICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggICAgIHwgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8IDEwOCAtLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgICAgICAgICAgICB8ICAyMyAr
KysrCiAuLi4vZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwICAgICAgICAgICAgICAgfCAxMDgg
KysrKysrKysrKysrKysrKysrCiAuLi4vcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwICAgICAg
ICAgICAgICAgfCAgMzMgKy0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCAgfCAgNDggKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjI4IGluc2VydGlv
bnMoKyksIDEzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5OWJh
ZTNmZTYxMGQuLjNmNzU3NTJiOTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjEtMDktMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBBU1NFUlQgZmFpbGVkIGluIHN0cmVzcy9mb3ItaW4tdGVzdHMuanMgKDMyYml0
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
cjI4MDc2MCBERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVz
ZXMKKyAgICAgICAgdG9vIG1hbnkgcmVnaXN0ZXJzIGZvciAzMmJpdC4gUmV2ZXJ0IHRvIHRoZSBz
bG93IHBhdGggYXMgYQorICAgICAgICB0ZW1wb3JhcnkgbWVhc3VyZSB0byBhdm9pZCBjcmFzaGVz
LCB3ZSdsbCB0cnkgdG8gcmVlbmFibGUgdGhlCisgICAgICAgIG9wdGltaXphdGlvbnMgbGF0ZXIg
b24gKHNlZSBidWcgIzIzMDE4OSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEg
Z2VuZXJpYyBjYWxsCisgICAgICAgIG9wZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRC
eVZhbC4KKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorICAgICAgICBj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3b3JrIG9u
IDMyYml0LgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6
IGNhbGwgdGhlIGdlbmVyaWMgY2FsbCBvcCBhbHdheXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xvdyBwYXRoCisg
ICAgICAgIGZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKKyAgICAgICAgb3BlcmF0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9y
R2V0QnlWYWwpOgorCiAyMDIxLTA5LTEwICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bz
b255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIFN1cHBvcnQgcnVubmluZyBhcHBsaWNh
dGlvbnMgd2l0aCBFTkFCTEVfU1RBVElDX0pTQz1PTgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTQ3ZGQ2MWFkYzM5Li5hNTVhOWQ1NjYzOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjUzOCw2
ICsyNTM4LDIyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9y
SW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJ
bkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpKTsKIH0KIAorSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3Qg
aW5kZXgsIGludDMyX3QgbW9kZU51bWJlciwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVt
ZXJhdG9yKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2UgPSBK
U1ZhbHVlOjpkZWNvZGUoYmFzZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShwcm9wZXJ0
eU5hbWVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9IHN0YXRpY19jYXN0PEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1lcmF0b3JH
ZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5LCBpbmRleCwgbW9kZSwgZW51bWVy
YXRvcikpKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3BlcnR5
TmFtZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgaW50MzJfdCBtb2RlTnVtYmVyKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCmluZGV4IDE0ZTQyNTcxZGY1ZC4uMTIwY2E5ZDhiZjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTEyLDYgKzExMiw3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9w
ZXJ0eU5hbWUsIEVuY29kZWRKU1ZhCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkVudW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIHVpbnQzMl90LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgdWludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckdl
dEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdS
ZWdleHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdB
cnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHZvaWQqLCBzaXplX3Qp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggZTMyM2M5ZGUyYzNmLi44ZTQ4ZGQzYWM3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzY4NywxMTQgKzEzNjg3LDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVy
dHlOYW1lKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2Rl
KiBub2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDApOwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0g
ICAgICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAg
ICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVl
UmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAg
ICAgICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0g
ICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAgICAgICAgaWYgKHN0b3Jh
Z2VFZGdlKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRn
ZSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsK
LSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0g
bW9kZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAg
ICAgICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQotICAgICAgICAgICAgcmVz
dWx0ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0
UmVncy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0
b3JhZ2VFZGdlOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0g
ICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAgIGlmICghaGF2ZVN0b3Jh
Z2UpIHsKLSAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRo
aXMsIFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3Rv
cmFnZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4g
b2JqZWN0LgotICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
ICghbV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAg
ICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJl
Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBz
dHJ1Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAg
ICAgYXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBzY3JhdGNo
R1BSLAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhl
ZCtOYW1lZD8KLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KS5ub2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBw
ZW5kKGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZz
ZXQKLSAgICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0
b3IncyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwot
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoYmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAg
ICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAgICAgICAgIG91dE9mTGlu
ZUFjY2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQ
Uiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNo
ZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAg
bV9qaXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaWYgKCFo
YXZlU3RvcmFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
c3RvcmFnZUdQUik7Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9m
Rmlyc3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAq
IHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
R1BSLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJz
dFByb3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVu
ZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub3RGYXN0TmFt
ZWRDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
cmVzdWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdl
IHJlbHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChn
ZW5lcmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJh
dGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAg
ICAgIGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRv
ckdQUikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAg
IGlmIChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAvLyBVc2UgbWFudWFs
IG9wZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2lu
ZCBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IGJhc2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhp
cywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRl
KGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVy
YW5kLmdwcigpKTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rp
b25UeXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0
eShOb2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNTU1OWUxMDU1OTVkLi40MjE2OWJlNTRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDQ4
MCw2ICs0NDgwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShO
b2RlKiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQogCisv
LyBGSVhNRTogd2UgYXJlIGFsd2F5cyB0YWtpbmcgdGhlIHNsb3cgcGF0aCBoZXJlLCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBkbyB0aGUgZXF1aXZhbGVudCB0byB0aGUgNjRiaXQgdmVyc2lvbiBpZiB3
ZSBhZGQgbW9yZSBhdmFpbGFibGUgKGNhbGxlZS1zYXZlIHJlZ2lzdGVycykgdG8gQVJNdjcgYW5k
L29yIGlmIHdlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBjb21waWxlRW51bWVyYXRv
ckdldEJ5VmFsIHVzZXMuIFNlZSBidWcgIzIzMDE4OS4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlUmVncyBw
cm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOworICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsK
KyAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAg
ICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
ZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUpKTsKKyAgICBHUFJS
ZWcgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVy
cygpOworCisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Cisg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCBpbmRleEdQ
UiwgbW9kZUdQUiwgZW51bWVyYXRvckdQUik7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQogI2VuZGlmCiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDE4OWY2NTRhNGNiYy4uMjU2OWIyOTlhMTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTYzNTIsNiArNjM1MiwxMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURh
dGVHZXQoTm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGJhc2VFZGdlID0g
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKTsKKyAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChH
UFJSZWcgYmFzZUNlbGxHUFIpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRv
bmVDYXNlczsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OworICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzOworICAgICAgICBHUFJSZWcgaW5kZXhHUFI7CisgICAgICAg
IEdQUlJlZyBlbnVtZXJhdG9yR1BSOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRT
dHJ1Y3R1cmVTbG93UGF0aDsKKworICAgICAgICBjb21waWxlR2V0QnlWYWwobm9kZSwgc2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQpPihb
Jl0gKERhdGFGb3JtYXQpIHsKKyAgICAgICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFn
ZTsKKyAgICAgICAgICAgIGlmIChzdG9yYWdlRWRnZSkKKyAgICAgICAgICAgICAgICBzdG9yYWdl
LmVtcGxhY2UodGhpcywgc3RvcmFnZUVkZ2UpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwor
ICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBlbnVtZXJhdG9yKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOworCisgICAg
ICAgICAgICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgICAgICAgICBpbmRleEdQ
UiA9IGluZGV4LmdwcigpOworICAgICAgICAgICAgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3Iu
Z3ByKCk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWVSZWdzVGVtcG9yYXJ5KHRoaXMp
OworICAgICAgICAgICAgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOworCisgICAgICAgICAg
ICBib29sIGhhdmVTdG9yYWdlID0gISFzdG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSBzdG9yYWdlVGVtcG9yYXJ5OworICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7Cisg
ICAgICAgICAgICBpZiAoIWhhdmVTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFnZVRl
bXBvcmFyeSA9IEdQUlRlbXBvcmFyeSh0aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAgICAg
ICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdEZhc3ROYW1lZENhc2VzOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGdlbmVyYXRlIHRoaXMgY29kZSBp
ZiB3ZSBrbm93IGJhc2UgaXMgbm90IGFuIG9iamVjdC4KKyAgICAgICAgICAgIG5vdEZhc3ROYW1l
ZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IG1vZGVHUFIsIFRydXN0ZWRJbW0zMihKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRN
b2RlIHwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZSkpKTsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuaXNU
eXBlKFNwZWNDZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlQ2VsbEdQUikpOworCisgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhlIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3
ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUgc3RydWN0dXJlIGZvciBiYXNlIHdlIGNhbiBqdXN0IGVt
YmVkIGl0IGhlcmUuCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VDZWxsR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFkU3RydWN0dXJlID0gbV9qaXQuYnJh
bmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAg
ICAgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdG9yR1BS
LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKTsK
KworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBhIGJldHRl
ciB3YXkgdG8gcmVwcmVzZW50IEluZGV4ZWQrTmFtZWQ/CisgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpID09IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMykubm9kZSgpKQorICAgICAgICAgICAgICAgICAgICBiYWRTdHJ1Y3R1cmVTbG93UGF0
aCA9IGJhZFN0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChiYWRTdHJ1Y3R1cmUpOworCisgICAgICAgICAg
ICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgLy8gSWYgaW5kZXgg
aXMgbGVzcyB0aGFuIHRoZSBlbnVtZXJhdG9yJ3MgY2FjaGVkIGlubGluZSBzdG9yYWdlLCB0aGVu
IGl0J3MgYW4gaW5saW5lIGFjY2VzcworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG91dE9mTGluZUFjY2VzcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsCisgICAgICAgICAgICAgICAgICAgIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElu
bGluZUNhcGFjaXR5T2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1
ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSks
IHJlc3VsdFJlZ3MpOworCisgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5q
dW1wKCkpOworCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0J3Mgb3V0IG9mIGxpbmUK
KyAgICAgICAgICAgICAgICBvdXRPZkxpbmVBY2Nlc3MubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0Lm5lZzMyKHNjcmF0Y2hHUFIpOworICAgICAg
ICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpCisgICAgICAgICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOworICAgICAgICAgICAgICAgIGNv
bnN0ZXhwciBpbnRwdHJfdCBvZmZzZXRPZkZpcnN0UHJvcGVydHkgPSBvZmZzZXRJbkJ1dHRlcmZs
eShmaXJzdE91dE9mTGluZU9mZnNldCkgKiBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsIG9mZnNldE9mRmlyc3RQcm9wZXJ0eSksIHJlc3VsdFJlZ3MpOworICAgICAg
ICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHJlc3VsdFJlZ3MsIERhdGFGb3JtYXRKUyk7CisgICAg
ICAgIH0pKTsKKworICAgICAgICAvLyBXZSByZWx5IG9uIGNvbXBpbGVHZXRCeVZhbCB0byBjYWxs
IGpzVmFsdWVSZXN1bHQgZm9yIHVzLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBraW5kYSBo
YWNreS4uLgorICAgICAgICBBU1NFUlQoZ2VuZXJhdGlvbkluZm8obm9kZSkuanNWYWx1ZVJlZ3Mo
KSA9PSByZXN1bHRSZWdzICYmIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKTsKKworICAgICAgICBpZiAoYmFkU3RydWN0dXJlU2xvd1BhdGguaXNT
ZXQoKSkKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRT
dHJ1Y3R1cmVTbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5k
R2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlQ2Vs
bEdQUiwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKworICAgICAgICBkb25lQ2FzZXMubGlu
aygmbV9qaXQpOworICAgIH07CisKKyAgICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVzZUtpbmQoKSkp
IHsKKyAgICAgICAgLy8gVXNlIG1hbnVhbCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNpbmNlIEZpeHVw
IG1heSBoYXZlIHBpY2tlZCBhIFVzZUtpbmQgbW9yZSByZXN0cmljdGl2ZSB0aGFuIENlbGxVc2Uu
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBiYXNlRWRnZSk7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2VPcGVyYW5kKHRoaXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBnZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UpOwor
ICAgICAgICBnZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfQorfQorCiAjZW5kaWYK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMjFhMDA0MWZiY2Q2Li5hZjA0ODE0
YzYyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25t
ZW50LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKKwogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5j
bHVkZSAiTExJbnRDb21tb24uaCIKICNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKQEAgLTEw
MTAsNDIgKzEwMTEsMTQgQEAgSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9l
bnVtZXJhdG9yX2dldF9ieV92YWwpCiAgICAgQkVHSU4oKTsKICAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wRW51bWVyYXRvckdldEJ5VmFsPigpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
R0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBwcm9wZXJ0eU5h
bWUgPSBHRVQoYnl0ZWNvZGUubV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKTsKICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgYXV0byBtb2RlID0g
c3RhdGljX2Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpGbGFnPihHRVQoYnl0ZWNvZGUu
bV9tb2RlKS5qc1ZhbHVlKCkuYXNVSW50MzIoKSk7CiAgICAgbWV0YWRhdGEubV9lbnVtZXJhdG9y
TWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4obW9kZSk7Ci0KICAgICBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yKj4oR0VUKGJ5dGVjb2RlLm1fZW51bWVyYXRvcikuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25l
ZCBpbmRleCA9IEdFVChieXRlY29kZS5tX2luZGV4KS5qc1ZhbHVlKCkuYXNJbnQzMigpOwotICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRl
eGVkTW9kZTogewotICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkpCi0gICAg
ICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZh
bHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJh
c2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpKSk7
Ci0gICAgfQotICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVN
b2RlOiB7Ci0gICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSAmJiBiYXNlVmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkgPT0gZW51bWVyYXRvci0+Y2FjaGVkU3RydWN0dXJl
SUQoKSkgewotICAgICAgICAgICAgLy8gV2UnbGwgb25seSBtYXRjaCB0aGUgc3RydWN0dXJlIElE
IGlmIHRoZSBiYXNlIGlzIGFuIG9iamVjdC4KLSAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IGVu
dW1lcmF0b3ItPmVuZFN0cnVjdHVyZVByb3BlcnR5SW5kZXgoKSk7Ci0gICAgICAgICAgICBSRVRV
Uk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldE9iamVjdCgpLT5nZXREaXJlY3QoaW5kZXggPCBlbnVt
ZXJhdG9yLT5jYWNoZWRJbmxpbmVDYXBhY2l0eSgpID8gaW5kZXggOiBpbmRleCAtIGVudW1lcmF0
b3ItPmNhY2hlZElubGluZUNhcGFjaXR5KCkgKyBmaXJzdE91dE9mTGluZU9mZnNldCkpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fZW51bWVyYXRvck1ldGFkYXRhIHw9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SGFzU2Vlbk93
blN0cnVjdHVyZU1vZGVTdHJ1Y3R1cmVNaXNtYXRjaCk7Ci0gICAgICAgIEZBTExUSFJPVUdIOwot
ICAgIH0KIAotICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZTog
ewotICAgICAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIG1vZGUgIT0gSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlKQotICAgICAgICAgICAgbWV0YWRhdGEubV9h
cnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlSUQoKSk7Ci0gICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhHRVQoYnl0ZWNv
ZGUubV9wcm9wZXJ0eU5hbWUpLmpzVmFsdWUoKSk7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7Ci0gICAgICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0KGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lKSk7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfTsKLSAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFJFVFVSTl9QUk9GSUxFRChDb21tb25T
bG93UGF0aHM6Om9wRW51bWVyYXRvckdldEJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlLCBw
cm9wZXJ0eU5hbWUsIGluZGV4LCBtb2RlLCBlbnVtZXJhdG9yLCAmbWV0YWRhdGEubV9hcnJheVBy
b2ZpbGUsICZtZXRhZGF0YS5tX2VudW1lcmF0b3JNZXRhZGF0YSkpOwogfQogCiBKU0NfREVGSU5F
X0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfaW5fYnlfdmFsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAwZDNk
NzI5MDUzMGEuLjk2NTNmM2Q5MDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db2RlQmxvY2suaCIKICNpbmNsdWRl
ICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNsb3dQYXRo
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpAQCAtOTEsNiArOTIsNTMg
QEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb24KICAgICByZXR1cm4gcGFkZGluZzsKIH0KIAoraW5s
aW5lIEpTVmFsdWUgb3BFbnVtZXJhdG9yR2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgcHJvcGVydHlOYW1lVmFsdWUsIHVuc2ln
bmVkIGluZGV4LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9
IG51bGxwdHIsIHVpbnQ4X3QqIGVudW1lcmF0b3JNZXRhZGF0YSA9IG51bGxwdHIpCit7CisgICAg
Vk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGU6IHsKKyAgICAgICAgaWYgKGFycmF5UHJvZmls
ZSAmJiBMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKKyAgICAgICAgICAgIGFycmF5UHJvZmls
ZS0+b2JzZXJ2ZVN0cnVjdHVyZUlEKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsKKyAgICB9CisgICAgY2FzZSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGU6IHsKKyAgICAgICAgaWYg
KExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpICYmIGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlSUQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKSB7CisgICAgICAgICAg
ICAvLyBXZSdsbCBvbmx5IG1hdGNoIHRoZSBzdHJ1Y3R1cmUgSUQgaWYgdGhlIGJhc2UgaXMgYW4g
b2JqZWN0LgorICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgZW51bWVyYXRvci0+ZW5kU3RydWN0
dXJlUHJvcGVydHlJbmRleCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgYmFzZVZhbHVlLmdldE9iamVjdCgpLT5nZXREaXJlY3QoaW5kZXggPCBlbnVtZXJhdG9yLT5j
YWNoZWRJbmxpbmVDYXBhY2l0eSgpID8gaW5kZXggOiBpbmRleCAtIGVudW1lcmF0b3ItPmNhY2hl
ZElubGluZUNhcGFjaXR5KCkgKyBmaXJzdE91dE9mTGluZU9mZnNldCkpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGVudW1lcmF0b3JNZXRhZGF0YSkKKyAgICAgICAgICAgICAg
ICAqZW51bWVyYXRvck1ldGFkYXRhIHw9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6SGFzU2Vlbk93blN0cnVjdHVyZU1vZGVTdHJ1Y3R1cmVNaXNtYXRjaCk7
CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorCisgICAgY2FzZSBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7CisgICAgICAgIGlmIChhcnJheVBy
b2ZpbGUgJiYgYmFzZVZhbHVlLmlzQ2VsbCgpICYmIG1vZGUgIT0gSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpPd25TdHJ1Y3R1cmVNb2RlKQorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNl
cnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAg
ICAgaWYgKHByb3BlcnR5TmFtZVZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBKU1N0cmlu
Zyogc3RyaW5nID0gYXNTdHJpbmcocHJvcGVydHlOYW1lVmFsdWUpOworICAgICAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOworICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgcHJvcGVydHlO
YW1lIGlzIG5vdCBhIGNlbGwgdGhlbiB3ZSBhcmUgaW4gaW5kZXgrbmFtZWQgbW9kZSwgc28gZG8g
d2hhdCBSZWNvdmVyTmFtZUFuZEdldFZhbCBkb2VzLgorICAgICAgICAgICAgSlNTdHJpbmcqIHN0
cmluZyA9IGVudW1lcmF0b3ItPnByb3BlcnR5TmFtZUF0SW5kZXgoaW5kZXgpOworICAgICAgICAg
ICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiBpbmxpbmUgYm9vbCBvcElu
QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsLCBKU1Zh
bHVlIHByb3BOYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAg
ICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLS0gCjIuMzEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437948</attachid>
            <date>2021-09-11 04:21:52 -0700</date>
            <delta_ts>2021-09-13 07:17:06 -0700</delta_ts>
            <desc>v4</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>26225</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBkNWFjNzk0M2U2YjNiMWE1ZDczODFmYmM3OWIzNWU2ZjhiNGViNDQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFTU0VSVCBmYWlsZWQgaW4gc3RyZXNzL2Zvci1pbi10ZXN0cy5qcyAoMzJi
aXQpCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQzCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNpbmNlIHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzCnRvbyBtYW55IHJlZ2lzdGVycyBmb3Ig
MzJiaXQuIFJldmVydCB0byB0aGUgc2xvdyBwYXRoIGFzIGEKdGVtcG9yYXJ5IG1lYXN1cmUgdG8g
YXZvaWQgY3Jhc2hlcywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQpvcHRpbWl6YXRpb25zIGxh
dGVyIG9uIChzZWUgYnVnICMyMzAxODkpLgoKKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CihKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEgZ2VuZXJpYyBjYWxsCm9w
ZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbC4KKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZgpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3
b3JrIG9uIDMyYml0LgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IGNhbGwgdGhlIGdl
bmVyaWMgY2FsbCBvcCBhbHdheXMuCiogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgooSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRo
ZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCiogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgoo
SlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xv
dyBwYXRoCmZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKb3BlcmF0aW9uLgoqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CihKU0M6
OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwpOgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAyOSArKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDE2ICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggICAgIHwgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8IDEwOCAtLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgICAgICAgICAgICB8ICAyMyAr
KysrCiAuLi4vZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwICAgICAgICAgICAgICAgfCAxMDgg
KysrKysrKysrKysrKysrKysrCiAuLi4vcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwICAgICAg
ICAgICAgICAgfCAgMzIgKy0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCAgfCAgNDggKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjI3IGluc2VydGlv
bnMoKyksIDEzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5OWJh
ZTNmZTYxMGQuLjNmNzU3NTJiOTFjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjEtMDktMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBBU1NFUlQgZmFpbGVkIGluIHN0cmVzcy9mb3ItaW4tdGVzdHMuanMgKDMyYml0
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
cjI4MDc2MCBERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVz
ZXMKKyAgICAgICAgdG9vIG1hbnkgcmVnaXN0ZXJzIGZvciAzMmJpdC4gUmV2ZXJ0IHRvIHRoZSBz
bG93IHBhdGggYXMgYQorICAgICAgICB0ZW1wb3JhcnkgbWVhc3VyZSB0byBhdm9pZCBjcmFzaGVz
LCB3ZSdsbCB0cnkgdG8gcmVlbmFibGUgdGhlCisgICAgICAgIG9wdGltaXphdGlvbnMgbGF0ZXIg
b24gKHNlZSBidWcgIzIzMDE4OSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEg
Z2VuZXJpYyBjYWxsCisgICAgICAgIG9wZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRC
eVZhbC4KKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorICAgICAgICBj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3b3JrIG9u
IDMyYml0LgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6
IGNhbGwgdGhlIGdlbmVyaWMgY2FsbCBvcCBhbHdheXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xvdyBwYXRoCisg
ICAgICAgIGZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKKyAgICAgICAgb3BlcmF0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9y
R2V0QnlWYWwpOgorCiAyMDIxLTA5LTEwICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5zemFib0Bz
b255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIFN1cHBvcnQgcnVubmluZyBhcHBsaWNh
dGlvbnMgd2l0aCBFTkFCTEVfU1RBVElDX0pTQz1PTgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggOTQ3ZGQ2MWFkYzM5Li5hNTVhOWQ1NjYzOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjUzOCw2
ICsyNTM4LDIyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9y
SW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJ
bkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpKTsKIH0KIAorSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3Qg
aW5kZXgsIGludDMyX3QgbW9kZU51bWJlciwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVt
ZXJhdG9yKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2UgPSBK
U1ZhbHVlOjpkZWNvZGUoYmFzZVZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShwcm9wZXJ0
eU5hbWVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9IHN0YXRpY19jYXN0PEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1lcmF0b3JH
ZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5LCBpbmRleCwgbW9kZSwgZW51bWVy
YXRvcikpKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0
b3JIYXNPd25Qcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIHByb3BlcnR5
TmFtZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgaW50MzJfdCBtb2RlTnVtYmVyKSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oCmluZGV4IDE0ZTQyNTcxZGY1ZC4uMTIwY2E5ZDhiZjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTEyLDYgKzExMiw3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9w
ZXJ0eU5hbWUsIEVuY29kZWRKU1ZhCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkVudW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIHVpbnQzMl90LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgdWludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckdl
dEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdS
ZWdleHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBF
bmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdB
cnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHZvaWQqLCBzaXplX3Qp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggZTMyM2M5ZGUyYzNmLi44ZTQ4ZGQzYWM3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzY4NywxMTQgKzEzNjg3LDYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVy
dHlOYW1lKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2Rl
KiBub2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDApOwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVl
UmVnc1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0g
ICAgICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAg
ICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVl
UmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAg
ICAgICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0g
ICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAgICAgICAgaWYgKHN0b3Jh
Z2VFZGdlKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRn
ZSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywg
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJp
Y3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsK
LSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0g
bW9kZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAg
ICAgICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQotICAgICAgICAgICAgcmVz
dWx0ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0
UmVncy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0
b3JhZ2VFZGdlOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0g
ICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAgIGlmICghaGF2ZVN0b3Jh
Z2UpIHsKLSAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRo
aXMsIFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3Rv
cmFnZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4g
b2JqZWN0LgotICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
ICghbV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAg
ICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGJhc2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJl
Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBz
dHJ1Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAg
ICAgYXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBzY3JhdGNo
R1BSLAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhl
ZCtOYW1lZD8KLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAx
KS5ub2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBw
ZW5kKGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZz
ZXQKLSAgICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0
b3IncyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAg
ICAgICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwot
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5k
ZXgoYmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAg
ICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAgICAgICAgIG91dE9mTGlu
ZUFjY2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQ
Uiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNo
ZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAg
bV9qaXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaWYgKCFo
YXZlU3RvcmFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwg
c3RvcmFnZUdQUik7Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9m
Rmlyc3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAq
IHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
R1BSLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJz
dFByb3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVu
ZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub3RGYXN0TmFt
ZWRDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
cmVzdWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdl
IHJlbHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChn
ZW5lcmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJh
dGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAg
ICAgIGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRv
ckdQUikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAg
IGlmIChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAvLyBVc2UgbWFudWFs
IG9wZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2lu
ZCBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUs
IGJhc2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhp
cywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRl
KGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVy
YW5kLmdwcigpKTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rp
b25UeXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0
eShOb2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNTU1OWUxMDU1OTVkLi40MjE2OWJlNTRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDQ4
MCw2ICs0NDgwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShO
b2RlKiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQogCisv
LyBGSVhNRTogd2UgYXJlIGFsd2F5cyB0YWtpbmcgdGhlIHNsb3cgcGF0aCBoZXJlLCB3ZSBzaG91
bGQgYmUgYWJsZSB0byBkbyB0aGUgZXF1aXZhbGVudCB0byB0aGUgNjRiaXQgdmVyc2lvbiBpZiB3
ZSBhZGQgbW9yZSBhdmFpbGFibGUgKGNhbGxlZS1zYXZlIHJlZ2lzdGVycykgdG8gQVJNdjcgYW5k
L29yIGlmIHdlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBjb21waWxlRW51bWVyYXRv
ckdldEJ5VmFsIHVzZXMuIFNlZSBidWcgIzIzMDE4OS4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBKU1ZhbHVlT3BlcmFu
ZCBiYXNlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdz
KCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICBKU1ZhbHVlUmVncyBw
cm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOworICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsK
KyAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAg
ICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
ZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUpKTsKKyAgICBHUFJS
ZWcgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVy
cygpOworCisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Cisg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCBpbmRleEdQ
UiwgbW9kZUdQUiwgZW51bWVyYXRvckdQUik7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworfQogI2VuZGlmCiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDE4OWY2NTRhNGNiYy4uMjU2OWIyOTlhMTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTYzNTIsNiArNjM1MiwxMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURh
dGVHZXQoTm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGJhc2VFZGdlID0g
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKTsKKyAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChH
UFJSZWcgYmFzZUNlbGxHUFIpIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRv
bmVDYXNlczsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OworICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzOworICAgICAgICBHUFJSZWcgaW5kZXhHUFI7CisgICAgICAg
IEdQUlJlZyBlbnVtZXJhdG9yR1BSOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRT
dHJ1Y3R1cmVTbG93UGF0aDsKKworICAgICAgICBjb21waWxlR2V0QnlWYWwobm9kZSwgc2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQpPihb
Jl0gKERhdGFGb3JtYXQpIHsKKyAgICAgICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFn
ZTsKKyAgICAgICAgICAgIGlmIChzdG9yYWdlRWRnZSkKKyAgICAgICAgICAgICAgICBzdG9yYWdl
LmVtcGxhY2UodGhpcywgc3RvcmFnZUVkZ2UpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOwor
ICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBlbnVtZXJhdG9yKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOworCisgICAg
ICAgICAgICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgICAgICAgICBpbmRleEdQ
UiA9IGluZGV4LmdwcigpOworICAgICAgICAgICAgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3Iu
Z3ByKCk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWVSZWdzVGVtcG9yYXJ5KHRoaXMp
OworICAgICAgICAgICAgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOworCisgICAgICAgICAg
ICBib29sIGhhdmVTdG9yYWdlID0gISFzdG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSBzdG9yYWdlVGVtcG9yYXJ5OworICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7Cisg
ICAgICAgICAgICBpZiAoIWhhdmVTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFnZVRl
bXBvcmFyeSA9IEdQUlRlbXBvcmFyeSh0aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAgICAg
ICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdEZhc3ROYW1lZENhc2VzOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGdlbmVyYXRlIHRoaXMgY29kZSBp
ZiB3ZSBrbm93IGJhc2UgaXMgbm90IGFuIG9iamVjdC4KKyAgICAgICAgICAgIG5vdEZhc3ROYW1l
ZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IG1vZGVHUFIsIFRydXN0ZWRJbW0zMihKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRN
b2RlIHwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZSkpKTsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuaXNU
eXBlKFNwZWNDZWxsKSkKKyAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlQ2VsbEdQUikpOworCisgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgdGhlIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3
ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUgc3RydWN0dXJlIGZvciBiYXNlIHdlIGNhbiBqdXN0IGVt
YmVkIGl0IGhlcmUuCisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VDZWxsR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFkU3RydWN0dXJlID0gbV9qaXQuYnJh
bmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAg
ICAgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdG9yR1BS
LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKTsK
KworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBhIGJldHRl
ciB3YXkgdG8gcmVwcmVzZW50IEluZGV4ZWQrTmFtZWQ/CisgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpID09IG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMykubm9kZSgpKQorICAgICAgICAgICAgICAgICAgICBiYWRTdHJ1Y3R1cmVTbG93UGF0
aCA9IGJhZFN0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChiYWRTdHJ1Y3R1cmUpOworCisgICAgICAgICAg
ICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgLy8gSWYgaW5kZXgg
aXMgbGVzcyB0aGFuIHRoZSBlbnVtZXJhdG9yJ3MgY2FjaGVkIGlubGluZSBzdG9yYWdlLCB0aGVu
IGl0J3MgYW4gaW5saW5lIGFjY2VzcworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG91dE9mTGluZUFjY2VzcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsCisgICAgICAgICAgICAgICAgICAgIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElu
bGluZUNhcGFjaXR5T2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1
ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSks
IHJlc3VsdFJlZ3MpOworCisgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5q
dW1wKCkpOworCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0J3Mgb3V0IG9mIGxpbmUK
KyAgICAgICAgICAgICAgICBvdXRPZkxpbmVBY2Nlc3MubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoaW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0Lm5lZzMyKHNjcmF0Y2hHUFIpOworICAgICAg
ICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2UpCisgICAgICAgICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTT2Jq
ZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOworICAgICAgICAgICAgICAgIGNv
bnN0ZXhwciBpbnRwdHJfdCBvZmZzZXRPZkZpcnN0UHJvcGVydHkgPSBvZmZzZXRJbkJ1dHRlcmZs
eShmaXJzdE91dE9mTGluZU9mZnNldCkgKiBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsIG9mZnNldE9mRmlyc3RQcm9wZXJ0eSksIHJlc3VsdFJlZ3MpOworICAgICAg
ICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMubGluaygmbV9qaXQpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHJlc3VsdFJlZ3MsIERhdGFGb3JtYXRKUyk7CisgICAg
ICAgIH0pKTsKKworICAgICAgICAvLyBXZSByZWx5IG9uIGNvbXBpbGVHZXRCeVZhbCB0byBjYWxs
IGpzVmFsdWVSZXN1bHQgZm9yIHVzLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBraW5kYSBo
YWNreS4uLgorICAgICAgICBBU1NFUlQoZ2VuZXJhdGlvbkluZm8obm9kZSkuanNWYWx1ZVJlZ3Mo
KSA9PSByZXN1bHRSZWdzICYmIGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTKTsKKworICAgICAgICBpZiAoYmFkU3RydWN0dXJlU2xvd1BhdGguaXNT
ZXQoKSkKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRT
dHJ1Y3R1cmVTbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5k
R2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlQ2Vs
bEdQUiwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKworICAgICAgICBkb25lQ2FzZXMubGlu
aygmbV9qaXQpOworICAgIH07CisKKyAgICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVzZUtpbmQoKSkp
IHsKKyAgICAgICAgLy8gVXNlIG1hbnVhbCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNpbmNlIEZpeHVw
IG1heSBoYXZlIHBpY2tlZCBhIFVzZUtpbmQgbW9yZSByZXN0cmljdGl2ZSB0aGFuIENlbGxVc2Uu
CisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBiYXNlRWRnZSk7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2VPcGVyYW5kKHRoaXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24pOworICAgICAgICBnZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UpOwor
ICAgICAgICBnZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfQorfQorCiAjZW5kaWYK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMjFhMDA0MWZiY2Q2Li4xZTNiYTFh
M2FjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtMTAxMCw0MiArMTAxMCwxNCBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICBCRUdJTigpOwogICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHByb3BlcnR5TmFtZSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1
ZSgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsK
ICAgICBhdXRvIG1vZGUgPSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZs
YWc+KEdFVChieXRlY29kZS5tX21vZGUpLmpzVmFsdWUoKS5hc1VJbnQzMigpKTsKICAgICBtZXRh
ZGF0YS5tX2VudW1lcmF0b3JNZXRhZGF0YSB8PSBzdGF0aWNfY2FzdDx1aW50OF90Pihtb2RlKTsK
LQogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IqPihHRVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1ZhbHVl
KCkpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gR0VUKGJ5dGVjb2RlLm1faW5kZXgpLmpzVmFsdWUo
KS5hc0ludDMyKCk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlOiB7Ci0gICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVl
LmlzQ2VsbCgpKSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVT
dHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBS
RVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmRleCkpKTsKLSAgICB9Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I6Ok93blN0cnVjdHVyZU1vZGU6IHsKLSAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXND
ZWxsKCkpICYmIGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSA9PSBlbnVtZXJhdG9y
LT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKSB7Ci0gICAgICAgICAgICAvLyBXZSdsbCBvbmx5IG1hdGNo
IHRoZSBzdHJ1Y3R1cmUgSUQgaWYgdGhlIGJhc2UgaXMgYW4gb2JqZWN0LgotICAgICAgICAgICAg
QVNTRVJUKGluZGV4IDwgZW51bWVyYXRvci0+ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCgpKTsK
LSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERp
cmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNhY2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6
IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVkSW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZM
aW5lT2Zmc2V0KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbWV0YWRhdGEubV9lbnVt
ZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsKLSAgICAg
ICAgRkFMTFRIUk9VR0g7Ci0gICAgfQotCi0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I6OkdlbmVyaWNNb2RlOiB7Ci0gICAgICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9k
ZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAg
ICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFz
U3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOwot
ICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VW
YWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICB9CiAKLSAgICBkZWZh
dWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVh
azsKLSAgICB9OwotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVUVVJO
X1BST0ZJTEVEKENvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwoZ2xvYmFsT2Jq
ZWN0LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IsICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgJm1ldGFkYXRhLm1fZW51bWVyYXRvck1ldGFkYXRhKSk7
CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9p
bl9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCmluZGV4IDBkM2Q3MjkwNTMwYS4uOTY1M2YzZDkwNjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiU2xvd1BhdGhGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CkBAIC05MSw2ICs5Miw1MyBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKFZNJiB2
bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbgogICAgIHJldHVybiBw
YWRkaW5nOwogfQogCitpbmxpbmUgSlNWYWx1ZSBvcEVudW1lcmF0b3JHZXRCeVZhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBwcm9wZXJ0
eU5hbWVWYWx1ZSwgdW5zaWduZWQgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Rmxh
ZyBtb2RlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IsIEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlID0gbnVsbHB0ciwgdWludDhfdCogZW51bWVyYXRvck1ldGFkYXRhID0g
bnVsbHB0cikKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHN3aXRjaCAobW9kZSkgewor
ICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZTogeworICAgICAg
ICBpZiAoYXJyYXlQcm9maWxlICYmIExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKQorICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNl
VmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOwor
ICAgIH0KKyAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9k
ZTogeworICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkgJiYgYmFzZVZhbHVl
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpID09IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlE
KCkpIHsKKyAgICAgICAgICAgIC8vIFdlJ2xsIG9ubHkgbWF0Y2ggdGhlIHN0cnVjdHVyZSBJRCBp
ZiB0aGUgYmFzZSBpcyBhbiBvYmplY3QuCisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBlbnVt
ZXJhdG9yLT5lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4KCkpOworICAgICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRl
eCA8IGVudW1lcmF0b3ItPmNhY2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0g
ZW51bWVyYXRvci0+Y2FjaGVkSW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZW51bWVyYXRvck1ldGFkYXRh
KQorICAgICAgICAgICAgICAgICplbnVtZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0dXJlTW9kZVN0
cnVjdHVyZU1pc21hdGNoKTsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9
CisKKyAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKKyAg
ICAgICAgaWYgKGFycmF5UHJvZmlsZSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCisgICAgICAgICAgICBh
cnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZUlEKCkpOworICAgICAgICBpZiAocHJvcGVydHlOYW1lVmFsdWUuaXNDZWxsKCkpIHsKKyAg
ICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhwcm9wZXJ0eU5hbWVWYWx1ZSk7
CisgICAgICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGds
b2JhbE9iamVjdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBJZiBwcm9wZXJ0eU5hbWUgaXMgbm90IGEgY2VsbCB0aGVuIHdlIGFyZSBpbiBpbmRleCtu
YW1lZCBtb2RlLCBzbyBkbyB3aGF0IFJlY292ZXJOYW1lQW5kR2V0VmFsIGRvZXMuCisgICAgICAg
ICAgICBKU1N0cmluZyogc3RyaW5nID0gZW51bWVyYXRvci0+cHJvcGVydHlOYW1lQXRJbmRleChp
bmRleCk7CisgICAgICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlm
aWVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUu
Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKKyAgICB9OworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
IGlubGluZSBib29sIG9wSW5CeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvcE5hbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gbnVsbHB0cikKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotLSAKMi4z
MS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438037</attachid>
            <date>2021-09-13 07:17:06 -0700</date>
            <delta_ts>2021-09-13 11:44:22 -0700</delta_ts>
            <desc>v5</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>26201</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA2MjI3ZGIwODNmYWNmYWUxMjYxMmQ5MmM0OTI3MTNlYWQ1NWJiNjQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFTU0VSVCBmYWlsZWQgaW4gc3RyZXNzL2Zvci1pbi10ZXN0cy5qcyAoMzJi
aXQpCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQzCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNpbmNlIHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzCnRvbyBtYW55IHJlZ2lzdGVycyBmb3Ig
MzJiaXQuIFJldmVydCB0byB0aGUgc2xvdyBwYXRoIGFzIGEKdGVtcG9yYXJ5IG1lYXN1cmUgdG8g
YXZvaWQgY3Jhc2hlcywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQpvcHRpbWl6YXRpb25zIGxh
dGVyIG9uIChzZWUgYnVnICMyMzAxODkpLgoKKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CihKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEgZ2VuZXJpYyBjYWxsCm9w
ZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbC4KKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZgpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3
b3JrIG9uIDMyYml0LgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IGNhbGwgdGhlIGdl
bmVyaWMgY2FsbCBvcCBhbHdheXMuCiogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgooSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRo
ZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCiogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgoo
SlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xv
dyBwYXRoCmZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKb3BlcmF0aW9uLgoqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CihKU0M6
OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwpOgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAyOSArKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDE2ICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggICAgIHwgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8IDEwOCAtLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgICAgICAgICAgICB8ICAyMyAr
KysrCiAuLi4vZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwICAgICAgICAgICAgICAgfCAxMDgg
KysrKysrKysrKysrKysrKysrCiAuLi4vcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwICAgICAg
ICAgICAgICAgfCAgMzIgKy0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCAgfCAgNDggKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjI3IGluc2VydGlv
bnMoKyksIDEzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3ZGQ5
Njc5OTAzN2UuLjMyNWFjMTdhN2YxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjEtMDktMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBBU1NFUlQgZmFpbGVkIGluIHN0cmVzcy9mb3ItaW4tdGVzdHMuanMgKDMyYml0
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
cjI4MDc2MCBERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVz
ZXMKKyAgICAgICAgdG9vIG1hbnkgcmVnaXN0ZXJzIGZvciAzMmJpdC4gUmV2ZXJ0IHRvIHRoZSBz
bG93IHBhdGggYXMgYQorICAgICAgICB0ZW1wb3JhcnkgbWVhc3VyZSB0byBhdm9pZCBjcmFzaGVz
LCB3ZSdsbCB0cnkgdG8gcmVlbmFibGUgdGhlCisgICAgICAgIG9wdGltaXphdGlvbnMgbGF0ZXIg
b24gKHNlZSBidWcgIzIzMDE4OSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEg
Z2VuZXJpYyBjYWxsCisgICAgICAgIG9wZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRC
eVZhbC4KKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorICAgICAgICBj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3b3JrIG9u
IDMyYml0LgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6
IGNhbGwgdGhlIGdlbmVyaWMgY2FsbCBvcCBhbHdheXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xvdyBwYXRoCisg
ICAgICAgIGZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKKyAgICAgICAgb3BlcmF0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9y
R2V0QnlWYWwpOgorCiAyMDIxLTA5LTEzICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0pTQ11bMzJiaXRdIGluLWJ5LXZhbCBmYWlscyBpbnNpZGUgZm9yLWluIGxvb3Ag
YWZ0ZXIgZGVsZXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCA5NDdkZDYxYWRjMzkuLjI5NGZhNzFiYjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNTM4LDYgKzI1MzgsMjIgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2IKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0
LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSkpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2VDZWxsLCBFbmNvZGVkSlNWYWx1
ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMyX3QgbW9kZU51bWJlciwg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2UgPSBKU1ZhbHVlKGJhc2VDZWxsKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpT
VmFsdWU6OmRlY29kZShwcm9wZXJ0eU5hbWVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9
IHN0YXRpY19jYXN0PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xv
d1BhdGhzOjpvcEVudW1lcmF0b3JHZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2UsIHByb3BlcnR5
LCBpbmRleCwgbW9kZSwgZW51bWVyYXRvcikpKTsKK30KKwogSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkVudW1lcmF0b3JIYXNPd25Qcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBiYXNlVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIHByb3BlcnR5TmFtZVZhbHVlLCB1aW50MzJfdCBpbmRleCwgaW50MzJfdCBt
b2RlTnVtYmVyKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDE0ZTQyNTcxZGY1ZC4uODVk
NDE2OTgxOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApA
QCAtMTEyLDYgKzExMiw3IEBAIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51
bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIEVuY29kZWRKU1ZhCiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJf
dCwgaW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJh
dG9ySGFzT3duUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIHVpbnQzMl90LCBpbnQzMl90KSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5
VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgdWludDMyX3Qs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCwg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld1JlZ2V4cFdpdGhMYXN0SW5kZXgsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVj
dCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0FycmF5LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
dm9pZCosIHNpemVfdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCBiMmMxN2E2Y2I2ZWUuLjJmYzMwYzk5ZDg4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzNjg3
LDExNCArMTM2ODcsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvck5l
eHRVcGRhdGVQcm9wZXJ0eU5hbWUoTm9kZSogbm9kZSkKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRv
ckdldEJ5VmFsKE5vZGUqIG5vZGUpCi17Ci0gICAgRWRnZSBiYXNlRWRnZSA9IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMCk7Ci0gICAgYXV0byBnZW5lcmF0ZSA9IFsmXSAoR1BSUmVnIGJhc2VD
ZWxsR1BSKSB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lQ2FzZXM7Ci0g
ICAgICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdDsKLSAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVnczsKLSAgICAgICAgR1BSUmVnIGluZGV4R1BSOwotICAgICAgICBHUFJSZWcgZW51
bWVyYXRvckdQUjsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmFkU3RydWN0dXJlU2xv
d1BhdGg7Ci0KLSAgICAgICAgY29tcGlsZUdldEJ5VmFsKG5vZGUsIHNjb3BlZExhbWJkYTxzdGQ6
OnR1cGxlPEpTVmFsdWVSZWdzLCBEYXRhRm9ybWF0PihEYXRhRm9ybWF0KT4oWyZdIChEYXRhRm9y
bWF0KSB7Ci0gICAgICAgICAgICBFZGdlIHN0b3JhZ2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAyKTsKLSAgICAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2U7Ci0gICAgICAg
ICAgICBpZiAoc3RvcmFnZUVkZ2UpCi0gICAgICAgICAgICAgICAgc3RvcmFnZS5lbXBsYWNlKHRo
aXMsIHN0b3JhZ2VFZGdlKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFu
ZCBpbmRleCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKLSAgICAgICAgICAg
IFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBtb2RlKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgNCkpOwotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRv
cih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUpKTsKLQotICAgICAgICAgICAgR1BS
UmVnIG1vZGVHUFIgPSBtb2RlLmdwcigpOwotICAgICAgICAgICAgaW5kZXhHUFIgPSBpbmRleC5n
cHIoKTsKLSAgICAgICAgICAgIGVudW1lcmF0b3JHUFIgPSBlbnVtZXJhdG9yLmdwcigpOwotCi0g
ICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlUmVnc1RlbXBvcmFyeSh0aGlzKTsKLSAgICAgICAg
ICAgIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIgPSByZXN1bHRSZWdzLnBheWxvYWRHUFIoKTsKLQotICAgICAgICAgICAgYm9vbCBoYXZl
U3RvcmFnZSA9ICEhc3RvcmFnZUVkZ2U7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFn
ZVRlbXBvcmFyeTsKLSAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSOwotICAgICAgICAgICAg
aWYgKCFoYXZlU3RvcmFnZSkgewotICAgICAgICAgICAgICAgIHN0b3JhZ2VUZW1wb3JhcnkgPSBH
UFJUZW1wb3JhcnkodGhpcywgUmV1c2UsIGVudW1lcmF0b3IpOwotICAgICAgICAgICAgICAgIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlVGVtcG9yYXJ5LmdwcigpOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7Ci0KLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBub3RGYXN0TmFtZWRDYXNlczsKLQotICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBnZW5lcmF0ZSB0aGlzIGNvZGUgaWYgd2Uga25vdyBi
YXNlIGlzIG5vdCBhbiBvYmplY3QuCi0gICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBtb2RlR1BSLCBU
cnVzdGVkSW1tMzIoSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZSB8IEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGUpKSk7Ci0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoYmFzZUVkZ2UpLmlzVHlwZShTcGVjQ2Vs
bCkpCi0gICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hJZk5vdENlbGwoYmFzZUNlbGxHUFIpKTsKLQotICAgICAgICAgICAgICAgIC8vIENoZWNr
IHRoZSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2Uga25vdyB0aGVy
ZSdzIG9ubHkgb25lIHN0cnVjdHVyZSBmb3IgYmFzZSB3ZSBjYW4ganVzdCBlbWJlZCBpdCBoZXJl
LgotICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlQ2VsbEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0K
LSAgICAgICAgICAgICAgICBhdXRvIGJhZFN0cnVjdHVyZSA9IG1faml0LmJyYW5jaDMyKAotICAg
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAg
ICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKAotICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgd2F5IHRvIHJl
cHJlc2VudCBJbmRleGVkK05hbWVkPwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpLm5vZGUoKSA9PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpLm5v
ZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgYmFkU3RydWN0dXJlU2xvd1BhdGggPSBiYWRTdHJ1
Y3R1cmU7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBub3RGYXN0
TmFtZWRDYXNlcy5hcHBlbmQoYmFkU3RydWN0dXJlKTsKLQotICAgICAgICAgICAgICAgIC8vIENv
bXB1dGUgdGhlIG9mZnNldAotICAgICAgICAgICAgICAgIC8vIElmIGluZGV4IGlzIGxlc3MgdGhh
biB0aGUgZW51bWVyYXRvcidzIGNhY2hlZCBpbmxpbmUgc3RvcmFnZSwgdGhlbiBpdCdzIGFuIGlu
bGluZSBhY2Nlc3MKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkxp
bmVBY2Nlc3MgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLAot
ICAgICAgICAgICAgICAgICAgICBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51
bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0
eU9mZnNldCgpKSk7Ci0KLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChiYXNlQ2VsbEdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0LCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkpLCByZXN1bHRSZWdz
KTsKLQotICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKLQot
ICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSBpdCdzIG91dCBvZiBsaW5lCi0gICAgICAgICAg
ICAgICAgb3V0T2ZMaW5lQWNjZXNzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKGluZGV4R1BSLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdWIz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5uZWczMihzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5zaWduRXh0ZW5kMzJUb1B0cihzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIWhhdmVTdG9yYWdlKQotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VDZWxsR1BSLCBKU09iamVjdDo6YnV0dGVy
Zmx5T2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKLSAgICAgICAgICAgICAgICBjb25zdGV4cHIgaW50
cHRyX3Qgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5ID0gb2Zmc2V0SW5CdXR0ZXJmbHkoZmlyc3RPdXRP
ZkxpbmVPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpOwotICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0
LCBvZmZzZXRPZkZpcnN0UHJvcGVydHkpLCByZXN1bHRSZWdzKTsKLSAgICAgICAgICAgICAgICBk
b25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIG5vdEZhc3ROYW1lZENhc2VzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihyZXN1bHRSZWdzLCBEYXRhRm9ybWF0SlMpOwotICAgICAgICB9KSk7Ci0K
LSAgICAgICAgLy8gV2UgcmVseSBvbiBjb21waWxlR2V0QnlWYWwgdG8gY2FsbCBqc1ZhbHVlUmVz
dWx0IGZvciB1cy4KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMga2luZGEgaGFja3kuLi4KLSAg
ICAgICAgQVNTRVJUKGdlbmVyYXRpb25JbmZvKG5vZGUpLmpzVmFsdWVSZWdzKCkgPT0gcmVzdWx0
UmVncyAmJiBnZW5lcmF0aW9uSW5mbyhub2RlKS5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3Jt
YXRKUyk7Ci0KLSAgICAgICAgaWYgKGJhZFN0cnVjdHVyZVNsb3dQYXRoLmlzU2V0KCkpCi0gICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoYmFkU3RydWN0dXJlU2xv
d1BhdGgsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUNlbGxHUFIsIGluZGV4
R1BSLCBlbnVtZXJhdG9yR1BSKSk7Ci0KLSAgICAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsK
LSAgICB9OwotCi0gICAgaWYgKGlzQ2VsbChiYXNlRWRnZS51c2VLaW5kKCkpKSB7Ci0gICAgICAg
IC8vIFVzZSBtYW51YWwgb3BlcmFuZCBzcGVjdWxhdGlvbiBzaW5jZSBGaXh1cCBtYXkgaGF2ZSBw
aWNrZWQgYSBVc2VLaW5kIG1vcmUgcmVzdHJpY3RpdmUgdGhhbiBDZWxsVXNlLgotICAgICAgICBz
cGVjdWxhdGUobm9kZSwgYmFzZUVkZ2UpOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKLSAg
ICAgICAgZ2VuZXJhdGUoYmFzZU9wZXJhbmQuZ3ByKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2VPcGVyYW5kKHRoaXMsIGJhc2VFZGdlKTsKLSAgICAgICAgZ2Vu
ZXJhdGUoYmFzZU9wZXJhbmQuZ3ByKCkpOwotICAgIH0KLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUg
U2xvd1BhdGhGdW5jdGlvblR5cGU+CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVy
YXRvckhhc1Byb3BlcnR5KE5vZGUqIG5vZGUsIFNsb3dQYXRoRnVuY3Rpb25UeXBlIHNsb3dQYXRo
RnVuY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA1NTU5ZTEwNTU5NWQuLjhkYzhhYWViYjE5MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCkBAIC00NDgwLDYgKzQ0ODAsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFyaXRoUmFuZG9tKE5vZGUqIG5vZGUpCiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwg
bm9kZSk7CiB9CiAKKy8vIEZJWE1FOiB3ZSBhcmUgYWx3YXlzIHRha2luZyB0aGUgc2xvdyBwYXRo
IGhlcmUsIHdlIHNob3VsZCBiZSBhYmxlIHRvIGRvIHRoZSBlcXVpdmFsZW50IHRvIHRoZSA2NGJp
dCB2ZXJzaW9uIGlmIHdlIGFkZCBtb3JlIGF2YWlsYWJsZSAoY2FsbGVlLXNhdmUgcmVnaXN0ZXJz
KSB0byBBUk12NyBhbmQvb3IgaWYgd2UgcmVkdWNlIHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzIGNv
bXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwgdXNlcy4gU2VlIGJ1ZyAjMjMwMTg5Lgordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQoreworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2VPcGVyYW5kKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgR1BSUmVnIGJhc2VP
cGVyYW5kR1BSID0gYmFzZU9wZXJhbmQuZ3ByKCk7CisgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVy
dHkodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVl
UmVncygpOworICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBtX2dy
YXBoLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5n
cHIoKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKKyAgICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDUpKTsKKyAgICBHUFJSZWcgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3Iu
Z3ByKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRC
eVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
T3BlcmFuZEdQUiwgcHJvcGVydHlSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVyYXRvckdQ
Uik7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUpOworfQogI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmlu
ZGV4IDE4OWY2NTRhNGNiYy4uMjU2OWIyOTlhMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTYzNTIsNiArNjM1MiwxMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSogbm9kZSkKICAgICB9
CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9k
ZSogbm9kZSkKK3sKKyAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCAwKTsKKyAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChHUFJSZWcgYmFzZUNlbGxHUFIpIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVDYXNlczsKKyAgICAgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOwor
ICAgICAgICBHUFJSZWcgaW5kZXhHUFI7CisgICAgICAgIEdQUlJlZyBlbnVtZXJhdG9yR1BSOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmVTbG93UGF0aDsKKworICAg
ICAgICBjb21waWxlR2V0QnlWYWwobm9kZSwgc2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1
ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQpPihbJl0gKERhdGFGb3JtYXQpIHsKKyAgICAg
ICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpOwor
ICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZTsKKyAgICAgICAgICAgIGlmIChzdG9y
YWdlRWRnZSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmVtcGxhY2UodGhpcywgc3RvcmFnZUVk
Z2UpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgU3BlY3VsYXRlU3Ry
aWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0KSk7
CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBlbnVtZXJhdG9yKHRoaXMsIG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOworCisgICAgICAgICAgICBHUFJSZWcgbW9kZUdQUiA9
IG1vZGUuZ3ByKCk7CisgICAgICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOworICAgICAg
ICAgICAgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAgICAgICAgICAgIHJl
c3VsdCA9IEpTVmFsdWVSZWdzVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICAgICAgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlc3Vs
dFJlZ3MucGF5bG9hZEdQUigpOworCisgICAgICAgICAgICBib29sIGhhdmVTdG9yYWdlID0gISFz
dG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlVGVtcG9yYXJ5Owor
ICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7CisgICAgICAgICAgICBpZiAoIWhhdmVTdG9y
YWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFnZVRlbXBvcmFyeSA9IEdQUlRlbXBvcmFyeSh0
aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0
b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IG5vdEZhc3ROYW1lZENhc2VzOworCisgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IGdlbmVyYXRlIHRoaXMgY29kZSBpZiB3ZSBrbm93IGJhc2UgaXMgbm90IGFu
IG9iamVjdC4KKyAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG1vZGVHUFIsIFRydXN0ZWRJbW0zMihK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlIHwgSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpHZW5lcmljTW9kZSkpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuaXNUeXBlKFNwZWNDZWxsKSkKKyAgICAgICAg
ICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2Vs
bChiYXNlQ2VsbEdQUikpOworCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHN0cnVjdHVy
ZQorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUg
c3RydWN0dXJlIGZvciBiYXNlIHdlIGNhbiBqdXN0IGVtYmVkIGl0IGhlcmUuCisgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VDZWxsR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAg
ICAgIGF1dG8gYmFkU3RydWN0dXJlID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgc2NyYXRj
aEdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gcmVwcmVzZW50IEluZGV4
ZWQrTmFtZWQ/CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwg
MSkubm9kZSgpID09IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykubm9kZSgpKQorICAgICAg
ICAgICAgICAgICAgICBiYWRTdHJ1Y3R1cmVTbG93UGF0aCA9IGJhZFN0cnVjdHVyZTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFw
cGVuZChiYWRTdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zm
c2V0CisgICAgICAgICAgICAgICAgLy8gSWYgaW5kZXggaXMgbGVzcyB0aGFuIHRoZSBlbnVtZXJh
dG9yJ3MgY2FjaGVkIGlubGluZSBzdG9yYWdlLCB0aGVuIGl0J3MgYW4gaW5saW5lIGFjY2Vzcwor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mTGluZUFjY2VzcyA9IG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAgICAgICAg
ICAgICAgIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0KCkpKTsK
KworICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEpT
T2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSksIHJlc3VsdFJlZ3MpOworCisgICAgICAg
ICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgICAgICAgICAg
ICAgLy8gT3RoZXJ3aXNlIGl0J3Mgb3V0IG9mIGxpbmUKKyAgICAgICAgICAgICAgICBvdXRPZkxp
bmVBY2Nlc3MubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoaW5kZXhH
UFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2Fj
aGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IG1faml0Lm5lZzMyKHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRl
bmQzMlRvUHRyKHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmICgh
aGF2ZVN0b3JhZ2UpCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHN0b3JhZ2VHUFIpOworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBvZmZzZXRP
ZkZpcnN0UHJvcGVydHkgPSBvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9mZnNldCkg
KiBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZUdQUiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNldE9mRmly
c3RQcm9wZXJ0eSksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBl
bmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90RmFzdE5h
bWVkQ2FzZXMubGluaygmbV9qaXQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KHJlc3VsdFJlZ3MsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIH0pKTsKKworICAgICAgICAvLyBX
ZSByZWx5IG9uIGNvbXBpbGVHZXRCeVZhbCB0byBjYWxsIGpzVmFsdWVSZXN1bHQgZm9yIHVzLgor
ICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBraW5kYSBoYWNreS4uLgorICAgICAgICBBU1NFUlQo
Z2VuZXJhdGlvbkluZm8obm9kZSkuanNWYWx1ZVJlZ3MoKSA9PSByZXN1bHRSZWdzICYmIGdlbmVy
YXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsKKworICAg
ICAgICBpZiAoYmFkU3RydWN0dXJlU2xvd1BhdGguaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93UGF0aCwgdGhpcywg
b3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlQ2VsbEdQUiwgaW5kZXhHUFIsIGVudW1lcmF0
b3JHUFIpKTsKKworICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAgIH07CisKKyAg
ICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVzZUtpbmQoKSkpIHsKKyAgICAgICAgLy8gVXNlIG1hbnVh
bCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNpbmNlIEZpeHVwIG1heSBoYXZlIHBpY2tlZCBhIFVzZUtp
bmQgbW9yZSByZXN0cmljdGl2ZSB0aGFuIENlbGxVc2UuCisgICAgICAgIHNwZWN1bGF0ZShub2Rl
LCBiYXNlRWRnZSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2VPcGVyYW5kKHRo
aXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBnZW5lcmF0
ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UpOworICAgICAgICBnZW5lcmF0ZShiYXNlT3Bl
cmFuZC5ncHIoKSk7CisgICAgfQorfQorCiAjZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKaW5kZXggMjFhMDA0MWZiY2Q2Li4xZTNiYTFhM2FjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTAxMCw0MiAr
MTAxMCwxNCBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0
b3JfZ2V0X2J5X3ZhbCkKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8
T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhi
eXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5TmFtZSA9IEdF
VChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpOwogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBhdXRvIG1vZGUgPSBzdGF0aWNf
Y2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWc+KEdFVChieXRlY29kZS5tX21vZGUp
LmpzVmFsdWUoKS5hc1VJbnQzMigpKTsKICAgICBtZXRhZGF0YS5tX2VudW1lcmF0b3JNZXRhZGF0
YSB8PSBzdGF0aWNfY2FzdDx1aW50OF90Pihtb2RlKTsKLQogICAgIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqPihH
RVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGluZGV4
ID0gR0VUKGJ5dGVjb2RlLm1faW5kZXgpLmpzVmFsdWUoKS5hc0ludDMyKCk7Ci0gICAgc3dpdGNo
IChtb2RlKSB7Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2Rl
OiB7Ci0gICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgICAg
IG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXND
ZWxsKCktPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVl
LmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsKLSAgICB9
Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGU6IHsK
LSAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpICYmIGJhc2VWYWx1ZS5hc0Nl
bGwoKS0+c3RydWN0dXJlSUQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKSB7
Ci0gICAgICAgICAgICAvLyBXZSdsbCBvbmx5IG1hdGNoIHRoZSBzdHJ1Y3R1cmUgSUQgaWYgdGhl
IGJhc2UgaXMgYW4gb2JqZWN0LgotICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgZW51bWVyYXRv
ci0+ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCgpKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9G
SUxFRChiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3It
PmNhY2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2Fj
aGVkSW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgbWV0YWRhdGEubV9lbnVtZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0
dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgfQot
Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7Ci0gICAg
ICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgp
KTsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3By
b3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJp
bmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOwotICAgICAgICBDSEVDS19FWENFUFRJT04o
KTsKLSAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUpKTsKLSAgICB9CiAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9OwotICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKENvbW1vblNsb3dQYXRo
czo6b3BFbnVtZXJhdG9yR2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHByb3BlcnR5
TmFtZSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwg
Jm1ldGFkYXRhLm1fZW51bWVyYXRvck1ldGFkYXRhKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDBkM2Q3MjkwNTMw
YS4uOTY1M2YzZDkwNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTSW1t
dXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgi
CiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC05MSw2ICs5Miw1MyBAQCBBTFdB
WVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVTcGVjaWFsaXphdGlvbgogICAgIHJldHVybiBwYWRkaW5nOwogfQogCitpbmxpbmUgSlNW
YWx1ZSBvcEVudW1lcmF0b3JHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdW5zaWduZWQgaW5k
ZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZyBtb2RlLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqIGVudW1lcmF0b3IsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0
ciwgdWludDhfdCogZW51bWVyYXRvck1ldGFkYXRhID0gbnVsbHB0cikKK3sKKyAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOjpJbmRleGVkTW9kZTogeworICAgICAgICBpZiAoYXJyYXlQcm9maWxlICYmIExJ
S0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKQorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNl
cnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOworICAgIH0KKyAgICBjYXNlIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZTogeworICAgICAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSkgJiYgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgp
ID09IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKKyAgICAgICAgICAgIC8vIFdl
J2xsIG9ubHkgbWF0Y2ggdGhlIHN0cnVjdHVyZSBJRCBpZiB0aGUgYmFzZSBpcyBhbiBvYmplY3Qu
CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1cmVQcm9w
ZXJ0eUluZGV4KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNl
VmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNhY2hlZElu
bGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVkSW5saW5l
Q2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpZiAoZW51bWVyYXRvck1ldGFkYXRhKQorICAgICAgICAgICAgICAgICplbnVt
ZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVt
ZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsKKyAgICAg
ICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisKKyAgICBjYXNlIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKKyAgICAgICAgaWYgKGFycmF5UHJvZmlsZSAm
JiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
Ok93blN0cnVjdHVyZU1vZGUpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1
Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAgICBpZiAo
cHJvcGVydHlOYW1lVmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJp
bmcgPSBhc1N0cmluZyhwcm9wZXJ0eU5hbWVWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIHByb3Bl
cnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBJZiBwcm9wZXJ0eU5hbWUgaXMg
bm90IGEgY2VsbCB0aGVuIHdlIGFyZSBpbiBpbmRleCtuYW1lZCBtb2RlLCBzbyBkbyB3aGF0IFJl
Y292ZXJOYW1lQW5kR2V0VmFsIGRvZXMuCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0g
ZW51bWVyYXRvci0+cHJvcGVydHlOYW1lQXRJbmRleChpbmRleCk7CisgICAgICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9OworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIGlubGluZSBib29sIG9wSW5CeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJv
cE5hbWUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKIHsKICAgICBWTSYg
dm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotLSAKMi4zMS4xCgo=
</data>
<flag name="review"
          id="461329"
          type_id="1"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438060</attachid>
            <date>2021-09-13 11:44:22 -0700</date>
            <delta_ts>2021-09-13 14:35:12 -0700</delta_ts>
            <desc>v6</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>26471</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA4MjNlN2YyYTQ1YWNjMDYwNWUxZDBmMTRhNmQwNjYyOWI3YzhjYTVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFTU0VSVCBmYWlsZWQgaW4gc3RyZXNzL2Zvci1pbi10ZXN0cy5qcyAoMzJi
aXQpCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQzCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNpbmNlIHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzCnRvbyBtYW55IHJlZ2lzdGVycyBmb3Ig
MzJiaXQuIFJldmVydCB0byB0aGUgc2xvdyBwYXRoIGFzIGEKdGVtcG9yYXJ5IG1lYXN1cmUgdG8g
YXZvaWQgY3Jhc2hlcywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQpvcHRpbWl6YXRpb25zIGxh
dGVyIG9uIChzZWUgYnVnICMyMzAxODkpLgoKKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CihKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEgZ2VuZXJpYyBjYWxsCm9w
ZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbC4KKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZgpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3
b3JrIG9uIDMyYml0LgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IGNhbGwgdGhlIGdl
bmVyaWMgY2FsbCBvcCBhbHdheXMuCiogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgooSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRo
ZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCiogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgoo
SlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xv
dyBwYXRoCmZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKb3BlcmF0aW9uLgoqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CihKU0M6
OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwpOgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAyOSArKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDE2ICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggICAgIHwgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8IDEwOCAtLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgICAgICAgICAgICB8ICAyMyAr
KysrCiAuLi4vZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwICAgICAgICAgICAgICAgfCAxMDgg
KysrKysrKysrKysrKysrKysrCiAuLi4vcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwICAgICAg
ICAgICAgICAgfCAgMzIgKy0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCAgfCAgNTQgKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDIzMyBpbnNlcnRp
b25zKCspLCAxMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2Rk
OTY3OTkwMzdlLi4zMjVhYzE3YTdmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDIxLTA5LTExICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQVNTRVJUIGZhaWxlZCBpbiBzdHJlc3MvZm9yLWluLXRlc3RzLmpzICgzMmJp
dCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNl
IHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1
c2VzCisgICAgICAgIHRvbyBtYW55IHJlZ2lzdGVycyBmb3IgMzJiaXQuIFJldmVydCB0byB0aGUg
c2xvdyBwYXRoIGFzIGEKKyAgICAgICAgdGVtcG9yYXJ5IG1lYXN1cmUgdG8gYXZvaWQgY3Jhc2hl
cywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQorICAgICAgICBvcHRpbWl6YXRpb25zIGxhdGVy
IG9uIChzZWUgYnVnICMyMzAxODkpLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6IGRlZmluZSBh
IGdlbmVyaWMgY2FsbAorICAgICAgICBvcGVyYXRpb24gZm9yIGNvbXBpbGVFbnVtZXJhdG9yR2V0
QnlWYWwuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOiBtb3ZlIHRoZSBjdXJyZW50IHZlcnNpb24gb2YKKyAgICAgICAg
Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB0byA2NGJpdCwgc2luY2UgaXQgd29uJ3Qgd29yayBv
biAzMmJpdC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwp
OiBjYWxsIHRoZSBnZW5lcmljIGNhbGwgb3AgYWx3YXlzLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IHVzZSB0aGUgcHJldmlvdXMgdmVyc2lvbiBoZXJlLgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKTogcmVmYWN0b3IgYSBiaXQgdGhlIHNsb3cgcGF0aAor
ICAgICAgICBmb3IgZW51bWVyYXRvckdldEJ5VmFsIHNvIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSBE
RkcgYXMgYSBjYWxsCisgICAgICAgIG9wZXJhdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wRW51bWVyYXRv
ckdldEJ5VmFsKToKKwogMjAyMS0wOS0xMyAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtKU0NdWzMyYml0XSBpbi1ieS12YWwgZmFpbHMgaW5zaWRlIGZvci1pbiBsb29w
IGFmdGVyIGRlbGV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggOTQ3ZGQ2MWFkYzM5Li4yOTRmYTcxYmIyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjUzOCw2ICsyNTM4LDIyIEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlQ2VsbCwgRW5jb2RlZEpTVmFs
dWUgcHJvcGVydHlOYW1lVmFsdWUsIHVpbnQzMl90IGluZGV4LCBpbnQzMl90IG1vZGVOdW1iZXIs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1ZShiYXNlQ2VsbCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgcHJvcGVydHkgPSBK
U1ZhbHVlOjpkZWNvZGUocHJvcGVydHlOYW1lVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpGbGFnIG1vZGUg
PSBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWc+KG1vZGVOdW1iZXIp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKENvbW1vblNs
b3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlLCBwcm9wZXJ0
eSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IpKSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMyX3Qg
bW9kZU51bWJlcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAxNGU0MjU3MWRmNWQuLjg1
ZDQxNjk4MTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTExMiw2ICsxMTIsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVu
dW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCBFbmNvZGVkSlNWYQogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMy
X3QsIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVy
YXRvckhhc093blByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRC
eVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIHVpbnQzMl90
LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3Qs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHZvaWQqLCBzaXplX3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggYjJjMTdhNmNiNmVlLi4yZmMzMGM5OWQ4OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzY4
NywxMTQgKzEzNjg3LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JO
ZXh0VXBkYXRlUHJvcGVydHlOYW1lKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0
b3JHZXRCeVZhbChOb2RlKiBub2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApOwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNl
Q2VsbEdQUikgewotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwot
ICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3M7Ci0gICAgICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVu
dW1lcmF0b3JHUFI7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNs
b3dQYXRoOwotCi0gICAgICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZv
cm1hdCkgewotICAgICAgICAgICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMik7Ci0gICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAg
ICAgICAgaWYgKHN0b3JhZ2VFZGdlKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0
aGlzLCBzdG9yYWdlRWRnZSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDQpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0
b3IodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQ
UlJlZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXgu
Z3ByKCk7Ci0gICAgICAgICAgICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQot
ICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAg
ICAgICByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2
ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VFZGdlOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2VUZW1wb3Jhcnk7Ci0gICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAg
IGlmICghaGF2ZVN0b3JhZ2UpIHsKLSAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0g
R1BSVGVtcG9yYXJ5KHRoaXMsIFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBz
dG9yYWdlR1BSID0gc3RvcmFnZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cg
YmFzZSBpcyBub3QgYW4gb2JqZWN0LgotICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwg
VHJ1c3RlZEltbTMyKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0Nl
bGwpKQotICAgICAgICAgICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0aGUgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhl
cmUncyBvbmx5IG9uZSBzdHJ1Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVy
ZS4KLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwot
Ci0gICAgICAgICAgICAgICAgYXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
ICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcygKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAg
ICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBy
ZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8KLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKS5ub2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5u
b2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3Ry
dWN0dXJlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFz
dE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBD
b21wdXRlIHRoZSBvZmZzZXQKLSAgICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRo
YW4gdGhlIGVudW1lcmF0b3IncyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBp
bmxpbmUgYWNjZXNzCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZM
aW5lQWNjZXNzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwK
LSAgICAgICAgICAgICAgICAgICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVu
dW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNp
dHlPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoYmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVn
cyk7Ci0KLSAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0K
LSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAg
ICAgICAgIG91dE9mTGluZUFjY2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9q
aXQubW92ZShpbmRleEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3Vi
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgc3RvcmFnZUdQUik7Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGlu
dHB0cl90IG9mZnNldE9mRmlyc3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0KSAqIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdo
dCwgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAg
ZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBub3RGYXN0TmFtZWRDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIocmVzdWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwot
Ci0gICAgICAgIC8vIFdlIHJlbHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJl
c3VsdCBmb3IgdXMuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0g
ICAgICAgIEFTU0VSVChnZW5lcmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3Vs
dFJlZ3MgJiYgZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SlMpOwotCi0gICAgICAgIGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRl
eEdQUiwgZW51bWVyYXRvckdQUikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7
Ci0gICAgfTsKLQotICAgIGlmIChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAg
ICAvLyBVc2UgbWFudWFsIG9wZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUg
cGlja2VkIGEgVXNlS2luZCBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIGJhc2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0g
ICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdl
bmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1l
IFNsb3dQYXRoRnVuY3Rpb25UeXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1l
cmF0b3JIYXNQcm9wZXJ0eShOb2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBzbG93UGF0
aEZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNTU1OWUxMDU1OTVkLi41MWZlMmY0YmJlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDQ4MCw2ICs0NDgwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCks
IG5vZGUpOwogfQogCisvLyBGSVhNRTogd2UgYXJlIGFsd2F5cyB0YWtpbmcgdGhlIHNsb3cgcGF0
aCBoZXJlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGUgZXF1aXZhbGVudCB0byB0aGUgNjRi
aXQgdmVyc2lvbiBpZiB3ZSBhZGQgbW9yZSBhdmFpbGFibGUgKGNhbGxlZS1zYXZlIHJlZ2lzdGVy
cykgdG8gQVJNdjcgYW5kL29yIGlmIHdlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVzZXMuIFNlZSBidWcgIzIzMDE4OS4KK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQg
aW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgU3BlY3VsYXRl
U3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0
KSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDUpKTsKKyAgICBHUFJSZWcgYmFzZU9wZXJhbmRHUFIgPSBiYXNlT3Bl
cmFuZC5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1Zh
bHVlUmVncygpOworICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworICAgIEdQUlJl
ZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsKKyAgICBHUFJSZWcgZW51bWVyYXRvckdQUiA9IGVudW1l
cmF0b3IuZ3ByKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0
b3JHZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlT3BlcmFuZEdQUiwgcHJvcGVydHlSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVy
YXRvckdQUik7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOworfQogI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDE4OWY2NTRhNGNiYy4uMjU2OWIyOTlhMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTYzNTIsNiArNjM1
MiwxMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSogbm9kZSkK
ICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlW
YWwoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKTsKKyAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChHUFJSZWcgYmFzZUNlbGxHUFIp
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVDYXNlczsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzOworICAgICAgICBHUFJSZWcgaW5kZXhHUFI7CisgICAgICAgIEdQUlJlZyBlbnVtZXJhdG9y
R1BSOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmVTbG93UGF0aDsK
KworICAgICAgICBjb21waWxlR2V0QnlWYWwobm9kZSwgc2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8
SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQpPihbJl0gKERhdGFGb3JtYXQpIHsK
KyAgICAgICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDIpOworICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZTsKKyAgICAgICAgICAgIGlm
IChzdG9yYWdlRWRnZSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmVtcGxhY2UodGhpcywgc3Rv
cmFnZUVkZ2UpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgU3BlY3Vs
YXRlU3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCA0KSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBlbnVtZXJhdG9yKHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOworCisgICAgICAgICAgICBHUFJSZWcgbW9k
ZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwor
ICAgICAgICAgICAgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAgICAgICAg
ICAgIHJlc3VsdCA9IEpTVmFsdWVSZWdzVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICAgICAgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOworCisgICAgICAgICAgICBib29sIGhhdmVTdG9yYWdl
ID0gISFzdG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlVGVtcG9y
YXJ5OworICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7CisgICAgICAgICAgICBpZiAoIWhh
dmVTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFnZVRlbXBvcmFyeSA9IEdQUlRlbXBv
cmFyeSh0aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAgICAgICAgICAgICAgc3RvcmFnZUdQ
UiA9IHN0b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IG5vdEZhc3ROYW1lZENhc2VzOworCisgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGdlbmVyYXRlIHRoaXMgY29kZSBpZiB3ZSBrbm93IGJhc2UgaXMg
bm90IGFuIG9iamVjdC4KKyAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG1vZGVHUFIsIFRydXN0ZWRJ
bW0zMihKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlIHwgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZSkpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuaXNUeXBlKFNwZWNDZWxsKSkKKyAg
ICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlQ2VsbEdQUikpOworCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHN0
cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBrbm93IHRoZXJlJ3Mgb25s
eSBvbmUgc3RydWN0dXJlIGZvciBiYXNlIHdlIGNhbiBqdXN0IGVtYmVkIGl0IGhlcmUuCisgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VDZWxs
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAg
ICAgICAgICAgIGF1dG8gYmFkU3RydWN0dXJlID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAg
c2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gcmVwcmVzZW50
IEluZGV4ZWQrTmFtZWQ/CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSkubm9kZSgpID09IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykubm9kZSgpKQor
ICAgICAgICAgICAgICAgICAgICBiYWRTdHJ1Y3R1cmVTbG93UGF0aCA9IGJhZFN0cnVjdHVyZTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENh
c2VzLmFwcGVuZChiYWRTdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0
aGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgLy8gSWYgaW5kZXggaXMgbGVzcyB0aGFuIHRoZSBl
bnVtZXJhdG9yJ3MgY2FjaGVkIGlubGluZSBzdG9yYWdlLCB0aGVuIGl0J3MgYW4gaW5saW5lIGFj
Y2VzcworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mTGluZUFjY2Vz
cyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAg
ICAgICAgICAgICAgIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9y
R1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0
KCkpKTsKKworICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSksIHJlc3VsdFJlZ3MpOworCisg
ICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0J3Mgb3V0IG9mIGxpbmUKKyAgICAgICAgICAgICAgICBv
dXRPZkxpbmVBY2Nlc3MubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
aW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgICAgIG1faml0Lm5lZzMyKHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnNp
Z25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IGlmICghaGF2ZVN0b3JhZ2UpCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHN0b3JhZ2VHUFIpOworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBv
ZmZzZXRPZkZpcnN0UHJvcGVydHkgPSBvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9m
ZnNldCkgKiBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNl
dE9mRmlyc3RQcm9wZXJ0eSksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIGRvbmVDYXNl
cy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90
RmFzdE5hbWVkQ2FzZXMubGluaygmbV9qaXQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHJlc3VsdFJlZ3MsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIH0pKTsKKworICAgICAg
ICAvLyBXZSByZWx5IG9uIGNvbXBpbGVHZXRCeVZhbCB0byBjYWxsIGpzVmFsdWVSZXN1bHQgZm9y
IHVzLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBraW5kYSBoYWNreS4uLgorICAgICAgICBB
U1NFUlQoZ2VuZXJhdGlvbkluZm8obm9kZSkuanNWYWx1ZVJlZ3MoKSA9PSByZXN1bHRSZWdzICYm
IGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsK
KworICAgICAgICBpZiAoYmFkU3RydWN0dXJlU2xvd1BhdGguaXNTZXQoKSkKKyAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlQ2VsbEdQUiwgaW5kZXhHUFIsIGVu
dW1lcmF0b3JHUFIpKTsKKworICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAgIH07
CisKKyAgICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVzZUtpbmQoKSkpIHsKKyAgICAgICAgLy8gVXNl
IG1hbnVhbCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNpbmNlIEZpeHVwIG1heSBoYXZlIHBpY2tlZCBh
IFVzZUtpbmQgbW9yZSByZXN0cmljdGl2ZSB0aGFuIENlbGxVc2UuCisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBiYXNlRWRnZSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2VPcGVy
YW5kKHRoaXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBn
ZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UpOworICAgICAgICBnZW5lcmF0ZShi
YXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfQorfQorCiAjZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggMjFhMDA0MWZiY2Q2Li4xZTNiYTFhM2FjYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTAx
MCw0MiArMTAxMCwxNCBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBH
RVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5TmFt
ZSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBhdXRvIG1vZGUgPSBz
dGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWc+KEdFVChieXRlY29kZS5t
X21vZGUpLmpzVmFsdWUoKS5hc1VJbnQzMigpKTsKICAgICBtZXRhZGF0YS5tX2VudW1lcmF0b3JN
ZXRhZGF0YSB8PSBzdGF0aWNfY2FzdDx1aW50OF90Pihtb2RlKTsKLQogICAgIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqPihHRVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVk
IGluZGV4ID0gR0VUKGJ5dGVjb2RlLm1faW5kZXgpLmpzVmFsdWUoKS5hc0ludDMyKCk7Ci0gICAg
c3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4
ZWRNb2RlOiB7Ci0gICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFz
ZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsK
LSAgICB9Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1v
ZGU6IHsKLSAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpICYmIGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJ
RCgpKSB7Ci0gICAgICAgICAgICAvLyBXZSdsbCBvbmx5IG1hdGNoIHRoZSBzdHJ1Y3R1cmUgSUQg
aWYgdGhlIGJhc2UgaXMgYW4gb2JqZWN0LgotICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgZW51
bWVyYXRvci0+ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCgpKTsKLSAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1l
cmF0b3ItPmNhY2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRv
ci0+Y2FjaGVkSW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbWV0YWRhdGEubV9lbnVtZXJhdG9yTWV0YWRhdGEgfD0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpIYXNTZWVuT3du
U3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgfQotCi0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7
Ci0gICAgICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmVJRCgpKTsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29k
ZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOwotICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICB9CiAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9OwotICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKENvbW1vblNs
b3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHBy
b3BlcnR5TmFtZSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IsICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSwgJm1ldGFkYXRhLm1fZW51bWVyYXRvck1ldGFkYXRhKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDBkM2Q3
MjkwNTMwYS4uZjFmZjY4MTQ1NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC05MSw2ICs5Miw1OSBA
QCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbgogICAgIHJldHVybiBwYWRkaW5nOwogfQogCitpbmxp
bmUgSlNWYWx1ZSBvcEVudW1lcmF0b3JHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdW5zaWdu
ZWQgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZyBtb2RlLCBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
bnVsbHB0ciwgdWludDhfdCogZW51bWVyYXRvck1ldGFkYXRhID0gbnVsbHB0cikKK3sKKyAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZTogeworICAgICAgICBpZiAoYXJyYXlQcm9maWxl
ICYmIExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKQorICAgICAgICAgICAgYXJyYXlQcm9maWxl
LT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOworICAgIH0KKyAgICBjYXNlIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZTogeworICAgICAgICBpZiAo
TElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkgJiYgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmVJRCgpID09IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKKyAgICAgICAgICAg
IC8vIFdlJ2xsIG9ubHkgbWF0Y2ggdGhlIHN0cnVjdHVyZSBJRCBpZiB0aGUgYmFzZSBpcyBhbiBv
YmplY3QuCisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1
cmVQcm9wZXJ0eUluZGV4KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNh
Y2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVk
SW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAoZW51bWVyYXRvck1ldGFkYXRhKQorICAgICAgICAgICAgICAg
ICplbnVtZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsK
KyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisKKyAgICBjYXNlIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKKyAgICAgICAgaWYgKGFycmF5UHJv
ZmlsZSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2Vy
dmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworICAgICAg
ICBpZiAocHJvcGVydHlOYW1lVmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSBhc1N0cmluZyhwcm9wZXJ0eU5hbWVWYWx1ZSk7CisgICAgICAgICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIGJyYW5jaCBp
cyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIHVzZSB0aGlzIG1ldGhvZAorICAgICAgICAgICAgLy8g
Ym90aCBhcyBhIHNsb3dfcGF0aCBhbmQgYXMgYSBERkcgY2FsbCBvcC4gV2UnbGwgZW5kIHVwCisg
ICAgICAgICAgICAvLyBoZXJlIGlmIHByb3BlcnR5TmFtZSBpcyBub3QgYSBjZWxsIHRoZW4gd2Ug
YXJlIGluCisgICAgICAgICAgICAvLyBpbmRleCtuYW1lZCBtb2RlLCBzbyBkbyB3aGF0IFJlY292
ZXJOYW1lQW5kR2V0VmFsCisgICAgICAgICAgICAvLyBkb2VzLiBUaGlzIGNhbiBwcm9iYWJseSBi
ZSByZW1vdmVkIGlmIHdlIHJlLWVuYWJsZSB0aGUKKyAgICAgICAgICAgIC8vIG9wdGltaXphdGlv
bnMgZm9yIGVudW1lcmF0b3JHZXRCeVZhbCBpbiBERkcsIHNlZSBidWcKKyAgICAgICAgICAgIC8v
ICMyMzAxODkuCisgICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0gZW51bWVyYXRvci0+cHJv
cGVydHlOYW1lQXRJbmRleChpbmRleCk7CisgICAgICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IHN0cmluZy0+dG9JZGVudGlmaWVyKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9OworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKIGlubGluZSBib29sIG9wSW5CeVZhbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvcE5hbWUsIEFycmF5UHJv
ZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0cikKIHsKICAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOwotLSAKMi4zMS4xCgo=
</data>
<flag name="review"
          id="461363"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="461364"
          type_id="3"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438080</attachid>
            <date>2021-09-13 14:35:12 -0700</date>
            <delta_ts>2021-09-13 23:48:11 -0700</delta_ts>
            <desc>v7</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>26394</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiYWMyMTM0MGNjMzRlMDM1ODk2MTZiYWJiNjkyMjcxOWNmMjM1MDExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFTU0VSVCBmYWlsZWQgaW4gc3RyZXNzL2Zvci1pbi10ZXN0cy5qcyAoMzJi
aXQpCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQzCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNpbmNlIHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzCnRvbyBtYW55IHJlZ2lzdGVycyBmb3Ig
MzJiaXQuIFJldmVydCB0byB0aGUgc2xvdyBwYXRoIGFzIGEKdGVtcG9yYXJ5IG1lYXN1cmUgdG8g
YXZvaWQgY3Jhc2hlcywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQpvcHRpbWl6YXRpb25zIGxh
dGVyIG9uIChzZWUgYnVnICMyMzAxODkpLgoKKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CihKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEgZ2VuZXJpYyBjYWxsCm9w
ZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbC4KKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZgpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3
b3JrIG9uIDMyYml0LgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IGNhbGwgdGhlIGdl
bmVyaWMgY2FsbCBvcCBhbHdheXMuCiogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgooSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRo
ZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCiogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgoo
SlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xv
dyBwYXRoCmZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKb3BlcmF0aW9uLgoqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CihKU0M6
OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwpOgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAyOSArKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDEzICsrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggICAgIHwgICAxICsKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwICB8IDEwOCAtLS0tLS0tLS0tLS0tLS0t
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgICAgICAgICAgICB8ICAyMyAr
KysrCiAuLi4vZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwICAgICAgICAgICAgICAgfCAxMDgg
KysrKysrKysrKysrKysrKysrCiAuLi4vcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwICAgICAg
ICAgICAgICAgfCAgMzIgKy0tLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCAgfCAgNTUgKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDIzMSBpbnNlcnRp
b25zKCspLCAxMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2Rk
OTY3OTkwMzdlLi4zMjVhYzE3YTdmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDIxLTA5LTExICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQVNTRVJUIGZhaWxlZCBpbiBzdHJlc3MvZm9yLWluLXRlc3RzLmpzICgzMmJp
dCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNl
IHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1
c2VzCisgICAgICAgIHRvbyBtYW55IHJlZ2lzdGVycyBmb3IgMzJiaXQuIFJldmVydCB0byB0aGUg
c2xvdyBwYXRoIGFzIGEKKyAgICAgICAgdGVtcG9yYXJ5IG1lYXN1cmUgdG8gYXZvaWQgY3Jhc2hl
cywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQorICAgICAgICBvcHRpbWl6YXRpb25zIGxhdGVy
IG9uIChzZWUgYnVnICMyMzAxODkpLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6IGRlZmluZSBh
IGdlbmVyaWMgY2FsbAorICAgICAgICBvcGVyYXRpb24gZm9yIGNvbXBpbGVFbnVtZXJhdG9yR2V0
QnlWYWwuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOiBtb3ZlIHRoZSBjdXJyZW50IHZlcnNpb24gb2YKKyAgICAgICAg
Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB0byA2NGJpdCwgc2luY2UgaXQgd29uJ3Qgd29yayBv
biAzMmJpdC4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwp
OiBjYWxsIHRoZSBnZW5lcmljIGNhbGwgb3AgYWx3YXlzLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IHVzZSB0aGUgcHJldmlvdXMgdmVyc2lvbiBoZXJlLgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKTogcmVmYWN0b3IgYSBiaXQgdGhlIHNsb3cgcGF0aAor
ICAgICAgICBmb3IgZW51bWVyYXRvckdldEJ5VmFsIHNvIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSBE
RkcgYXMgYSBjYWxsCisgICAgICAgIG9wZXJhdGlvbi4KKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wRW51bWVyYXRv
ckdldEJ5VmFsKToKKwogMjAyMS0wOS0xMyAgWGFuIEzDs3BleiAgPHhhbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtKU0NdWzMyYml0XSBpbi1ieS12YWwgZmFpbHMgaW5zaWRlIGZvci1pbiBsb29w
IGFmdGVyIGRlbGV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggOTQ3ZGQ2MWFkYzM5Li45NTEzYTQzZWE3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMjUzOCw2ICsyNTM4LDE5IEBAIEpTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVj
dCwgYmFzZSwgcHJvcGVydHlOYW1lKSkpKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlQ2VsbCwgRW5jb2RlZEpTVmFs
dWUgcHJvcGVydHlOYW1lVmFsdWUsIHVpbnQzMl90IGluZGV4LCBpbnQzMl90IG1vZGVOdW1iZXIs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51bWVyYXRvcikpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNWYWx1ZSBwcm9wZXJ0eSA9IEpTVmFsdWU6OmRlY29kZShwcm9wZXJ0
eU5hbWVWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9IHN0YXRpY19jYXN0PEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xvd1BhdGhzOjpvcEVudW1lcmF0b3JH
ZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBwcm9wZXJ0eSwgaW5kZXgsIG1vZGUsIGVu
dW1lcmF0b3IpKSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVt
ZXJhdG9ySGFzT3duUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBwcm9w
ZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMyX3QgbW9kZU51bWJlcikpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAppbmRleCAxNGU0MjU3MWRmNWQuLjg1ZDQxNjk4MTkwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTExMiw2ICsxMTIsNyBA
QCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRl
UHJvcGVydHlOYW1lLCBFbmNvZGVkSlNWYQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25FbnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QpKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVyYXRvckhhc093blByb3BlcnR5
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgRW5jb2RlZEpTVmFs
dWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIHVpbnQzMl90LCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0
b3JHZXRCeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0Nl
bGwqLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3QsIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdSZWdl
eHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJh
eSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIHZvaWQqLCBzaXplX3QpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5k
ZXggYjJjMTdhNmNiNmVlLi4yZmMzMGM5OWQ4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzY4NywxMTQgKzEzNjg3LDYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlO
YW1lKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBu
b2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDAp
OwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNlQ2VsbEdQUikgewotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICBKU1ZhbHVlUmVn
c1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3M7Ci0gICAg
ICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVudW1lcmF0b3JHUFI7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNsb3dQYXRoOwotCi0gICAgICAg
IGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKU1ZhbHVlUmVn
cywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZvcm1hdCkgewotICAgICAgICAg
ICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7Ci0gICAg
ICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAgICAgICAgaWYgKHN0b3JhZ2VF
ZGdlKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0aGlzLCBzdG9yYWdlRWRnZSk7
Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJ
bnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDQpKTsKLSAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0b3IodGhpcywgbV9ncmFwaC52
YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBtb2RlR1BSID0gbW9k
ZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXguZ3ByKCk7Ci0gICAgICAgICAg
ICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQotICAgICAgICAgICAgcmVzdWx0
ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAgICAgICByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gcmVzdWx0UmVn
cy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2ZVN0b3JhZ2UgPSAhIXN0b3Jh
Z2VFZGdlOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VUZW1wb3Jhcnk7Ci0gICAg
ICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2Up
IHsKLSAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0gR1BSVGVtcG9yYXJ5KHRoaXMs
IFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFn
ZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cgYmFzZSBpcyBub3QgYW4gb2Jq
ZWN0LgotICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwgVHJ1c3RlZEltbTMyKEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICgh
bV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0NlbGwpKQotICAgICAgICAgICAg
ICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJh
c2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgc3RydWN0dXJlCi0g
ICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSBzdHJ1
Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVyZS4KLSAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCi0gICAgICAgICAgICAgICAg
YXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBzY3JhdGNoR1BS
LAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byByZXByZXNlbnQgSW5kZXhlZCtO
YW1lZD8KLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKS5u
b2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5ub2RlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3RydWN0dXJlOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5k
KGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQK
LSAgICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRoYW4gdGhlIGVudW1lcmF0b3In
cyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBpbmxpbmUgYWNjZXNzCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZMaW5lQWNjZXNzID0gbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAg
ICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkpOwotCi0g
ICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
YmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVncyk7Ci0KLSAgICAgICAgICAg
ICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAgICAgICAgIG91dE9mTGluZUFj
Y2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShpbmRleEdQUiwg
c2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRJ
bmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9q
aXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXZl
U3RvcmFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3Rv
cmFnZUdQUik7Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGludHB0cl90IG9mZnNldE9mRmly
c3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSAqIHN0
YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlR1BS
LCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZGaXJzdFBy
b3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZCht
X2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub3RGYXN0TmFtZWRD
YXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocmVz
dWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwotCi0gICAgICAgIC8vIFdlIHJl
bHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJlc3VsdCBmb3IgdXMuCi0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0gICAgICAgIEFTU0VSVChnZW5l
cmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3VsdFJlZ3MgJiYgZ2VuZXJhdGlv
bkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlMpOwotCi0gICAgICAg
IGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgZW51bWVyYXRvckdQ
UikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgfTsKLQotICAgIGlm
IChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAgICAvLyBVc2UgbWFudWFsIG9w
ZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUgcGlja2VkIGEgVXNlS2luZCBt
b3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAgc3BlY3VsYXRlKG5vZGUsIGJh
c2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywg
YmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0gICAgICAgIGdlbmVyYXRlKGJh
c2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5k
LmdwcigpKTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFNsb3dQYXRoRnVuY3Rpb25U
eXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0eShO
b2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggNTU1OWUxMDU1OTVkLi41MWZlMmY0YmJlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDQ4MCw2
ICs0NDgwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRvbShOb2Rl
KiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQogCisvLyBG
SVhNRTogd2UgYXJlIGFsd2F5cyB0YWtpbmcgdGhlIHNsb3cgcGF0aCBoZXJlLCB3ZSBzaG91bGQg
YmUgYWJsZSB0byBkbyB0aGUgZXF1aXZhbGVudCB0byB0aGUgNjRiaXQgdmVyc2lvbiBpZiB3ZSBh
ZGQgbW9yZSBhdmFpbGFibGUgKGNhbGxlZS1zYXZlIHJlZ2lzdGVycykgdG8gQVJNdjcgYW5kL29y
IGlmIHdlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBjb21waWxlRW51bWVyYXRvckdl
dEJ5VmFsIHVzZXMuIFNlZSBidWcgIzIzMDE4OS4KK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAg
ICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgaW5kZXgodGhpcywgbV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5k
IG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDUp
KTsKKyAgICBHUFJSZWcgYmFzZU9wZXJhbmRHUFIgPSBiYXNlT3BlcmFuZC5ncHIoKTsKKyAgICBK
U1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1ZhbHVlUmVncygpOworICAgIEdQ
UlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworICAgIEdQUlJlZyBtb2RlR1BSID0gbW9kZS5n
cHIoKTsKKyAgICBHUFJSZWcgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAg
ICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlT3BlcmFuZEdQUiwg
cHJvcGVydHlSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVyYXRvckdQUik7CisgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OworfQogI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDE4OWY2NTRh
NGNiYy4uMjU2OWIyOTlhMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTYzNTIsNiArNjM1MiwxMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSogbm9kZSkKICAgICB9CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sK
KyAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKTsKKyAgICBh
dXRvIGdlbmVyYXRlID0gWyZdIChHUFJSZWcgYmFzZUNlbGxHUFIpIHsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVDYXNlczsKKyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3Jh
cnkgcmVzdWx0OworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzOworICAgICAgICBHUFJS
ZWcgaW5kZXhHUFI7CisgICAgICAgIEdQUlJlZyBlbnVtZXJhdG9yR1BSOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmVTbG93UGF0aDsKKworICAgICAgICBjb21waWxl
R2V0QnlWYWwobm9kZSwgc2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SlNWYWx1ZVJlZ3MsIERhdGFG
b3JtYXQ+KERhdGFGb3JtYXQpPihbJl0gKERhdGFGb3JtYXQpIHsKKyAgICAgICAgICAgIEVkZ2Ug
c3RvcmFnZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAg
U3RvcmFnZU9wZXJhbmQgc3RvcmFnZTsKKyAgICAgICAgICAgIGlmIChzdG9yYWdlRWRnZSkKKyAg
ICAgICAgICAgICAgICBzdG9yYWdlLmVtcGxhY2UodGhpcywgc3RvcmFnZUVkZ2UpOworICAgICAg
ICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4KHRoaXMsIG1fZ3JhcGgudmFy
QXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVy
YW5kIG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0KSk7CisgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBlbnVtZXJhdG9yKHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgNSkpOworCisgICAgICAgICAgICBHUFJSZWcgbW9kZUdQUiA9IG1vZGUuZ3ByKCk7
CisgICAgICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOworICAgICAgICAgICAgZW51bWVy
YXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFs
dWVSZWdzVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICAgICAgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHJlc3VsdFJlZ3MucGF5bG9h
ZEdQUigpOworCisgICAgICAgICAgICBib29sIGhhdmVTdG9yYWdlID0gISFzdG9yYWdlRWRnZTsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlVGVtcG9yYXJ5OworICAgICAgICAgICAg
R1BSUmVnIHN0b3JhZ2VHUFI7CisgICAgICAgICAgICBpZiAoIWhhdmVTdG9yYWdlKSB7CisgICAg
ICAgICAgICAgICAgc3RvcmFnZVRlbXBvcmFyeSA9IEdQUlRlbXBvcmFyeSh0aGlzLCBSZXVzZSwg
ZW51bWVyYXRvcik7CisgICAgICAgICAgICAgICAgc3RvcmFnZUdQUiA9IHN0b3JhZ2VUZW1wb3Jh
cnkuZ3ByKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdG9yYWdlR1BS
ID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IG5vdEZhc3ROYW1lZENhc2VzOworCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0
IGdlbmVyYXRlIHRoaXMgY29kZSBpZiB3ZSBrbm93IGJhc2UgaXMgbm90IGFuIG9iamVjdC4KKyAg
ICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIG1vZGVHUFIsIFRydXN0ZWRJbW0zMihKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlIHwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpHZW5l
cmljTW9kZSkpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc3RhdGUu
Zm9yTm9kZShiYXNlRWRnZSkuaXNUeXBlKFNwZWNDZWxsKSkKKyAgICAgICAgICAgICAgICAgICAg
bm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlQ2VsbEdQ
UikpOworCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHN0cnVjdHVyZQorICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBrbm93IHRoZXJlJ3Mgb25seSBvbmUgc3RydWN0dXJlIGZv
ciBiYXNlIHdlIGNhbiBqdXN0IGVtYmVkIGl0IGhlcmUuCisgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VDZWxsR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAgICAgICAgICAgIGF1dG8gYmFk
U3RydWN0dXJlID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKKyAgICAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCisgICAgICAgICAgICAgICAg
ICAgICAgICBlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZFN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3
ZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gcmVwcmVzZW50IEluZGV4ZWQrTmFtZWQ/Cisg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMSkubm9kZSgpID09
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykubm9kZSgpKQorICAgICAgICAgICAgICAgICAg
ICBiYWRTdHJ1Y3R1cmVTbG93UGF0aCA9IGJhZFN0cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChiYWRTdHJ1
Y3R1cmUpOworCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgb2Zmc2V0CisgICAgICAg
ICAgICAgICAgLy8gSWYgaW5kZXggaXMgbGVzcyB0aGFuIHRoZSBlbnVtZXJhdG9yJ3MgY2FjaGVk
IGlubGluZSBzdG9yYWdlLCB0aGVuIGl0J3MgYW4gaW5saW5lIGFjY2VzcworICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mTGluZUFjY2VzcyA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAgICAgICAgICAgICAgIGluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0KCkpKTsKKworICAgICAgICAg
ICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KGJhc2VDZWxs
R1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSksIHJlc3VsdFJlZ3MpOworCisgICAgICAgICAgICAgICAgZG9u
ZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlIGl0J3Mgb3V0IG9mIGxpbmUKKyAgICAgICAgICAgICAgICBvdXRPZkxpbmVBY2Nlc3MubGlu
aygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoaW5kZXhHUFIsIHNjcmF0Y2hH
UFIpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2Fw
YWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0Lm5lZzMy
KHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmICghaGF2ZVN0b3JhZ2Up
CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUNlbGxHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VHUFIp
OworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBvZmZzZXRPZkZpcnN0UHJvcGVy
dHkgPSBvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9mZnNldCkgKiBzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgICAgICAgICAgICAgbV9q
aXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZUdQUiwgc2NyYXRj
aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNldE9mRmlyc3RQcm9wZXJ0eSks
IHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVt
cCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMubGlu
aygmbV9qaXQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHJlc3VsdFJlZ3Ms
IERhdGFGb3JtYXRKUyk7CisgICAgICAgIH0pKTsKKworICAgICAgICAvLyBXZSByZWx5IG9uIGNv
bXBpbGVHZXRCeVZhbCB0byBjYWxsIGpzVmFsdWVSZXN1bHQgZm9yIHVzLgorICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBraW5kYSBoYWNreS4uLgorICAgICAgICBBU1NFUlQoZ2VuZXJhdGlvbklu
Zm8obm9kZSkuanNWYWx1ZVJlZ3MoKSA9PSByZXN1bHRSZWdzICYmIGdlbmVyYXRpb25JbmZvKG5v
ZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsKKworICAgICAgICBpZiAoYmFk
U3RydWN0dXJlU2xvd1BhdGguaXNTZXQoKSkKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uRW51
bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlQ2VsbEdQUiwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKwor
ICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAgIH07CisKKyAgICBpZiAoaXNDZWxs
KGJhc2VFZGdlLnVzZUtpbmQoKSkpIHsKKyAgICAgICAgLy8gVXNlIG1hbnVhbCBvcGVyYW5kIHNw
ZWN1bGF0aW9uIHNpbmNlIEZpeHVwIG1heSBoYXZlIHBpY2tlZCBhIFVzZUtpbmQgbW9yZSByZXN0
cmljdGl2ZSB0aGFuIENlbGxVc2UuCisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBiYXNlRWRnZSk7
CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2VPcGVyYW5kKHRoaXMsIGJhc2VFZGdl
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBnZW5lcmF0ZShiYXNlT3BlcmFu
ZC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZU9wZXJh
bmQodGhpcywgYmFzZUVkZ2UpOworICAgICAgICBnZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7
CisgICAgfQorfQorCiAjZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXgg
MjFhMDA0MWZiY2Q2Li4xZTNiYTFhM2FjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTAxMCw0MiArMTAxMCwxNCBAQCBK
U0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2VudW1lcmF0b3JfZ2V0X2J5X3Zh
bCkKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BFbnVtZXJhdG9y
R2V0QnlWYWw+KCk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jh
c2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5TmFtZSA9IEdFVChieXRlY29kZS5t
X3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBhdXRvIG1vZGUgPSBzdGF0aWNfY2FzdDxKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3I6OkZsYWc+KEdFVChieXRlY29kZS5tX21vZGUpLmpzVmFsdWUoKS5h
c1VJbnQzMigpKTsKICAgICBtZXRhZGF0YS5tX2VudW1lcmF0b3JNZXRhZGF0YSB8PSBzdGF0aWNf
Y2FzdDx1aW50OF90Pihtb2RlKTsKLQogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogZW51
bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqPihHRVQoYnl0ZWNvZGUu
bV9lbnVtZXJhdG9yKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gR0VUKGJ5dGVj
b2RlLm1faW5kZXgpLmpzVmFsdWUoKS5hc0ludDMyKCk7Ci0gICAgc3dpdGNoIChtb2RlKSB7Ci0g
ICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlOiB7Ci0gICAgICAg
IGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAgICAgICAgIG1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZUlEKCkpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxP
YmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsKLSAgICB9Ci0gICAgY2FzZSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGU6IHsKLSAgICAgICAgaWYg
KExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpICYmIGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlSUQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJRCgpKSB7Ci0gICAgICAgICAg
ICAvLyBXZSdsbCBvbmx5IG1hdGNoIHRoZSBzdHJ1Y3R1cmUgSUQgaWYgdGhlIGJhc2UgaXMgYW4g
b2JqZWN0LgotICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgZW51bWVyYXRvci0+ZW5kU3RydWN0
dXJlUHJvcGVydHlJbmRleCgpKTsKLSAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFs
dWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNhY2hlZElubGlu
ZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVkSW5saW5lQ2Fw
YWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgbWV0YWRhdGEubV9lbnVtZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0dXJlTW9kZVN0cnVj
dHVyZU1pc21hdGNoKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgfQotCi0gICAgY2FzZSBK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7Ci0gICAgICAgIGlmIChiYXNl
VmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0
cnVjdHVyZU1vZGUpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2FycmF5UHJvZmlsZS5vYnNlcnZl
U3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKLSAgICAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSku
anNWYWx1ZSgpKTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdHJpbmctPnRvSWRlbnRp
ZmllcihnbG9iYWxPYmplY3QpOwotICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKLSAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUp
KTsKLSAgICB9CiAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9OwotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKENvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJh
dG9yR2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHByb3BlcnR5TmFtZSwgaW5kZXgs
IG1vZGUsIGVudW1lcmF0b3IsICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSwgJm1ldGFkYXRhLm1f
ZW51bWVyYXRvck1ldGFkYXRhKSk7CiB9CiAKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChz
bG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDBkM2Q3MjkwNTMwYS4uNjNiNDU0Zjhj
ZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNp
bmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVy
Zmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC05MSw2ICs5Miw2MCBAQCBBTFdBWVNfSU5MSU5FIGlu
dCBhcml0eUNoZWNrRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVTcGVjaWFs
aXphdGlvbgogICAgIHJldHVybiBwYWRkaW5nOwogfQogCitpbmxpbmUgSlNWYWx1ZSBvcEVudW1l
cmF0b3JHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdW5zaWduZWQgaW5kZXgsIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6RmxhZyBtb2RlLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGVu
dW1lcmF0b3IsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gbnVsbHB0ciwgdWludDhfdCog
ZW51bWVyYXRvck1ldGFkYXRhID0gbnVsbHB0cikKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9i
YWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpJ
bmRleGVkTW9kZTogeworICAgICAgICBpZiAoYXJyYXlQcm9maWxlICYmIExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkpKQorICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJl
SUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluZGV4KSkpOworICAgIH0KKyAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVy
YXRvcjo6T3duU3RydWN0dXJlTW9kZTogeworICAgICAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSkgJiYgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpID09IGVudW1lcmF0
b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKKyAgICAgICAgICAgIC8vIFdlJ2xsIG9ubHkgbWF0
Y2ggdGhlIHN0cnVjdHVyZSBJRCBpZiB0aGUgYmFzZSBpcyBhbiBvYmplY3QuCisgICAgICAgICAg
ICBBU1NFUlQoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1cmVQcm9wZXJ0eUluZGV4KCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0T2Jq
ZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNhY2hlZElubGluZUNhcGFjaXR5
KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVkSW5saW5lQ2FwYWNpdHkoKSAr
IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoZW51bWVyYXRvck1ldGFkYXRhKQorICAgICAgICAgICAgICAgICplbnVtZXJhdG9yTWV0YWRh
dGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpIYXNT
ZWVuT3duU3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsKKyAgICAgICAgfQorICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICB9CisKKyAgICBjYXNlIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6R2VuZXJpY01vZGU6IHsKKyAgICAgICAgaWYgKGFycmF5UHJvZmlsZSAmJiBiYXNlVmFsdWUu
aXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVy
ZU1vZGUpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNl
VmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgICAgIGlmICghcHJvcGVydHlOYW1lVmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgYnJhbmNoIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2Ugd2UgdXNlIHRoaXMgbWV0aG9kCisg
ICAgICAgICAgICAvLyBib3RoIGFzIGEgc2xvd19wYXRoIGFuZCBhcyBhIERGRyBjYWxsIG9wLiBX
ZSdsbCBlbmQgdXAKKyAgICAgICAgICAgIC8vIGhlcmUgaWYgcHJvcGVydHlOYW1lIGlzIG5vdCBh
IGNlbGwgdGhlbiB3ZSBhcmUgaW4KKyAgICAgICAgICAgIC8vIGluZGV4K25hbWVkIG1vZGUsIHNv
IGRvIHdoYXQgUmVjb3Zlck5hbWVBbmRHZXRWYWwKKyAgICAgICAgICAgIC8vIGRvZXMuIFRoaXMg
Y2FuIHByb2JhYmx5IGJlIHJlbW92ZWQgaWYgd2UgcmUtZW5hYmxlIHRoZQorICAgICAgICAgICAg
Ly8gb3B0aW1pemF0aW9ucyBmb3IgZW51bWVyYXRvckdldEJ5VmFsIGluIERGRywgc2VlIGJ1Zwor
ICAgICAgICAgICAgLy8gIzIzMDE4OS4KKyAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBl
bnVtZXJhdG9yLT5wcm9wZXJ0eU5hbWVBdEluZGV4KGluZGV4KTsKKyAgICAgICAgICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eU5hbWUpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBh
c1N0cmluZyhwcm9wZXJ0eU5hbWVWYWx1ZSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBi
YXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKSk7CisgICAgfQorCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiBp
bmxpbmUgYm9vbCBvcEluQnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9
IG51bGxwdHIpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKLS0gCjIuMzEu
MQoK
</data>
<flag name="review"
          id="461377"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="461379"
          type_id="3"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438104</attachid>
            <date>2021-09-13 23:48:11 -0700</date>
            <delta_ts>2021-09-14 03:13:31 -0700</delta_ts>
            <desc>v8</desc>
            <filename>0001-JSC-ASSERT-failed-in-stress-for-in-tests.js-32bit.patch</filename>
            <type>text/plain</type>
            <size>26355</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA2MmVhYjUwYTAxNmU0NzBhNGE1OTNlMTU1YjYwMzU5MmEzZGU5YzVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/WGFuPTIwTD1DMz1CM3Blej89IDx4YW5AaWdh
bGlhLmNvbT4KRGF0ZTogTW9uLCAzMCBBdWcgMjAyMSAxMjo0Mzo1OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtKU0NdIEFTU0VSVCBmYWlsZWQgaW4gc3RyZXNzL2Zvci1pbi10ZXN0cy5qcyAoMzJi
aXQpCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQzCgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNpbmNlIHIyODA3NjAgREZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCB1c2VzCnRvbyBtYW55IHJlZ2lzdGVycyBmb3Ig
MzJiaXQuIFJldmVydCB0byB0aGUgc2xvdyBwYXRoIGFzIGEKdGVtcG9yYXJ5IG1lYXN1cmUgdG8g
YXZvaWQgY3Jhc2hlcywgd2UnbGwgdHJ5IHRvIHJlZW5hYmxlIHRoZQpvcHRpbWl6YXRpb25zIGxh
dGVyIG9uIChzZWUgYnVnICMyMzAxODkpLgoKKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CihKU0M6
OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEgZ2VuZXJpYyBjYWxsCm9w
ZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbC4KKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lv
biBvZgpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3
b3JrIG9uIDMyYml0LgoqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6IGNhbGwgdGhlIGdl
bmVyaWMgY2FsbCBvcCBhbHdheXMuCiogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgooSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRo
ZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCiogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgoo
SlNDOjpKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xv
dyBwYXRoCmZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKb3BlcmF0aW9uLgoqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CihKU0M6
OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwpOgotLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAyOSArKysrKwogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCAgIHwgIDEyICsrCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCAgICAgfCAgIDEgKwogLi4uL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgIHwgMTA4IC0tLS0tLS0tLS0tLS0tLS0t
LQogLi4uL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAgICAgICAgICAgIHwgIDIzICsr
KysKIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgICAgICAgICAgICAgICB8IDEwOCAr
KysrKysrKysrKysrKysrKysKIC4uLi9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgICAgICAg
ICAgICAgICB8ICAzMiArLS0tLS0KIC4uLi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oICB8ICA1NSArKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgMjMwIGluc2VydGlv
bnMoKyksIDEzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3ZGQ5
Njc5OTAzN2UuLjMyNWFjMTdhN2YxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjEtMDktMTEgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBBU1NFUlQgZmFpbGVkIGluIHN0cmVzcy9mb3ItaW4tdGVzdHMuanMgKDMyYml0
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NTQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2luY2Ug
cjI4MDc2MCBERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVz
ZXMKKyAgICAgICAgdG9vIG1hbnkgcmVnaXN0ZXJzIGZvciAzMmJpdC4gUmV2ZXJ0IHRvIHRoZSBz
bG93IHBhdGggYXMgYQorICAgICAgICB0ZW1wb3JhcnkgbWVhc3VyZSB0byBhdm9pZCBjcmFzaGVz
LCB3ZSdsbCB0cnkgdG8gcmVlbmFibGUgdGhlCisgICAgICAgIG9wdGltaXphdGlvbnMgbGF0ZXIg
b24gKHNlZSBidWcgIzIzMDE4OSkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKTogZGVmaW5lIGEg
Z2VuZXJpYyBjYWxsCisgICAgICAgIG9wZXJhdGlvbiBmb3IgY29tcGlsZUVudW1lcmF0b3JHZXRC
eVZhbC4KKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6IG1vdmUgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorICAgICAgICBj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsIHRvIDY0Yml0LCBzaW5jZSBpdCB3b24ndCB3b3JrIG9u
IDMyYml0LgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbCk6
IGNhbGwgdGhlIGdlbmVyaWMgY2FsbCBvcCBhbHdheXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRW51bWVyYXRvckdldEJ5VmFsKTogdXNlIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGhlcmUuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgpOiByZWZhY3RvciBhIGJpdCB0aGUgc2xvdyBwYXRoCisg
ICAgICAgIGZvciBlbnVtZXJhdG9yR2V0QnlWYWwgc28gaXQgY2FuIGJlIGNhbGxlZCBmcm9tIERG
RyBhcyBhIGNhbGwKKyAgICAgICAgb3BlcmF0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BFbnVtZXJhdG9y
R2V0QnlWYWwpOgorCiAyMDIxLTA5LTEzICBYYW4gTMOzcGV6ICA8eGFuQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0pTQ11bMzJiaXRdIGluLWJ5LXZhbCBmYWlscyBpbnNpZGUgZm9yLWluIGxvb3Ag
YWZ0ZXIgZGVsZXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCA5NDdkZDYxYWRjMzkuLjgxMTZmZDRhNzRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNTM4LDYgKzI1MzgsMTggQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVudW1lcmF0b3JJbkJ5VmFsLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2IKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0
LCBiYXNlLCBwcm9wZXJ0eU5hbWUpKSkpOwogfQogCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRW51bWVyYXRvckdldEJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2VDZWxsLCBFbmNvZGVkSlNWYWx1
ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMyX3QgbW9kZU51bWJlciwg
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NB
TExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU1ZhbHVlIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKHByb3BlcnR5
TmFtZVZhbHVlKTsKKyAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWcgbW9kZSA9IHN0
YXRpY19jYXN0PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZz4obW9kZU51bWJlcik7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoQ29tbW9uU2xvd1Bh
dGhzOjpvcEVudW1lcmF0b3JHZXRCeVZhbChnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBwcm9wZXJ0
eSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IpKSk7Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25FbnVtZXJhdG9ySGFzT3duUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgYmFzZVZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdWludDMyX3QgaW5kZXgsIGludDMyX3Qg
bW9kZU51bWJlcikpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAxNGU0MjU3MWRmNWQuLjg1
ZDQxNjk4MTkwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTExMiw2ICsxMTIsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkVu
dW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCBFbmNvZGVkSlNWYQogSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9ySW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMy
X3QsIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRW51bWVy
YXRvckhhc093blByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB1aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRC
eVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIHVpbnQzMl90
LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkVudW1lcmF0b3JHZXRCeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgdWludDMyX3QsIGludDMyX3Qs
IEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCBKU0NlbGwqLCAoSlNHbG9iYWxPYmpl
Y3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdBcnJheSwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IHZvaWQqLCBzaXplX3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggYjJjMTdhNmNiNmVlLi4yZmMzMGM5OWQ4OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMzY4
NywxMTQgKzEzNjg3LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JO
ZXh0VXBkYXRlUHJvcGVydHlOYW1lKE5vZGUqIG5vZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0
b3JHZXRCeVZhbChOb2RlKiBub2RlKQotewotICAgIEVkZ2UgYmFzZUVkZ2UgPSBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDApOwotICAgIGF1dG8gZ2VuZXJhdGUgPSBbJl0gKEdQUlJlZyBiYXNl
Q2VsbEdQUikgewotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwot
ICAgICAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQ7Ci0gICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3M7Ci0gICAgICAgIEdQUlJlZyBpbmRleEdQUjsKLSAgICAgICAgR1BSUmVnIGVu
dW1lcmF0b3JHUFI7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVjdHVyZVNs
b3dQYXRoOwotCi0gICAgICAgIGNvbXBpbGVHZXRCeVZhbChub2RlLCBzY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKU1ZhbHVlUmVncywgRGF0YUZvcm1hdD4oRGF0YUZvcm1hdCk+KFsmXSAoRGF0YUZv
cm1hdCkgewotICAgICAgICAgICAgRWRnZSBzdG9yYWdlRWRnZSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMik7Ci0gICAgICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlOwotICAgICAg
ICAgICAgaWYgKHN0b3JhZ2VFZGdlKQotICAgICAgICAgICAgICAgIHN0b3JhZ2UuZW1wbGFjZSh0
aGlzLCBzdG9yYWdlRWRnZSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgaW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7Ci0gICAgICAgICAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgbW9kZSh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDQpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGVudW1lcmF0
b3IodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA1KSk7Ci0KLSAgICAgICAgICAgIEdQ
UlJlZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsKLSAgICAgICAgICAgIGluZGV4R1BSID0gaW5kZXgu
Z3ByKCk7Ci0gICAgICAgICAgICBlbnVtZXJhdG9yR1BSID0gZW51bWVyYXRvci5ncHIoKTsKLQot
ICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZVJlZ3NUZW1wb3JhcnkodGhpcyk7Ci0gICAgICAg
ICAgICByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gcmVzdWx0UmVncy5wYXlsb2FkR1BSKCk7Ci0KLSAgICAgICAgICAgIGJvb2wgaGF2
ZVN0b3JhZ2UgPSAhIXN0b3JhZ2VFZGdlOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3Jh
Z2VUZW1wb3Jhcnk7Ci0gICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUjsKLSAgICAgICAgICAg
IGlmICghaGF2ZVN0b3JhZ2UpIHsKLSAgICAgICAgICAgICAgICBzdG9yYWdlVGVtcG9yYXJ5ID0g
R1BSVGVtcG9yYXJ5KHRoaXMsIFJldXNlLCBlbnVtZXJhdG9yKTsKLSAgICAgICAgICAgICAgICBz
dG9yYWdlR1BSID0gc3RvcmFnZVRlbXBvcmFyeS5ncHIoKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgbm90RmFzdE5hbWVkQ2FzZXM7Ci0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ2VuZXJhdGUgdGhpcyBjb2RlIGlmIHdlIGtub3cg
YmFzZSBpcyBub3QgYW4gb2JqZWN0LgotICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgbW9kZUdQUiwg
VHJ1c3RlZEltbTMyKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6SW5kZXhlZE1vZGUgfCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlKSkpOwotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGJhc2VFZGdlKS5pc1R5cGUoU3BlY0Nl
bGwpKQotICAgICAgICAgICAgICAgICAgICBub3RGYXN0TmFtZWRDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3RDZWxsKGJhc2VDZWxsR1BSKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0aGUgc3RydWN0dXJlCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGtub3cgdGhl
cmUncyBvbmx5IG9uZSBzdHJ1Y3R1cmUgZm9yIGJhc2Ugd2UgY2FuIGp1c3QgZW1iZWQgaXQgaGVy
ZS4KLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwot
Ci0gICAgICAgICAgICAgICAgYXV0byBiYWRTdHJ1Y3R1cmUgPSBtX2ppdC5icmFuY2gzMigKLSAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
ICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcygKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0b3JHUFIsIEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkU3RydWN0dXJlSURPZmZzZXQoKSkpOwotCi0gICAgICAg
ICAgICAgICAgLy8gRklYTUU6IE1heWJlIHdlIHNob3VsZCBoYXZlIGEgYmV0dGVyIHdheSB0byBy
ZXByZXNlbnQgSW5kZXhlZCtOYW1lZD8KLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC52YXJB
cmdDaGlsZChub2RlLCAxKS5ub2RlKCkgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKS5u
b2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIGJhZFN0cnVjdHVyZVNsb3dQYXRoID0gYmFkU3Ry
dWN0dXJlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbm90RmFz
dE5hbWVkQ2FzZXMuYXBwZW5kKGJhZFN0cnVjdHVyZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBD
b21wdXRlIHRoZSBvZmZzZXQKLSAgICAgICAgICAgICAgICAvLyBJZiBpbmRleCBpcyBsZXNzIHRo
YW4gdGhlIGVudW1lcmF0b3IncyBjYWNoZWQgaW5saW5lIHN0b3JhZ2UsIHRoZW4gaXQncyBhbiBp
bmxpbmUgYWNjZXNzCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZM
aW5lQWNjZXNzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwK
LSAgICAgICAgICAgICAgICAgICAgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGVu
dW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y2FjaGVkSW5saW5lQ2FwYWNp
dHlPZmZzZXQoKSkpOwotCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoYmFzZUNlbGxHUFIsIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpKSwgcmVzdWx0UmVn
cyk7Ci0KLSAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0K
LSAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UgaXQncyBvdXQgb2YgbGluZQotICAgICAgICAg
ICAgICAgIG91dE9mTGluZUFjY2Vzcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgbV9q
aXQubW92ZShpbmRleEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3Vi
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZW51bWVyYXRvckdQUiwgSlNQcm9wZXJ0eU5hbWVF
bnVtZXJhdG9yOjpjYWNoZWRJbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQubmVnMzIoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICAgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIoc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFoYXZlU3RvcmFnZSkKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlQ2VsbEdQUiwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSwgc3RvcmFnZUdQUik7Ci0gICAgICAgICAgICAgICAgY29uc3RleHByIGlu
dHB0cl90IG9mZnNldE9mRmlyc3RQcm9wZXJ0eSA9IG9mZnNldEluQnV0dGVyZmx5KGZpcnN0T3V0
T2ZMaW5lT2Zmc2V0KSAqIHN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdo
dCwgb2Zmc2V0T2ZGaXJzdFByb3BlcnR5KSwgcmVzdWx0UmVncyk7Ci0gICAgICAgICAgICAgICAg
ZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBub3RGYXN0TmFtZWRDYXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIocmVzdWx0UmVncywgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgfSkpOwot
Ci0gICAgICAgIC8vIFdlIHJlbHkgb24gY29tcGlsZUdldEJ5VmFsIHRvIGNhbGwganNWYWx1ZVJl
c3VsdCBmb3IgdXMuCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGtpbmRhIGhhY2t5Li4uCi0g
ICAgICAgIEFTU0VSVChnZW5lcmF0aW9uSW5mbyhub2RlKS5qc1ZhbHVlUmVncygpID09IHJlc3Vs
dFJlZ3MgJiYgZ2VuZXJhdGlvbkluZm8obm9kZSkucmVnaXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9y
bWF0SlMpOwotCi0gICAgICAgIGlmIChiYWRTdHJ1Y3R1cmVTbG93UGF0aC5pc1NldCgpKQotICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJhZFN0cnVjdHVyZVNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VDZWxsR1BSLCBpbmRl
eEdQUiwgZW51bWVyYXRvckdQUikpOwotCi0gICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7
Ci0gICAgfTsKLQotICAgIGlmIChpc0NlbGwoYmFzZUVkZ2UudXNlS2luZCgpKSkgewotICAgICAg
ICAvLyBVc2UgbWFudWFsIG9wZXJhbmQgc3BlY3VsYXRpb24gc2luY2UgRml4dXAgbWF5IGhhdmUg
cGlja2VkIGEgVXNlS2luZCBtb3JlIHJlc3RyaWN0aXZlIHRoYW4gQ2VsbFVzZS4KLSAgICAgICAg
c3BlY3VsYXRlKG5vZGUsIGJhc2VFZGdlKTsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7Ci0g
ICAgICAgIGdlbmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBiYXNlRWRnZSk7Ci0gICAgICAgIGdl
bmVyYXRlKGJhc2VPcGVyYW5kLmdwcigpKTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1l
IFNsb3dQYXRoRnVuY3Rpb25UeXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1l
cmF0b3JIYXNQcm9wZXJ0eShOb2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHlwZSBzbG93UGF0
aEZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNTU1OWUxMDU1OTVkLi41MWZlMmY0YmJlMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDQ4MCw2ICs0NDgwLDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCks
IG5vZGUpOwogfQogCisvLyBGSVhNRTogd2UgYXJlIGFsd2F5cyB0YWtpbmcgdGhlIHNsb3cgcGF0
aCBoZXJlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGUgZXF1aXZhbGVudCB0byB0aGUgNjRi
aXQgdmVyc2lvbiBpZiB3ZSBhZGQgbW9yZSBhdmFpbGFibGUgKGNhbGxlZS1zYXZlIHJlZ2lzdGVy
cykgdG8gQVJNdjcgYW5kL29yIGlmIHdlIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsIHVzZXMuIFNlZSBidWcgIzIzMDE4OS4KK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKK3sKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlT3BlcmFuZCh0aGlzLCBtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQg
aW5kZXgodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgU3BlY3VsYXRl
U3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCA0
KSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZW51bWVyYXRvcih0aGlzLCBtX2dyYXBoLnZh
ckFyZ0NoaWxkKG5vZGUsIDUpKTsKKyAgICBHUFJSZWcgYmFzZU9wZXJhbmRHUFIgPSBiYXNlT3Bl
cmFuZC5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyBwcm9wZXJ0eVJlZ3MgPSBwcm9wZXJ0eS5qc1Zh
bHVlUmVncygpOworICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4LmdwcigpOworICAgIEdQUlJl
ZyBtb2RlR1BSID0gbW9kZS5ncHIoKTsKKyAgICBHUFJSZWcgZW51bWVyYXRvckdQUiA9IGVudW1l
cmF0b3IuZ3ByKCk7CisKKyAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0
b3JHZXRCeVZhbEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlT3BlcmFuZEdQUiwgcHJvcGVydHlSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVy
YXRvckdQUik7CisgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOworfQogI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDE4OWY2NTRhNGNiYy4uMjU2OWIyOTlhMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTYzNTIsNiArNjM1
MiwxMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURhdGVHZXQoTm9kZSogbm9kZSkK
ICAgICB9CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlW
YWwoTm9kZSogbm9kZSkKK3sKKyAgICBFZGdlIGJhc2VFZGdlID0gbV9ncmFwaC52YXJBcmdDaGls
ZChub2RlLCAwKTsKKyAgICBhdXRvIGdlbmVyYXRlID0gWyZdIChHUFJSZWcgYmFzZUNlbGxHUFIp
IHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGRvbmVDYXNlczsKKyAgICAgICAg
SlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0OworICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzOworICAgICAgICBHUFJSZWcgaW5kZXhHUFI7CisgICAgICAgIEdQUlJlZyBlbnVtZXJhdG9y
R1BSOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmVTbG93UGF0aDsK
KworICAgICAgICBjb21waWxlR2V0QnlWYWwobm9kZSwgc2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8
SlNWYWx1ZVJlZ3MsIERhdGFGb3JtYXQ+KERhdGFGb3JtYXQpPihbJl0gKERhdGFGb3JtYXQpIHsK
KyAgICAgICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDIpOworICAgICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZTsKKyAgICAgICAgICAgIGlm
IChzdG9yYWdlRWRnZSkKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmVtcGxhY2UodGhpcywgc3Rv
cmFnZUVkZ2UpOworICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGluZGV4
KHRoaXMsIG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgU3BlY3Vs
YXRlU3RyaWN0SW50MzJPcGVyYW5kIG1vZGUodGhpcywgbV9ncmFwaC52YXJBcmdDaGlsZChub2Rl
LCA0KSk7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBlbnVtZXJhdG9yKHRoaXMs
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgNSkpOworCisgICAgICAgICAgICBHUFJSZWcgbW9k
ZUdQUiA9IG1vZGUuZ3ByKCk7CisgICAgICAgICAgICBpbmRleEdQUiA9IGluZGV4LmdwcigpOwor
ICAgICAgICAgICAgZW51bWVyYXRvckdQUiA9IGVudW1lcmF0b3IuZ3ByKCk7CisKKyAgICAgICAg
ICAgIHJlc3VsdCA9IEpTVmFsdWVSZWdzVGVtcG9yYXJ5KHRoaXMpOworICAgICAgICAgICAgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9
IHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpOworCisgICAgICAgICAgICBib29sIGhhdmVTdG9yYWdl
ID0gISFzdG9yYWdlRWRnZTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlVGVtcG9y
YXJ5OworICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFI7CisgICAgICAgICAgICBpZiAoIWhh
dmVTdG9yYWdlKSB7CisgICAgICAgICAgICAgICAgc3RvcmFnZVRlbXBvcmFyeSA9IEdQUlRlbXBv
cmFyeSh0aGlzLCBSZXVzZSwgZW51bWVyYXRvcik7CisgICAgICAgICAgICAgICAgc3RvcmFnZUdQ
UiA9IHN0b3JhZ2VUZW1wb3JhcnkuZ3ByKCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IG5vdEZhc3ROYW1lZENhc2VzOworCisgICAgICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGdlbmVyYXRlIHRoaXMgY29kZSBpZiB3ZSBrbm93IGJhc2UgaXMg
bm90IGFuIG9iamVjdC4KKyAgICAgICAgICAgIG5vdEZhc3ROYW1lZENhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIG1vZGVHUFIsIFRydXN0ZWRJ
bW0zMihKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4ZWRNb2RlIHwgSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpHZW5lcmljTW9kZSkpKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShiYXNlRWRnZSkuaXNUeXBlKFNwZWNDZWxsKSkKKyAg
ICAgICAgICAgICAgICAgICAgbm90RmFzdE5hbWVkQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlQ2VsbEdQUikpOworCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHN0
cnVjdHVyZQorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBrbm93IHRoZXJlJ3Mgb25s
eSBvbmUgc3RydWN0dXJlIGZvciBiYXNlIHdlIGNhbiBqdXN0IGVtYmVkIGl0IGhlcmUuCisgICAg
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VDZWxs
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKworICAgICAg
ICAgICAgICAgIGF1dG8gYmFkU3RydWN0dXJlID0gbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAg
c2NyYXRjaEdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdG9yR1BSLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNhY2hlZFN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGQgaGF2ZSBhIGJldHRlciB3YXkgdG8gcmVwcmVzZW50
IEluZGV4ZWQrTmFtZWQ/CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQo
bm9kZSwgMSkubm9kZSgpID09IG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMykubm9kZSgpKQor
ICAgICAgICAgICAgICAgICAgICBiYWRTdHJ1Y3R1cmVTbG93UGF0aCA9IGJhZFN0cnVjdHVyZTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5vdEZhc3ROYW1lZENh
c2VzLmFwcGVuZChiYWRTdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0
aGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgLy8gSWYgaW5kZXggaXMgbGVzcyB0aGFuIHRoZSBl
bnVtZXJhdG9yJ3MgY2FjaGVkIGlubGluZSBzdG9yYWdlLCB0aGVuIGl0J3MgYW4gaW5saW5lIGFj
Y2VzcworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mTGluZUFjY2Vz
cyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAg
ICAgICAgICAgICAgIGluZGV4R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhlbnVtZXJhdG9y
R1BSLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElubGluZUNhcGFjaXR5T2Zmc2V0
KCkpKTsKKworICAgICAgICAgICAgICAgIG1faml0LmxvYWRWYWx1ZShNYWNyb0Fzc2VtYmxlcjo6
QmFzZUluZGV4KGJhc2VDZWxsR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSksIHJlc3VsdFJlZ3MpOworCisg
ICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworCisgICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIGl0J3Mgb3V0IG9mIGxpbmUKKyAgICAgICAgICAgICAgICBv
dXRPZkxpbmVBY2Nlc3MubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
aW5kZXhHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGVudW1lcmF0b3JHUFIsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRv
cjo6Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgICAgIG1faml0Lm5lZzMyKHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIG1faml0LnNp
Z25FeHRlbmQzMlRvUHRyKHNjcmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IGlmICghaGF2ZVN0b3JhZ2UpCisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUNlbGxHUFIsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHN0b3JhZ2VHUFIpOworICAgICAgICAgICAgICAgIGNvbnN0ZXhwciBpbnRwdHJfdCBv
ZmZzZXRPZkZpcnN0UHJvcGVydHkgPSBvZmZzZXRJbkJ1dHRlcmZseShmaXJzdE91dE9mTGluZU9m
ZnNldCkgKiBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZFZhbHVlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNl
dE9mRmlyc3RQcm9wZXJ0eSksIHJlc3VsdFJlZ3MpOworICAgICAgICAgICAgICAgIGRvbmVDYXNl
cy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90
RmFzdE5hbWVkQ2FzZXMubGluaygmbV9qaXQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHJlc3VsdFJlZ3MsIERhdGFGb3JtYXRKUyk7CisgICAgICAgIH0pKTsKKworICAgICAg
ICAvLyBXZSByZWx5IG9uIGNvbXBpbGVHZXRCeVZhbCB0byBjYWxsIGpzVmFsdWVSZXN1bHQgZm9y
IHVzLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBraW5kYSBoYWNreS4uLgorICAgICAgICBB
U1NFUlQoZ2VuZXJhdGlvbkluZm8obm9kZSkuanNWYWx1ZVJlZ3MoKSA9PSByZXN1bHRSZWdzICYm
IGdlbmVyYXRpb25JbmZvKG5vZGUpLnJlZ2lzdGVyRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTKTsK
KworICAgICAgICBpZiAoYmFkU3RydWN0dXJlU2xvd1BhdGguaXNTZXQoKSkKKyAgICAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChiYWRTdHJ1Y3R1cmVTbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlQ2VsbEdQUiwgaW5kZXhHUFIsIGVu
dW1lcmF0b3JHUFIpKTsKKworICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAgIH07
CisKKyAgICBpZiAoaXNDZWxsKGJhc2VFZGdlLnVzZUtpbmQoKSkpIHsKKyAgICAgICAgLy8gVXNl
IG1hbnVhbCBvcGVyYW5kIHNwZWN1bGF0aW9uIHNpbmNlIEZpeHVwIG1heSBoYXZlIHBpY2tlZCBh
IFVzZUtpbmQgbW9yZSByZXN0cmljdGl2ZSB0aGFuIENlbGxVc2UuCisgICAgICAgIHNwZWN1bGF0
ZShub2RlLCBiYXNlRWRnZSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2VPcGVy
YW5kKHRoaXMsIGJhc2VFZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICBn
ZW5lcmF0ZShiYXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYmFzZU9wZXJhbmQodGhpcywgYmFzZUVkZ2UpOworICAgICAgICBnZW5lcmF0ZShi
YXNlT3BlcmFuZC5ncHIoKSk7CisgICAgfQorfQorCiAjZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggMjFhMDA0MWZiY2Q2Li4xZTNiYTFhM2FjYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTAx
MCw0MiArMTAxMCwxNCBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2Vu
dW1lcmF0b3JfZ2V0X2J5X3ZhbCkKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BFbnVtZXJhdG9yR2V0QnlWYWw+KCk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBH
RVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHByb3BlcnR5TmFt
ZSA9IEdFVChieXRlY29kZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBhdXRvIG1vZGUgPSBz
dGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkZsYWc+KEdFVChieXRlY29kZS5t
X21vZGUpLmpzVmFsdWUoKS5hc1VJbnQzMigpKTsKICAgICBtZXRhZGF0YS5tX2VudW1lcmF0b3JN
ZXRhZGF0YSB8PSBzdGF0aWNfY2FzdDx1aW50OF90Pihtb2RlKTsKLQogICAgIEpTUHJvcGVydHlO
YW1lRW51bWVyYXRvciogZW51bWVyYXRvciA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IqPihHRVQoYnl0ZWNvZGUubV9lbnVtZXJhdG9yKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVk
IGluZGV4ID0gR0VUKGJ5dGVjb2RlLm1faW5kZXgpLmpzVmFsdWUoKS5hc0ludDMyKCk7Ci0gICAg
c3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkluZGV4
ZWRNb2RlOiB7Ci0gICAgICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpKSkKLSAgICAg
ICAgICAgIG1ldGFkYXRhLm1fYXJyYXlQcm9maWxlLm9ic2VydmVTdHJ1Y3R1cmVJRChiYXNlVmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBSRVRVUk5fUFJPRklMRUQoYmFz
ZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmRleCkpKTsK
LSAgICB9Ci0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1v
ZGU6IHsKLSAgICAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpICYmIGJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKSA9PSBlbnVtZXJhdG9yLT5jYWNoZWRTdHJ1Y3R1cmVJ
RCgpKSB7Ci0gICAgICAgICAgICAvLyBXZSdsbCBvbmx5IG1hdGNoIHRoZSBzdHJ1Y3R1cmUgSUQg
aWYgdGhlIGJhc2UgaXMgYW4gb2JqZWN0LgotICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgZW51
bWVyYXRvci0+ZW5kU3RydWN0dXJlUHJvcGVydHlJbmRleCgpKTsKLSAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1l
cmF0b3ItPmNhY2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRv
ci0+Y2FjaGVkSW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbWV0YWRhdGEubV9lbnVtZXJhdG9yTWV0YWRhdGEgfD0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpIYXNTZWVuT3du
U3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsKLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0g
ICAgfQotCi0gICAgY2FzZSBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OkdlbmVyaWNNb2RlOiB7
Ci0gICAgICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2Fy
cmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmVJRCgpKTsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKEdFVChieXRlY29k
ZS5tX3Byb3BlcnR5TmFtZSkuanNWYWx1ZSgpKTsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBzdHJpbmctPnRvSWRlbnRpZmllcihnbG9iYWxPYmplY3QpOwotICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKLSAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUpKTsKLSAgICB9CiAKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9OwotICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKENvbW1vblNs
b3dQYXRoczo6b3BFbnVtZXJhdG9yR2V0QnlWYWwoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUsIHBy
b3BlcnR5TmFtZSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3IsICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZSwgJm1ldGFkYXRhLm1fZW51bWVyYXRvck1ldGFkYXRhKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51bWVyYXRvcl9pbl9ieV92YWwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDBkM2Q3
MjkwNTMwYS4uNjNiNDU0ZjhjZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2xvd1BhdGhG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC05MSw2ICs5Miw2MCBA
QCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbgogICAgIHJldHVybiBwYWRkaW5nOwogfQogCitpbmxp
bmUgSlNWYWx1ZSBvcEVudW1lcmF0b3JHZXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBwcm9wZXJ0eU5hbWVWYWx1ZSwgdW5zaWdu
ZWQgaW5kZXgsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6RmxhZyBtb2RlLCBKU1Byb3BlcnR5
TmFtZUVudW1lcmF0b3IqIGVudW1lcmF0b3IsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0g
bnVsbHB0ciwgdWludDhfdCogZW51bWVyYXRvck1ldGFkYXRhID0gbnVsbHB0cikKK3sKKyAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yOjpJbmRleGVkTW9kZTogeworICAgICAgICBpZiAoYXJyYXlQcm9maWxl
ICYmIExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKQorICAgICAgICAgICAgYXJyYXlQcm9maWxl
LT5vYnNlcnZlU3RydWN0dXJlSUQoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpKTsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9i
amVjdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZGV4KSkpOworICAgIH0KKyAgICBjYXNlIEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvcjo6T3duU3RydWN0dXJlTW9kZTogeworICAgICAgICBpZiAo
TElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSkgJiYgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmVJRCgpID09IGVudW1lcmF0b3ItPmNhY2hlZFN0cnVjdHVyZUlEKCkpIHsKKyAgICAgICAgICAg
IC8vIFdlJ2xsIG9ubHkgbWF0Y2ggdGhlIHN0cnVjdHVyZSBJRCBpZiB0aGUgYmFzZSBpcyBhbiBv
YmplY3QuCisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBlbnVtZXJhdG9yLT5lbmRTdHJ1Y3R1
cmVQcm9wZXJ0eUluZGV4KCkpOworICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBiYXNlVmFsdWUuZ2V0T2JqZWN0KCktPmdldERpcmVjdChpbmRleCA8IGVudW1lcmF0b3ItPmNh
Y2hlZElubGluZUNhcGFjaXR5KCkgPyBpbmRleCA6IGluZGV4IC0gZW51bWVyYXRvci0+Y2FjaGVk
SW5saW5lQ2FwYWNpdHkoKSArIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAoZW51bWVyYXRvck1ldGFkYXRhKQorICAgICAgICAgICAgICAg
ICplbnVtZXJhdG9yTWV0YWRhdGEgfD0gc3RhdGljX2Nhc3Q8dWludDhfdD4oSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yOjpIYXNTZWVuT3duU3RydWN0dXJlTW9kZVN0cnVjdHVyZU1pc21hdGNoKTsK
KyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisKKyAgICBjYXNlIEpTUHJv
cGVydHlOYW1lRW51bWVyYXRvcjo6R2VuZXJpY01vZGU6IHsKKyAgICAgICAgaWYgKGFycmF5UHJv
ZmlsZSAmJiBiYXNlVmFsdWUuaXNDZWxsKCkgJiYgbW9kZSAhPSBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6Ok93blN0cnVjdHVyZU1vZGUpCisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2Vy
dmVTdHJ1Y3R1cmVJRChiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZUlEKCkpOworI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCisgICAgICAgIGlmICghcHJvcGVydHlOYW1lVmFsdWUuaXNDZWxsKCkp
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgYnJhbmNoIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2Ugd2Ug
dXNlIHRoaXMgbWV0aG9kCisgICAgICAgICAgICAvLyBib3RoIGFzIGEgc2xvd19wYXRoIGFuZCBh
cyBhIERGRyBjYWxsIG9wLiBXZSdsbCBlbmQgdXAKKyAgICAgICAgICAgIC8vIGhlcmUgaWYgcHJv
cGVydHlOYW1lIGlzIG5vdCBhIGNlbGwgdGhlbiB3ZSBhcmUgaW4KKyAgICAgICAgICAgIC8vIGlu
ZGV4K25hbWVkIG1vZGUsIHNvIGRvIHdoYXQgUmVjb3Zlck5hbWVBbmRHZXRWYWwKKyAgICAgICAg
ICAgIC8vIGRvZXMuIFRoaXMgY2FuIHByb2JhYmx5IGJlIHJlbW92ZWQgaWYgd2UgcmUtZW5hYmxl
IHRoZQorICAgICAgICAgICAgLy8gb3B0aW1pemF0aW9ucyBmb3IgZW51bWVyYXRvckdldEJ5VmFs
IGluIERGRywgc2VlIGJ1ZworICAgICAgICAgICAgLy8gIzIzMDE4OS4KKyAgICAgICAgICAgIEpT
U3RyaW5nKiBzdHJpbmcgPSBlbnVtZXJhdG9yLT5wcm9wZXJ0eU5hbWVBdEluZGV4KGluZGV4KTsK
KyAgICAgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGJhc2VWYWx1ZS5nZXQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIEpT
U3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhwcm9wZXJ0eU5hbWVWYWx1ZSk7CisgICAgICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gc3RyaW5nLT50b0lkZW50aWZpZXIoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KSk7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCiBpbmxpbmUgYm9vbCBvcEluQnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKLS0gCjIuMzEuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>